23de918e94
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1102 lines
41 KiB
YAML
1102 lines
41 KiB
YAML
# SPEC: PJ2026-01060505 Workbench Performance; PJ2026-0106 平台运维
|
|
manifestVersion: v1
|
|
environment: dev
|
|
namespace: hwlab-dev
|
|
endpoint: http://74.48.78.17:16667
|
|
health:
|
|
method: GET
|
|
path: /health/live
|
|
responseFormat: json
|
|
publicEndpoints:
|
|
frontend:
|
|
url: http://74.48.78.17:16666
|
|
protocol: http
|
|
host: 74.48.78.17
|
|
port: 16666
|
|
serviceId: hwlab-cloud-web
|
|
frpProxy: hwlab-dev-cloud-web
|
|
api:
|
|
url: http://74.48.78.17:16667
|
|
protocol: http
|
|
host: 74.48.78.17
|
|
port: 16667
|
|
serviceId: hwlab-edge-proxy
|
|
frpProxy: hwlab-dev-edge-proxy
|
|
frp:
|
|
server:
|
|
address: 74.48.78.17
|
|
bindPort: 7000
|
|
proxies:
|
|
- name: hwlab-dev-cloud-web
|
|
endpointId: frontend
|
|
type: tcp
|
|
localServiceId: hwlab-cloud-web
|
|
localHost: hwlab-cloud-web.hwlab-dev.svc.cluster.local
|
|
localPort: 8080
|
|
remotePort: 16666
|
|
- name: hwlab-dev-edge-proxy
|
|
endpointId: api
|
|
type: tcp
|
|
localServiceId: hwlab-edge-proxy
|
|
localHost: hwlab-edge-proxy.hwlab-dev.svc.cluster.local
|
|
localPort: 6667
|
|
remotePort: 16667
|
|
k3s:
|
|
serviceMappings:
|
|
- serviceId: hwlab-cloud-api
|
|
name: hwlab-cloud-api
|
|
namespace: hwlab-dev
|
|
port: 6667
|
|
targetPort: http
|
|
- serviceId: hwlab-cloud-web
|
|
name: hwlab-cloud-web
|
|
namespace: hwlab-dev
|
|
port: 8080
|
|
targetPort: http
|
|
- serviceId: hwlab-gateway
|
|
name: hwlab-gateway
|
|
namespace: hwlab-dev
|
|
port: 7001
|
|
targetPort: http
|
|
- serviceId: hwlab-agent-skills
|
|
name: hwlab-agent-skills
|
|
namespace: hwlab-dev
|
|
port: 7430
|
|
targetPort: http
|
|
- serviceId: hwlab-edge-proxy
|
|
name: hwlab-edge-proxy
|
|
namespace: hwlab-dev
|
|
port: 6667
|
|
targetPort: http
|
|
profiles:
|
|
dev:
|
|
name: dev
|
|
enabled: true
|
|
namespace: hwlab-dev
|
|
endpoint: http://74.48.78.17:16667
|
|
notes: DEV-only k3s deployment skeleton. D601 reaches the master edge through frp reverse tunnel.
|
|
prod:
|
|
name: prod
|
|
enabled: false
|
|
namespace: hwlab-prod
|
|
notes: Reserved placeholder only. PROD deployment and acceptance are explicitly out of scope.
|
|
nodes:
|
|
G14:
|
|
gitopsRoot: deploy/gitops/node
|
|
sourceRepo: git@github.com:pikasTech/HWLAB.git
|
|
publicHost: 74.48.78.17
|
|
lanes:
|
|
v02:
|
|
name: v0.2
|
|
node: G14
|
|
sourceBranch: v0.2
|
|
gitopsBranch: v0.2-gitops
|
|
gitMirror:
|
|
namespace: devops-infra
|
|
serviceReadName: git-mirror-http
|
|
serviceWriteName: git-mirror-write
|
|
cachePvcName: hwlab-git-mirror-cache
|
|
cachePvcStorage: 20Gi
|
|
cacheHostPath: /var/lib/rancher/k3s/storage/hwlab-d601-v02-git-mirror-cache
|
|
servicePort: 8080
|
|
syncConfigMapName: git-mirror-sync-script
|
|
egressProxy:
|
|
mode: node-global
|
|
required: true
|
|
namespace: platform-infra
|
|
serviceName: sub2api-egress-proxy
|
|
port: 10808
|
|
clientName: d601-global-proxy
|
|
noProxy:
|
|
- localhost
|
|
- 127.0.0.1
|
|
- ::1
|
|
- 127.0.0.1:5000
|
|
- localhost:5000
|
|
- .svc
|
|
- .svc.cluster.local
|
|
- .cluster.local
|
|
- kubernetes
|
|
- kubernetes.default
|
|
- kubernetes.default.svc
|
|
- 10.0.0.0/8
|
|
- 10.42.0.0/16
|
|
- 10.43.0.0/16
|
|
- 172.16.0.0/12
|
|
- 192.168.0.0/16
|
|
- 82.156.23.220
|
|
- 74.48.78.17
|
|
- hyueapi.com
|
|
- .hyueapi.com
|
|
namespace: hwlab-v02
|
|
endpoint: https://hwlab.74-48-78-17.nip.io
|
|
publicEndpoints:
|
|
frontend: https://hwlab.74-48-78-17.nip.io
|
|
api: https://hwlab.74-48-78-17.nip.io
|
|
legacyFrontend: http://74.48.78.17:19666
|
|
legacyApi: http://74.48.78.17:19667
|
|
artifactCatalog: deploy/artifact-catalog.v02.json
|
|
runtimePath: runtime-v02
|
|
imageTagMode: full
|
|
envReuseServices:
|
|
- hwlab-cloud-api
|
|
- hwlab-cloud-web
|
|
- hwlab-gateway
|
|
- hwlab-edge-proxy
|
|
- hwlab-agent-skills
|
|
bootScripts:
|
|
hwlab-cloud-api: deploy/runtime/boot/hwlab-cloud-api.sh
|
|
hwlab-cloud-web: deploy/runtime/boot/hwlab-cloud-web.sh
|
|
hwlab-gateway: deploy/runtime/boot/hwlab-gateway.sh
|
|
hwlab-edge-proxy: deploy/runtime/boot/hwlab-edge-proxy.sh
|
|
hwlab-agent-skills: deploy/runtime/boot/hwlab-agent-skills.sh
|
|
serviceDeclarations:
|
|
hwlab-cloud-api:
|
|
runtimeKind: bun-command
|
|
entrypoint: cmd/hwlab-cloud-api/main.ts
|
|
artifactKind: bun-command
|
|
healthPath: /health/live
|
|
healthPort: 6667
|
|
componentPaths:
|
|
- cmd/hwlab-cloud-api/
|
|
- cmd/hwlab-codex-api-responses-forwarder/
|
|
- cmd/hwlab-deepseek-responses-bridge/
|
|
- deploy/runtime/boot/hwlab-codex-api-responses-forwarder.sh
|
|
- deploy/runtime/boot/hwlab-deepseek-responses-bridge.sh
|
|
- internal/cloud/
|
|
- internal/db/
|
|
- internal/audit/
|
|
- internal/agent/agentrun-dispatch.mjs
|
|
- internal/agent/prompts/
|
|
- skills/hwlab-agent-runtime/
|
|
env: {}
|
|
observable: true
|
|
hwlab-cloud-web:
|
|
runtimeKind: cloud-web
|
|
entrypoint: web/hwlab-cloud-web/index.html
|
|
artifactKind: cloud-web
|
|
healthPath: /health/live
|
|
healthPort: 8080
|
|
componentPaths:
|
|
- web/hwlab-cloud-web/
|
|
- internal/dev-entrypoint/cloud-web-runtime.mjs
|
|
- internal/dev-entrypoint/cloud-web-proxy.mjs
|
|
- internal/dev-entrypoint/cloud-web-routes.mjs
|
|
- internal/dev-entrypoint/opencode-provider-proxy.mjs
|
|
- deploy/runtime/boot/opencode-provider-proxy.sh
|
|
- tools/src/hwlab-cli/trace-renderer.ts
|
|
env:
|
|
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces
|
|
OTEL_SERVICE_NAME: hwlab-cloud-web
|
|
observable: true
|
|
hwlab-gateway:
|
|
runtimeKind: bun-command
|
|
entrypoint: cmd/hwlab-gateway/main.ts
|
|
artifactKind: bun-command
|
|
healthPath: /health/live
|
|
healthPort: 7001
|
|
componentPaths:
|
|
- cmd/hwlab-gateway/
|
|
- internal/sim/
|
|
env: {}
|
|
observable: false
|
|
hwlab-edge-proxy:
|
|
runtimeKind: node-command
|
|
entrypoint: cmd/hwlab-edge-proxy/main.mjs
|
|
artifactKind: node-command
|
|
healthPath: /health
|
|
healthPort: 6667
|
|
componentPaths:
|
|
- cmd/hwlab-edge-proxy/
|
|
- internal/dev-entrypoint/http.mjs
|
|
env: {}
|
|
observable: true
|
|
hwlab-agent-skills:
|
|
runtimeKind: skills-bundle
|
|
entrypoint: skills/hwlab-agent-runtime/SKILL.md
|
|
artifactKind: skills-bundle
|
|
healthPath: /health/live
|
|
healthPort: 7430
|
|
componentPaths:
|
|
- skills/
|
|
env: {}
|
|
observable: true
|
|
envRecipe:
|
|
osPackages:
|
|
- ca-certificates
|
|
- git
|
|
bunVersion: 1.3.13
|
|
downloadStack:
|
|
httpProxy: http://127.0.0.1:10808
|
|
httpsProxy: http://127.0.0.1:10808
|
|
noProxy:
|
|
- 127.0.0.1
|
|
- localhost
|
|
- ::1
|
|
- hyueapi.com
|
|
- .hyueapi.com
|
|
npmRegistry: https://registry.npmjs.org/
|
|
npmFetchTimeoutMs: 300000
|
|
bunPackages:
|
|
x64: '@oven/bun-linux-x64'
|
|
arm64: '@oven/bun-linux-aarch64'
|
|
launcherPath: deploy/runtime/launcher/hwlab-env-reuse-launcher.ts
|
|
runtimeNodeModulesPath: /opt/hwlab-env/node_modules
|
|
additionalEnvPaths:
|
|
- internal/dev-entrypoint/artifact-runtime.mjs
|
|
hwpodAliases:
|
|
- command: hwpod
|
|
script: tools/hwpod-cli.ts
|
|
- command: hwpod-ctl
|
|
script: tools/hwpod-ctl.ts
|
|
- command: hwpod-compiler
|
|
script: tools/hwpod-compiler-cli.ts
|
|
bootConfig:
|
|
template: default
|
|
overrides: {}
|
|
services:
|
|
- serviceId: hwlab-cloud-api
|
|
env:
|
|
HWLAB_CLOUD_DB_URL: secretRef:hwlab-cloud-api-v02-db/database-url
|
|
HWLAB_CLOUD_DB_CONTRACT: v02-redacted-presence-only
|
|
HWLAB_ACCESS_CONTROL_REQUIRED: "1"
|
|
HWLAB_BOOTSTRAP_ADMIN_ID: usr_v02_admin
|
|
HWLAB_BOOTSTRAP_ADMIN_USERNAME: admin
|
|
HWLAB_BOOTSTRAP_ADMIN_DISPLAY_NAME: HWLAB v0.2 Admin
|
|
HWLAB_BOOTSTRAP_ADMIN_PASSWORD_HASH: secretRef:hwlab-v02-bootstrap-admin/password-hash
|
|
HWLAB_BOOTSTRAP_ADMIN_API_KEY_ID: key_master_server_admin
|
|
HWLAB_BOOTSTRAP_ADMIN_API_KEY: secretRef:hwlab-v02-master-server-admin-api-key/api-key
|
|
HWLAB_KEYCLOAK_ISSUER: https://auth.74-48-78-17.nip.io/realms/hwlab
|
|
HWLAB_KEYCLOAK_CLIENT_ID: hwlab-cloud-web
|
|
HWLAB_KEYCLOAK_CLIENT_SECRET: secretRef:hwlab-cloud-web-client/client-secret
|
|
HWLAB_CODE_AGENT_ADAPTER: agentrun-v01
|
|
AGENTRUN_MGR_URL: http://agentrun-mgr.agentrun-v01.svc.cluster.local:8080
|
|
AGENTRUN_API_KEY: secretRef:hwlab-v02-master-server-admin-api-key/api-key
|
|
HWLAB_CODE_AGENT_AGENTRUN_RUNNER_NAMESPACE: agentrun-v01
|
|
HWLAB_CODE_AGENT_AGENTRUN_SECRET_NAMESPACE: agentrun-v01
|
|
HWLAB_CODE_AGENT_AGENTRUN_REPO_URL: http://git-mirror-http.devops-infra.svc.cluster.local/pikasTech/HWLAB.git
|
|
v03:
|
|
name: v0.3
|
|
node: G14
|
|
sourceBranch: v0.3
|
|
gitopsBranch: v0.3-gitops
|
|
gitMirror:
|
|
namespace: devops-infra
|
|
serviceReadName: git-mirror-http
|
|
serviceWriteName: git-mirror-write
|
|
cachePvcName: hwlab-git-mirror-cache
|
|
cachePvcStorage: 20Gi
|
|
cacheHostPath: /var/lib/rancher/k3s/storage/hwlab-d601-v03-git-mirror-cache
|
|
servicePort: 8080
|
|
syncConfigMapName: git-mirror-sync-script
|
|
egressProxy:
|
|
mode: node-global
|
|
required: true
|
|
namespace: platform-infra
|
|
serviceName: sub2api-egress-proxy
|
|
port: 10808
|
|
clientName: d601-global-proxy
|
|
noProxy:
|
|
- localhost
|
|
- 127.0.0.1
|
|
- ::1
|
|
- 127.0.0.1:5000
|
|
- localhost:5000
|
|
- .svc
|
|
- .svc.cluster.local
|
|
- .cluster.local
|
|
- kubernetes
|
|
- kubernetes.default
|
|
- kubernetes.default.svc
|
|
- 10.0.0.0/8
|
|
- 10.42.0.0/16
|
|
- 10.43.0.0/16
|
|
- 172.16.0.0/12
|
|
- 192.168.0.0/16
|
|
- 82.156.23.220
|
|
- 74.48.78.17
|
|
- hyueapi.com
|
|
- .hyueapi.com
|
|
namespace: hwlab-v03
|
|
endpoint: https://hwlab.pikapython.com
|
|
publicEndpoints:
|
|
frontend: https://hwlab.pikapython.com
|
|
api: https://hwlab.pikapython.com
|
|
legacyFrontend: http://82.156.23.220:22090
|
|
legacyApi: http://82.156.23.220:22088
|
|
publicServices:
|
|
nodes:
|
|
NC01:
|
|
- name: hwlab-cloud-web-public
|
|
selector:
|
|
app.kubernetes.io/name: hwlab-cloud-web
|
|
port: 80
|
|
targetPort: 8080
|
|
nodePort: 32009
|
|
frp:
|
|
server:
|
|
address: 82.156.23.220
|
|
bindPort: 22000
|
|
auth:
|
|
secretName: hwlab-v03-frpc-secrets
|
|
secretKey: token
|
|
proxies:
|
|
- name: hwlab-jd01-v03-cloud-web
|
|
endpointId: frontend
|
|
type: tcp
|
|
localServiceId: hwlab-cloud-web
|
|
localHost: hwlab-cloud-web.hwlab-v03.svc.cluster.local
|
|
localPort: 8080
|
|
remotePort: 22090
|
|
- name: hwlab-jd01-v03-edge-proxy
|
|
endpointId: api
|
|
type: tcp
|
|
localServiceId: hwlab-edge-proxy
|
|
localHost: hwlab-edge-proxy.hwlab-v03.svc.cluster.local
|
|
localPort: 6667
|
|
remotePort: 22088
|
|
nodes:
|
|
NC01:
|
|
proxies:
|
|
- name: hwlab-nc01-v03-cloud-web
|
|
endpointId: frontend
|
|
type: tcp
|
|
localServiceId: hwlab-cloud-web
|
|
localHost: hwlab-cloud-web.hwlab-v03.svc.cluster.local
|
|
localPort: 8080
|
|
remotePort: 22082
|
|
- name: hwlab-nc01-v03-edge-proxy
|
|
endpointId: api
|
|
type: tcp
|
|
localServiceId: hwlab-edge-proxy
|
|
localHost: hwlab-edge-proxy.hwlab-v03.svc.cluster.local
|
|
localPort: 6667
|
|
remotePort: 22083
|
|
artifactCatalog: deploy/artifact-catalog.v03.json
|
|
runtimePath: runtime-v03
|
|
imageTagMode: full
|
|
accessControl:
|
|
usersRef: config/hwlab-access-control/users.d601-v03.yaml#spec.users
|
|
navProfilesRef: config/hwlab-access-control/nav-profiles.yaml#spec.profiles
|
|
secretPlaneRef: config/hwlab-v03/secrets.yaml#secretPlane
|
|
workbench:
|
|
traceTimeline:
|
|
autoExpandRunning: true
|
|
autoCollapseTerminal: false
|
|
rawHwlabEventWindow:
|
|
enabled: true
|
|
maxEntries: 200
|
|
maxRetainedBytes: 1048576
|
|
agentObserver:
|
|
retentionEventLimit: 10000
|
|
retentionScanLimit: 1000000
|
|
retentionTimeoutMs: 30000
|
|
retentionGroupPrefix: hwlab-v03-agent-observer-replay
|
|
sseHeartbeatMs: 15000
|
|
reconnectDelayMs: 1500
|
|
batchMaxEvents: 100
|
|
liveBufferLimit: 2000
|
|
identityWindowLimit: 12000
|
|
reducerEventLimit: 2000
|
|
reducerEntityLimit: 500
|
|
treeNodeLimit: 500
|
|
inspectorEventTailLimit: 100
|
|
virtualListWindowLimit: 160
|
|
changeHighlightMs: 1200
|
|
staleAfterMs: 30000
|
|
reducedMotion: respect-system
|
|
observability:
|
|
traceExplorerUrlTemplate: /v1/workbench/traces/{trace_id}/events
|
|
prometheusOperatorResources: false
|
|
opencode:
|
|
image: 127.0.0.1:5000/hwlab/opencode:1.17.7-git
|
|
providerProfile: gpt.pika
|
|
providerId: gpt.pika
|
|
displayName: AgentRun gpt.pika
|
|
model: gpt-5.4-mini
|
|
smallModel: gpt-5.4-mini
|
|
baseURL: https://api.pikapython.com/
|
|
npm: '@ai-sdk/openai-compatible'
|
|
apiKeyEnv: OPENCODE_GPT_PIKA_API_KEY
|
|
apiKeySecretRef: hwlab-code-agent-provider/opencode-api-key
|
|
contextLimit: 1000000
|
|
outputLimit: 384000
|
|
agentrunSecretNamespace: agentrun-v02
|
|
agentrunSecretName: agentrun-v01-provider-gpt-pika
|
|
agentrunSecretKeys:
|
|
- auth.json
|
|
- config.toml
|
|
- model-catalog.json
|
|
externalPostgres:
|
|
enabled: true
|
|
serviceName: jd01-pk01-platform-postgres
|
|
endpointAddress: 82.156.23.220
|
|
port: 5432
|
|
nodes:
|
|
NC01:
|
|
serviceName: nc01-host-postgres
|
|
endpointAddress: 10.42.0.1
|
|
port: 5432
|
|
runtimeStore:
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
sslMode: require
|
|
poolMax: 4
|
|
connectionTimeoutMs: 5000
|
|
queryTimeoutMs: 3000
|
|
queryRetryMaxAttempts: 5
|
|
queryRetryInitialDelayMs: 250
|
|
queryRetryMaxDelayMs: 5000
|
|
workbenchRuntime:
|
|
client:
|
|
timeoutMs: 3000
|
|
sessionsSummary:
|
|
maxAttempts: 1
|
|
attemptTimeoutMs: 10000
|
|
backoffMs: 0
|
|
factsQuery:
|
|
maxAttempts: 1
|
|
backoffBaseMs: 0
|
|
backoffMaxMs: 1
|
|
postgres:
|
|
poolMax: 16
|
|
queryTimeoutMs: 10000
|
|
readyTimeoutMs: 10000
|
|
cache:
|
|
redis:
|
|
enabled: true
|
|
namespace: hwlab-v03
|
|
serviceName: hwlab-workbench-redis
|
|
port: 6379
|
|
image: 127.0.0.1:5000/hwlab/redis:8.2.3-alpine
|
|
resources:
|
|
requests:
|
|
cpu: 50m
|
|
memory: 64Mi
|
|
limits:
|
|
cpu: 250m
|
|
memory: 256Mi
|
|
memoryPolicy:
|
|
persistence: disabled
|
|
maxMemory: 192mb
|
|
eviction: allkeys-lru
|
|
ttl:
|
|
sessionsSummaryMs: 30000
|
|
terminalTurnMs: 300000
|
|
terminalTracePageMs: 300000
|
|
runningPageMs: 5000
|
|
limits:
|
|
maxKeyBytes: 512
|
|
maxPayloadBytes: 262144
|
|
timeouts:
|
|
connectMs: 200
|
|
operationMs: 100
|
|
metrics:
|
|
labels:
|
|
lane: v03
|
|
service: hwlab-workbench-runtime
|
|
cacheKeyClass: workbench-derived-read
|
|
disableSwitchEnv: HWLAB_WORKBENCH_CACHE_REDIS_ENABLED
|
|
unavailableBehavior:
|
|
livenessFailure: false
|
|
readMode: db-or-degraded
|
|
fallbackStateSource: false
|
|
envReuseServices:
|
|
- hwlab-cloud-api
|
|
- hwlab-workbench-runtime
|
|
- hwlab-user-billing
|
|
- hwlab-project-management
|
|
- hwlab-tasktree-api
|
|
- hwlab-tasktree-worker
|
|
- hwlab-cloud-web
|
|
- hwlab-gateway
|
|
- hwlab-edge-proxy
|
|
- hwlab-agent-skills
|
|
bootScripts:
|
|
hwlab-cloud-api: deploy/runtime/boot/hwlab-cloud-api.sh
|
|
hwlab-workbench-runtime: deploy/runtime/boot/hwlab-workbench-runtime.sh
|
|
hwlab-user-billing: deploy/runtime/boot/hwlab-user-billing.sh
|
|
hwlab-project-management: deploy/runtime/boot/hwlab-project-management.sh
|
|
hwlab-tasktree-api: deploy/runtime/boot/hwlab-tasktree-api.sh
|
|
hwlab-tasktree-worker: deploy/runtime/boot/hwlab-tasktree-worker.sh
|
|
hwlab-cloud-web: deploy/runtime/boot/hwlab-cloud-web.sh
|
|
hwlab-gateway: deploy/runtime/boot/hwlab-gateway.sh
|
|
hwlab-edge-proxy: deploy/runtime/boot/hwlab-edge-proxy.sh
|
|
hwlab-agent-skills: deploy/runtime/boot/hwlab-agent-skills.sh
|
|
serviceDeclarations:
|
|
hwlab-cloud-api:
|
|
runtimeKind: bun-command
|
|
entrypoint: cmd/hwlab-cloud-api/main.ts
|
|
artifactKind: bun-command
|
|
healthPath: /health/live
|
|
healthPort: 6667
|
|
healthProbe:
|
|
readiness:
|
|
timeoutSeconds: 3
|
|
failureThreshold: 5
|
|
liveness:
|
|
periodSeconds: 20
|
|
timeoutSeconds: 5
|
|
failureThreshold: 6
|
|
startup:
|
|
timeoutSeconds: 3
|
|
componentPaths:
|
|
- cmd/hwlab-cloud-api/
|
|
- cmd/hwlab-codex-api-responses-forwarder/
|
|
- cmd/hwlab-deepseek-responses-bridge/
|
|
- deploy/runtime/boot/hwlab-codex-api-responses-forwarder.sh
|
|
- deploy/runtime/boot/hwlab-deepseek-responses-bridge.sh
|
|
- internal/cloud/
|
|
- internal/db/
|
|
- internal/audit/
|
|
- internal/agent/agentrun-dispatch.mjs
|
|
- internal/agent/prompts/
|
|
- skills/hwlab-agent-runtime/
|
|
env:
|
|
TZ: Asia/Shanghai
|
|
HWLAB_METRICS_NAMESPACE: hwlab-v03
|
|
HWLAB_OBSERVABILITY_CONFIG_REVISION: PJ2026-01060505-20260619-long-trace-timeout-mitigation
|
|
HWLAB_CODE_AGENT_AGENTRUN_DISPATCH_RETRY_MAX: "5"
|
|
HWLAB_CODE_AGENT_AGENTRUN_DISPATCH_RETRY_BASE_MS: "1000"
|
|
HWLAB_CODE_AGENT_AGENTRUN_DISPATCH_RETRY_MAX_DELAY_MS: "30000"
|
|
observable: true
|
|
hwlab-workbench-runtime:
|
|
runtimeKind: go-service
|
|
entrypoint: cmd/hwlab-workbench-runtime/main.go
|
|
artifactKind: go-service
|
|
healthPath: /health/ready
|
|
healthPort: 6671
|
|
healthProbe:
|
|
readiness:
|
|
timeoutSeconds: 10
|
|
failureThreshold: 5
|
|
liveness:
|
|
timeoutSeconds: 5
|
|
failureThreshold: 6
|
|
startup:
|
|
timeoutSeconds: 10
|
|
failureThreshold: 30
|
|
componentPaths:
|
|
- go.mod
|
|
- go.sum
|
|
- cmd/hwlab-workbench-runtime/
|
|
- internal/workbenchruntime/
|
|
- deploy/runtime/boot/hwlab-workbench-runtime.sh
|
|
env:
|
|
TZ: Asia/Shanghai
|
|
observable: true
|
|
hwlab-user-billing:
|
|
runtimeKind: go-service
|
|
entrypoint: cmd/hwlab-user-billing/main.go
|
|
artifactKind: go-service
|
|
healthPath: /health/ready
|
|
healthPort: 6670
|
|
healthProbe:
|
|
readiness:
|
|
timeoutSeconds: 10
|
|
failureThreshold: 5
|
|
liveness:
|
|
timeoutSeconds: 5
|
|
failureThreshold: 6
|
|
startup:
|
|
timeoutSeconds: 10
|
|
failureThreshold: 30
|
|
componentPaths:
|
|
- go.mod
|
|
- go.sum
|
|
- cmd/hwlab-user-billing/
|
|
- internal/userbilling/
|
|
- deploy/runtime/boot/hwlab-user-billing.sh
|
|
env:
|
|
TZ: Asia/Shanghai
|
|
observable: true
|
|
hwlab-project-management:
|
|
runtimeKind: bun-command
|
|
entrypoint: cmd/hwlab-project-management/main.ts
|
|
artifactKind: bun-command
|
|
healthPath: /health/ready
|
|
healthPort: 6672
|
|
healthProbe:
|
|
readiness:
|
|
timeoutSeconds: 10
|
|
failureThreshold: 5
|
|
liveness:
|
|
timeoutSeconds: 5
|
|
failureThreshold: 6
|
|
startup:
|
|
timeoutSeconds: 10
|
|
failureThreshold: 30
|
|
componentPaths:
|
|
- cmd/hwlab-project-management/
|
|
- internal/project-management/
|
|
- internal/db/runtime-store.ts
|
|
- deploy/runtime/boot/hwlab-project-management.sh
|
|
env:
|
|
TZ: Asia/Shanghai
|
|
observable: true
|
|
hwlab-tasktree-api:
|
|
runtimeKind: bun-command
|
|
entrypoint: cmd/hwlab-tasktree-api/main.ts
|
|
artifactKind: bun-command
|
|
healthPath: /health/ready
|
|
healthPort: 6673
|
|
componentPaths:
|
|
- cmd/hwlab-tasktree-api/
|
|
- internal/tasktree/
|
|
- tools/src/tasktree-cli.ts
|
|
- package.json
|
|
- package-lock.json
|
|
- deploy/runtime/boot/hwlab-tasktree-api.sh
|
|
env:
|
|
TZ: Asia/Shanghai
|
|
observable: true
|
|
hwlab-tasktree-worker:
|
|
runtimeKind: bun-command
|
|
entrypoint: cmd/hwlab-tasktree-worker/main.ts
|
|
artifactKind: bun-command
|
|
healthPath: /health/ready
|
|
healthPort: 6674
|
|
componentPaths:
|
|
- cmd/hwlab-tasktree-worker/
|
|
- internal/tasktree/
|
|
- package.json
|
|
- package-lock.json
|
|
- deploy/runtime/boot/hwlab-tasktree-worker.sh
|
|
env:
|
|
TZ: Asia/Shanghai
|
|
observable: true
|
|
hwlab-cloud-web:
|
|
runtimeKind: cloud-web
|
|
entrypoint: web/hwlab-cloud-web/index.html
|
|
artifactKind: cloud-web
|
|
healthPath: /health/live
|
|
healthPort: 8080
|
|
componentPaths:
|
|
- web/hwlab-cloud-web/
|
|
- internal/dev-entrypoint/cloud-web-runtime.mjs
|
|
- internal/dev-entrypoint/cloud-web-proxy.mjs
|
|
- internal/dev-entrypoint/cloud-web-routes.mjs
|
|
- internal/dev-entrypoint/opencode-provider-proxy.mjs
|
|
- deploy/runtime/boot/opencode-provider-proxy.sh
|
|
- tools/src/hwlab-cli/trace-renderer.ts
|
|
env:
|
|
HWLAB_CLOUD_WEB_DISPLAY_TIME_ZONE: Asia/Shanghai
|
|
HWLAB_CLOUD_WEB_DISPLAY_TIME_LOCALE: zh-CN
|
|
HWLAB_CLOUD_WEB_DISPLAY_TIME_LABEL: 北京时间
|
|
HWLAB_WORKBENCH_LIVE_KAFKA_SSE_ENABLED: "true"
|
|
HWLAB_WORKBENCH_KAFKA_REFRESH_REPLAY_ENABLED: "true"
|
|
HWLAB_WORKBENCH_PROJECTION_REALTIME_ENABLED: "false"
|
|
HWLAB_WORKBENCH_KAFKA_DEBUG_REPLAY_ENABLED: "true"
|
|
HWLAB_CLOUD_WEB_OPENCODE_UPSTREAM_URL: http://opencode-server.hwlab-v03.svc.cluster.local:4096
|
|
HWLAB_CLOUD_WEB_OPENCODE_USERNAME: secretRef:hwlab-opencode-server-auth/username
|
|
HWLAB_CLOUD_WEB_OPENCODE_PASSWORD: secretRef:hwlab-opencode-server-auth/password
|
|
HWLAB_CLOUD_WEB_OPENCODE_DEFAULT_PROJECT: /workspace
|
|
HWLAB_CLOUD_WEB_OPENCODE_EVENT_DIRECTORY_FROM: /workspace
|
|
HWLAB_CLOUD_WEB_OPENCODE_EVENT_DIRECTORY_TO: /
|
|
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces
|
|
OTEL_SERVICE_NAME: hwlab-cloud-web
|
|
observable: true
|
|
hwlab-gateway:
|
|
runtimeKind: bun-command
|
|
entrypoint: cmd/hwlab-gateway/main.ts
|
|
artifactKind: bun-command
|
|
healthPath: /health/live
|
|
healthPort: 7001
|
|
componentPaths:
|
|
- cmd/hwlab-gateway/
|
|
- internal/sim/
|
|
env:
|
|
TZ: Asia/Shanghai
|
|
observable: false
|
|
hwlab-edge-proxy:
|
|
runtimeKind: node-command
|
|
entrypoint: cmd/hwlab-edge-proxy/main.mjs
|
|
artifactKind: node-command
|
|
healthPath: /health
|
|
healthPort: 6667
|
|
healthProbe:
|
|
readiness:
|
|
timeoutSeconds: 3
|
|
failureThreshold: 5
|
|
liveness:
|
|
periodSeconds: 20
|
|
timeoutSeconds: 5
|
|
failureThreshold: 6
|
|
startup:
|
|
timeoutSeconds: 3
|
|
componentPaths:
|
|
- cmd/hwlab-edge-proxy/
|
|
- internal/dev-entrypoint/http.mjs
|
|
env:
|
|
TZ: Asia/Shanghai
|
|
observable: true
|
|
hwlab-agent-skills:
|
|
runtimeKind: skills-bundle
|
|
entrypoint: skills/hwlab-agent-runtime/SKILL.md
|
|
artifactKind: skills-bundle
|
|
healthPath: /health/live
|
|
healthPort: 7430
|
|
componentPaths:
|
|
- skills/
|
|
env:
|
|
TZ: Asia/Shanghai
|
|
observable: true
|
|
envRecipe:
|
|
osPackages:
|
|
- ca-certificates
|
|
- git
|
|
- tzdata
|
|
goOsPackages:
|
|
- golang-go
|
|
goBaseImage: 127.0.0.1:5000/hwlab/hwlab-go-env-base:go1-bookworm-slim
|
|
bunVersion: 1.3.13
|
|
downloadStack:
|
|
httpProxy: http://127.0.0.1:10808
|
|
httpsProxy: http://127.0.0.1:10808
|
|
noProxy:
|
|
- 127.0.0.1
|
|
- localhost
|
|
- ::1
|
|
- hyueapi.com
|
|
- .hyueapi.com
|
|
npmRegistry: https://registry.npmjs.org/
|
|
npmFetchTimeoutMs: 300000
|
|
goProxy: https://goproxy.cn,direct
|
|
bunPackages:
|
|
x64: '@oven/bun-linux-x64'
|
|
arm64: '@oven/bun-linux-aarch64'
|
|
launcherPath: deploy/runtime/launcher/hwlab-env-reuse-launcher.ts
|
|
runtimeNodeModulesPath: /opt/hwlab-env/node_modules
|
|
runtimeGoModCachePath: /opt/hwlab-env/go/pkg/mod
|
|
runtimeGoBuildCachePath: /opt/hwlab-env/go/cache
|
|
goToolchain: local
|
|
additionalEnvPaths:
|
|
- internal/dev-entrypoint/artifact-runtime.mjs
|
|
hwpodAliases:
|
|
- command: hwpod
|
|
script: tools/hwpod-cli.ts
|
|
- command: hwpod-ctl
|
|
script: tools/hwpod-ctl.ts
|
|
- command: hwpod-compiler
|
|
script: tools/hwpod-compiler-cli.ts
|
|
bootConfig:
|
|
template: default
|
|
overrides: {}
|
|
configMaps:
|
|
- name: hwlab-v03-hwpod-preinstalled-specs
|
|
labels:
|
|
hwlab.pikastech.local/config-kind: hwpod-preinstalled-specs
|
|
annotations:
|
|
hwlab.pikastech.local/source-ref: config/hwlab-hwpod-preinstalls/constart-71freq-c.yaml#hwpodPreinstall
|
|
hwlab.pikastech.local/verification-issue: pikasTech/HWLAB#2183
|
|
data:
|
|
constart-71freq-c.yaml: |-
|
|
apiVersion: hwlab.dev/v0alpha1
|
|
kind: Hwpod
|
|
metadata:
|
|
uid: CONSTART-71FREQ-C
|
|
name: constart-71freq-c
|
|
spec:
|
|
targetDevice:
|
|
board: ConStart 71-FREQ Controller
|
|
mcu: STM32H723ZGTx
|
|
flashBase: "0x08000000"
|
|
workspace:
|
|
path: "F:\\Work\\ConStart"
|
|
toolchain: keil-mdk
|
|
projectRoot: projects/71-00075-11
|
|
keilProject: projects/71-00075-11/FirmWare/MDK-ARM/FREQ_Controller_FW.uvprojx
|
|
keilTarget: FREQ_Controller_FW
|
|
hexPath: projects/71-00075-11/FirmWare/MDK-ARM/FREQ_Controller_FW/FREQ_Controller_FW.hex
|
|
mapPath: projects/71-00075-11/FirmWare/MDK-ARM/FREQ_Controller_FW/FREQ_Controller_FW.map
|
|
keilCliPath: "C:\\Users\\liang\\.agents\\skills\\keil\\keil-cli.py"
|
|
debugProbe:
|
|
type: cmsis-dap
|
|
adapter: keil
|
|
probeUid: 3FD750C63E342E24
|
|
probeName: MicroLink CMSIS-DAP
|
|
programBackend: keil-headless
|
|
autoBindUvoptx: true
|
|
ioProbe:
|
|
uart:
|
|
id: uart/1
|
|
port: COM4
|
|
baudrate: 921600
|
|
nodeBinding:
|
|
nodeId: node-d601-f103-v2
|
|
nodeType: pc-host
|
|
constart-71freq-c.meta.json: |-
|
|
{
|
|
"contractVersion": "hwpod-spec-registry-v1",
|
|
"source": {
|
|
"kind": "preinstalled-yaml-first-spec",
|
|
"workspaceRoot": "F:\\Work\\ConStart",
|
|
"projectRoot": "projects/71-00075-11",
|
|
"verificationIssue": "pikasTech/HWLAB#2183",
|
|
"verifiedAt": "2026-06-26"
|
|
}
|
|
}
|
|
- name: hwlab-v03-project-management-bootstrap
|
|
labels:
|
|
hwlab.pikastech.local/config-kind: project-management-bootstrap-sources
|
|
annotations:
|
|
hwlab.pikastech.local/source-ref: config/hwlab-project-management/constart-71freq-mdtodo.yaml#projectManagement.sources[0],config/hwlab-project-management/constar-workspace-mdtodo.yaml#projectManagement.sources[0]
|
|
hwlab.pikastech.local/verification-issue: pikasTech/HWLAB#2183
|
|
data:
|
|
sources.json: |-
|
|
[
|
|
{
|
|
"sourceId": "constart-71freq-mdtodo",
|
|
"sourceKind": "hwpod-workspace",
|
|
"displayName": "71-FREQ MDTODO",
|
|
"projectId": "project_constart_71freq",
|
|
"hwpodId": "constart-71freq-c",
|
|
"nodeId": "node-d601-f103-v2",
|
|
"workspaceRootRef": "F:\\Work\\ConStart",
|
|
"mdtodoRootRef": "docs/MDTODO",
|
|
"maxFiles": 300,
|
|
"capabilities": ["probe", "list", "read", "write", "reindex"]
|
|
},
|
|
{
|
|
"sourceId": "constar-workspace-mdtodo",
|
|
"sourceKind": "hwpod-workspace",
|
|
"displayName": "控之星工作区 MDTODO",
|
|
"projectId": "project_constar_workspace",
|
|
"hwpodId": "constar-workspace",
|
|
"nodeId": "node-g14-wsl-constar",
|
|
"workspaceRootRef": "D:\\Work\\CONSTAR_workspace",
|
|
"mdtodoRootRef": "docs/MDTODO",
|
|
"maxFiles": 300,
|
|
"capabilities": ["probe", "list", "read", "reindex", "launchWorkbench"]
|
|
}
|
|
]
|
|
services:
|
|
- serviceId: hwlab-cloud-api
|
|
replicas: 1
|
|
shutdownDrain:
|
|
enabled: true
|
|
path: /v1/internal/workbench/drain
|
|
sleepSeconds: 3
|
|
timeoutMs: 2500
|
|
env:
|
|
HWLAB_CLOUD_DB_URL: secretRef:hwlab-cloud-api-v03-db/database-url
|
|
HWLAB_CLOUD_DB_CONTRACT: v03-redacted-presence-only
|
|
HWLAB_ACCESS_CONTROL_REQUIRED: "1"
|
|
HWLAB_SESSION_COOKIE_SAMESITE: None
|
|
HWLAB_BOOTSTRAP_ADMIN_ID: usr_v03_admin
|
|
HWLAB_BOOTSTRAP_ADMIN_USERNAME: admin
|
|
HWLAB_BOOTSTRAP_ADMIN_DISPLAY_NAME: HWLAB v0.3 Admin
|
|
HWLAB_BOOTSTRAP_ADMIN_PASSWORD_HASH: secretRef:hwlab-v03-bootstrap-admin/password-hash
|
|
HWLAB_BOOTSTRAP_ADMIN_API_KEY_ID: key_master_server_admin
|
|
HWLAB_BOOTSTRAP_ADMIN_API_KEY: secretRef:hwlab-v03-master-server-admin-api-key/api-key
|
|
HWLAB_USER_BILLING_URL: http://hwlab-user-billing.hwlab-v03.svc.cluster.local:6670
|
|
HWLAB_WORKBENCH_RUNTIME_URL: http://hwlab-workbench-runtime.hwlab-v03.svc.cluster.local:6671
|
|
HWLAB_PROJECT_MANAGEMENT_URL: http://hwlab-project-management.hwlab-v03.svc.cluster.local:6672
|
|
HWLAB_TASKTREE_URL: http://hwlab-tasktree-api.hwlab-v03.svc.cluster.local:6673
|
|
HWLAB_HWPOD_SPEC_REGISTRY_DIRS: /etc/hwlab/hwpod-specs
|
|
HWLAB_HWPOD_NODE_WS_TOKEN: secretRef:hwlab-v03-hwpod-node-auth/token
|
|
HWLAB_USER_BILLING_LOGIN_RETRY_ATTEMPTS: "2"
|
|
HWLAB_USER_BILLING_LOGIN_RETRY_DELAY_MS: "250"
|
|
HWLAB_USER_BILLING_CODE_AGENT_ENABLED: "1"
|
|
HWLAB_USER_BILLING_CODE_AGENT_ESTIMATED_CREDITS: "1"
|
|
HWLAB_USER_BILLING_CODE_AGENT_USED_CREDITS: "1"
|
|
HWLAB_KEYCLOAK_ISSUER: https://auth.74-48-78-17.nip.io/realms/hwlab
|
|
HWLAB_KEYCLOAK_CLIENT_ID: hwlab-cloud-web
|
|
HWLAB_KEYCLOAK_CLIENT_SECRET: secretRef:hwlab-cloud-web-client/client-secret
|
|
HWLAB_CODE_AGENT_ADAPTER: agentrun-v02
|
|
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces
|
|
OTEL_SERVICE_NAME: hwlab-cloud-api
|
|
AGENTRUN_MGR_URL: http://agentrun-mgr.agentrun-release.svc.cluster.local:8080
|
|
AGENTRUN_API_KEY: secretRef:hwlab-v03-master-server-admin-api-key/api-key
|
|
HWLAB_CODE_AGENT_AGENTRUN_RUNNER_NAMESPACE: agentrun-release
|
|
HWLAB_CODE_AGENT_AGENTRUN_SECRET_NAMESPACE: agentrun-release
|
|
HWLAB_CODE_AGENT_AGENTRUN_REPO_URL: http://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB.git
|
|
HWLAB_KAFKA_ENABLED: "true"
|
|
HWLAB_KAFKA_AGENTRUN_EVENT_CONSUME_ENABLED: "true"
|
|
HWLAB_KAFKA_DIRECT_PUBLISH_ENABLED: "true"
|
|
HWLAB_WORKBENCH_LIVE_KAFKA_SSE_ENABLED: "true"
|
|
HWLAB_WORKBENCH_KAFKA_REFRESH_REPLAY_ENABLED: "true"
|
|
HWLAB_KAFKA_TRANSACTIONAL_PROJECTOR_ENABLED: "false"
|
|
HWLAB_KAFKA_PROJECTION_OUTBOX_RELAY_ENABLED: "false"
|
|
HWLAB_WORKBENCH_PROJECTION_REALTIME_ENABLED: "false"
|
|
HWLAB_WORKBENCH_KAFKA_DEBUG_REPLAY_ENABLED: "true"
|
|
HWLAB_KAFKA_BOOTSTRAP_SERVERS: platform-infra-kafka-kafka-bootstrap.platform-infra.svc.cluster.local:9092
|
|
HWLAB_KAFKA_STDIO_TOPIC: codex-stdio.raw.v1
|
|
HWLAB_KAFKA_AGENTRUN_EVENT_TOPIC: agentrun.event.v1
|
|
HWLAB_KAFKA_EVENT_TOPIC: hwlab.event.v1
|
|
HWLAB_KAFKA_CLIENT_ID: hwlab-v03-cloud-api
|
|
HWLAB_KAFKA_AGENTRUN_EVENT_GROUP_ID: hwlab-v03-agentrun-event-direct-publish
|
|
HWLAB_KAFKA_PROJECTOR_GROUP_ID: hwlab-v03-agentrun-event-projector
|
|
HWLAB_KAFKA_HWLAB_EVENT_GROUP_ID: hwlab-v03-workbench-live-sse
|
|
HWLAB_KAFKA_HWLAB_DEBUG_EVENT_TOPIC: hwlab.event.debug.v1
|
|
HWLAB_KAFKA_HWLAB_DEBUG_GROUP_PREFIX: hwlab-v03-workbench-isolated-debug
|
|
HWLAB_WORKBENCH_KAFKA_DEBUG_REPLAY_LIMIT: "200"
|
|
HWLAB_WORKBENCH_KAFKA_DEBUG_REPLAY_TIMEOUT_MS: "15000"
|
|
HWLAB_KAFKA_PROJECTOR_HEARTBEAT_INTERVAL_MS: "2000"
|
|
HWLAB_KAFKA_OUTBOX_RELAY_INTERVAL_MS: "250"
|
|
HWLAB_KAFKA_OUTBOX_RELAY_BATCH_SIZE: "100"
|
|
HWLAB_KAFKA_OUTBOX_RELAY_LEASE_MS: "30000"
|
|
HWLAB_KAFKA_OUTBOX_RELAY_SEND_TIMEOUT_MS: "10000"
|
|
HWLAB_KAFKA_OUTBOX_RELAY_RETRY_BACKOFF_MS: "1000"
|
|
HWLAB_WORKBENCH_OUTBOX_TAIL_BATCH_SIZE: "100"
|
|
HWLAB_WORKBENCH_EMPTY_SESSION_GC_ENABLED: "1"
|
|
HWLAB_WORKBENCH_EMPTY_SESSION_TTL_MS: "600000"
|
|
HWLAB_WORKBENCH_EMPTY_SESSION_GC_INTERVAL_MS: "60000"
|
|
HWLAB_WORKBENCH_EMPTY_SESSION_GC_INITIAL_DELAY_MS: "5000"
|
|
HWLAB_WORKBENCH_EMPTY_SESSION_GC_BATCH_SIZE: "100"
|
|
HWLAB_WORKBENCH_EMPTY_SESSION_GC_JITTER_MS: "15000"
|
|
HWLAB_WORKBENCH_EMPTY_SESSION_GC_FAILURE_BACKOFF_MS: "120000"
|
|
HWLAB_SECRET_PLANE_SMOKE: secretRef:hwlab-secret-plane-smoke/password
|
|
configMapMounts:
|
|
- name: hwpod-preinstalled-specs
|
|
configMapName: hwlab-v03-hwpod-preinstalled-specs
|
|
mountPath: /etc/hwlab/hwpod-specs
|
|
readOnly: true
|
|
- serviceId: hwlab-workbench-runtime
|
|
env:
|
|
HWLAB_WORKBENCH_RUNTIME_DB_URL: secretRef:hwlab-cloud-api-v03-db/database-url
|
|
HWLAB_WORKBENCH_RUNTIME_PORT: "6671"
|
|
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces
|
|
OTEL_SERVICE_NAME: hwlab-workbench-runtime
|
|
- serviceId: hwlab-user-billing
|
|
env:
|
|
HWLAB_USER_BILLING_DB_URL: secretRef:hwlab-cloud-api-v03-db/database-url
|
|
HWLAB_USER_BILLING_DB_POOL_MAX: "2"
|
|
HWLAB_USER_BILLING_MIGRATION_TIMEOUT_SECONDS: "180"
|
|
HWLAB_USER_BILLING_BOOTSTRAP_TIMEOUT_SECONDS: "60"
|
|
HWLAB_BOOTSTRAP_ADMIN_ID: usr_v03_admin
|
|
HWLAB_BOOTSTRAP_ADMIN_USERNAME: admin
|
|
HWLAB_BOOTSTRAP_ADMIN_DISPLAY_NAME: HWLAB v0.3 Admin
|
|
HWLAB_BOOTSTRAP_ADMIN_PASSWORD_HASH: secretRef:hwlab-v03-bootstrap-admin/password-hash
|
|
HWLAB_USER_BILLING_STATE_AUTHORITY: pk01-postgres
|
|
HWLAB_USER_BILLING_EXTERNAL_DB_LABEL: pk01-external-postgres
|
|
HWLAB_USER_BILLING_PORT: "6670"
|
|
HWLAB_USER_BILLING_REGISTRATION_ENABLED: "1"
|
|
HWLAB_USER_BILLING_INITIAL_CREDITS: "0"
|
|
HWLAB_USER_BILLING_CREDIT_PER_1K_TOKENS: "1"
|
|
HWLAB_USER_BILLING_MIGRATE_ON_START: "1"
|
|
HWLAB_USER_BILLING_REDIS_URL: redis://hwlab-user-billing-redis.hwlab-v03.svc.cluster.local:6379/0
|
|
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces
|
|
OTEL_SERVICE_NAME: hwlab-user-billing
|
|
- serviceId: hwlab-project-management
|
|
replicas: 1
|
|
env:
|
|
HWLAB_PROJECT_MANAGEMENT_DB_URL: secretRef:hwlab-cloud-api-v03-db/database-url
|
|
HWLAB_PROJECT_MANAGEMENT_DB_CONNECT_TIMEOUT_MS: "5000"
|
|
HWLAB_PROJECT_MANAGEMENT_PORT: "6672"
|
|
HWLAB_PROJECT_MANAGEMENT_SOURCE_ROOT: /workspace/hwlab-boot/repo
|
|
HWLAB_PROJECT_MANAGEMENT_SOURCE_ID: hwlab-v03-mdtodo
|
|
HWLAB_PROJECT_MANAGEMENT_SOURCE_NAME: HWLAB v0.3 MDTODO
|
|
HWLAB_PROJECT_MANAGEMENT_PROJECT_ID: project_hwlab_v03
|
|
HWLAB_PROJECT_MANAGEMENT_MDTODO_TASK_DEFAULT_LIMIT: "200"
|
|
HWLAB_PROJECT_MANAGEMENT_MDTODO_TASK_MAX_LIMIT: "500"
|
|
HWLAB_PROJECT_MANAGEMENT_HWPOD_NODE_OPS_URL: http://hwlab-cloud-api.hwlab-v03.svc.cluster.local:6667/v1/hwpod-node-ops
|
|
HWLAB_PROJECT_MANAGEMENT_HWPOD_NODE_OPS_API_KEY: secretRef:hwlab-v03-master-server-admin-api-key/api-key
|
|
HWLAB_PROJECT_MANAGEMENT_BOOTSTRAP_SOURCES_PATH: /etc/hwlab/project-management/sources.json
|
|
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces
|
|
OTEL_SERVICE_NAME: hwlab-project-management
|
|
configMapMounts:
|
|
- name: project-management-bootstrap
|
|
configMapName: hwlab-v03-project-management-bootstrap
|
|
mountPath: /etc/hwlab/project-management
|
|
readOnly: true
|
|
- serviceId: hwlab-tasktree-api
|
|
replicas: 1
|
|
env:
|
|
TASKTREE_DATABASE_URL: secretRef:hwlab-tasktree-db/database-url
|
|
TASKTREE_TEMPORAL_ADDRESS: temporal-frontend.temporal.svc.cluster.local:7233
|
|
TASKTREE_TEMPORAL_NAMESPACE: unidesk
|
|
TASKTREE_TEMPORAL_TASK_QUEUE: hwlab-v03-tasktree
|
|
TASKTREE_API_PORT: "6673"
|
|
OTEL_SERVICE_NAME: hwlab-tasktree-api
|
|
- serviceId: hwlab-tasktree-worker
|
|
replicas: 1
|
|
env:
|
|
TASKTREE_DATABASE_URL: secretRef:hwlab-tasktree-db/database-url
|
|
TASKTREE_TEMPORAL_ADDRESS: temporal-frontend.temporal.svc.cluster.local:7233
|
|
TASKTREE_TEMPORAL_NAMESPACE: unidesk
|
|
TASKTREE_TEMPORAL_TASK_QUEUE: hwlab-v03-tasktree
|
|
TASKTREE_WORKER_HEALTH_PORT: "6674"
|
|
OTEL_SERVICE_NAME: hwlab-tasktree-worker
|
|
services:
|
|
- serviceId: hwlab-tasktree-api
|
|
namespace: hwlab-dev
|
|
healthPath: /health/live
|
|
- serviceId: hwlab-tasktree-worker
|
|
namespace: hwlab-dev
|
|
healthPath: /health/live
|
|
- serviceId: hwlab-cloud-api
|
|
namespace: hwlab-dev
|
|
healthPath: /health/live
|
|
profile: dev
|
|
replicas: 1
|
|
env:
|
|
HWLAB_ENVIRONMENT: dev
|
|
HWLAB_PUBLIC_ENDPOINT: http://74.48.78.17:16667
|
|
HWLAB_CLOUD_API_PORT: "6667"
|
|
HWLAB_RUNTIME_SUBSTITUTE_FORBIDDEN: unidesk-backend,provider-gateway,microservice-proxy
|
|
HWLAB_CLOUD_DB_URL: secretRef:hwlab-cloud-api-dev-db/database-url
|
|
HWLAB_CLOUD_DB_SSL_MODE: disable
|
|
HWLAB_CLOUD_DB_CONTRACT: dev-redacted-presence-only
|
|
HWLAB_CLOUD_RUNTIME_ADAPTER: postgres
|
|
HWLAB_CLOUD_RUNTIME_DURABLE: "true"
|
|
HWLAB_M3_IO_CONTROL_ENABLED: "false"
|
|
HWLAB_CODE_AGENT_PROVIDER: codex-stdio
|
|
HWLAB_CODE_AGENT_MODEL: gpt-5.5
|
|
HWLAB_CODE_AGENT_TIMEOUT_MS: "1200000"
|
|
HWLAB_CODE_AGENT_OPENAI_BASE_URL: http://127.0.0.1:49280/responses
|
|
HWLAB_CODE_AGENT_CODEX_STDIO_ENABLED: "1"
|
|
HWLAB_CODE_AGENT_CODEX_STDIO_SUPERVISOR: repo-owned
|
|
HWLAB_CODE_AGENT_WORKSPACE: /workspace/hwlab
|
|
HWLAB_CODE_AGENT_CODEX_WORKSPACE: /workspace/hwlab
|
|
HWLAB_CODE_AGENT_CODEX_SANDBOX: danger-full-access
|
|
HWLAB_CODE_AGENT_CODEX_COMMAND: /app/node_modules/.bin/codex
|
|
CODEX_HOME: /codex-home
|
|
NO_PROXY: hyueapi.com,.hyueapi.com,hyui.com,.hyui.com,127.0.0.1,localhost,::1,api.minimaxi.com,.minimaxi.com
|
|
no_proxy: hyueapi.com,.hyueapi.com,hyui.com,.hyui.com,127.0.0.1,localhost,::1,api.minimaxi.com,.minimaxi.com
|
|
OPENAI_API_KEY: secretRef:hwlab-code-agent-provider/openai-api-key
|
|
HWLAB_CODE_AGENT_SKILLS_DIRS: /app/skills:/data/user-skills
|
|
HWLAB_PREINSTALLED_SKILLS_DIR: /app/skills
|
|
HWLAB_USER_SKILLS_DIR: /data/user-skills
|
|
HWLAB_CODE_AGENT_DEFAULT_PROVIDER_PROFILE: deepseek
|
|
HWLAB_CODE_AGENT_DEEPSEEK_MODEL: deepseek-chat
|
|
HWLAB_CODE_AGENT_DEEPSEEK_BASE_URL: http://hwlab-deepseek-proxy.hwlab-dev.svc.cluster.local:4000/v1/responses
|
|
HWLAB_CODE_AGENT_CODEX_API_MODEL: gpt-5.5
|
|
HWLAB_CODE_AGENT_CODEX_API_BASE_URL: http://127.0.0.1:49280/responses
|
|
HWLAB_CODE_AGENT_CODEX_API_UPSTREAM_BASE_URL: https://hyueapi.com
|
|
HWLAB_CODE_AGENT_CODEX_API_FORWARDER_PORT: "49280"
|
|
- serviceId: hwlab-cloud-web
|
|
namespace: hwlab-dev
|
|
healthPath: /health/live
|
|
profile: dev
|
|
replicas: 1
|
|
env:
|
|
HWLAB_ENVIRONMENT: dev
|
|
HWLAB_API_BASE_URL: http://hwlab-cloud-api.hwlab-dev.svc.cluster.local:6667
|
|
HWLAB_CLOUD_WEB_PROXY_TIMEOUT_MS: "1260000"
|
|
- serviceId: hwlab-gateway
|
|
namespace: hwlab-dev
|
|
healthPath: /health/live
|
|
profile: dev
|
|
replicas: 0
|
|
env:
|
|
HWLAB_GATEWAY_MODE: hardware-boundary
|
|
HWLAB_ENVIRONMENT: dev
|
|
- serviceId: hwlab-edge-proxy
|
|
namespace: hwlab-dev
|
|
healthPath: /health/live
|
|
profile: dev
|
|
replicas: 1
|
|
env:
|
|
HWLAB_EDGE_LISTEN: 0.0.0.0:6667
|
|
HWLAB_EDGE_UPSTREAM: http://hwlab-cloud-api.hwlab-dev.svc.cluster.local:6667
|
|
HWLAB_EDGE_PROXY_TIMEOUT_MS: "1260000"
|
|
HWLAB_EDGE_IDLE_TIMEOUT_SECONDS: "120"
|
|
- serviceId: hwlab-agent-skills
|
|
namespace: hwlab-dev
|
|
healthPath: /health/live
|
|
profile: dev
|
|
replicas: 1
|
|
env: {}
|
|
createdAt: 2026-05-21T00:00:00Z
|