# 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 NC01: gitopsRoot: deploy/gitops/node/nc01 sourceRepo: git@github.com:pikasTech/HWLAB.git 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: &v03EnvReuseServices - hwlab-cloud-api - hwlab-workbench-runtime - hwlab-user-billing - hwlab-project-management - hwlab-tasktree-api - hwlab-tasktree-worker - hwlab-harnessrl-api - hwlab-harnessrl-worker - hwlab-workbench-api - hwlab-workbench-worker - hwlab-cloud-web - hwlab-gateway - hwlab-edge-proxy - hwlab-agent-skills bootScripts: &v03BootScripts 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-harnessrl-api: deploy/runtime/boot/hwlab-harnessrl-api.sh hwlab-harnessrl-worker: deploy/runtime/boot/hwlab-harnessrl-worker.sh hwlab-workbench-api: deploy/runtime/boot/hwlab-workbench-api.sh hwlab-workbench-worker: deploy/runtime/boot/hwlab-workbench-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: &v03ServiceDeclarations 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-harnessrl-api: runtimeKind: bun-command entrypoint: cmd/hwlab-harnessrl-api/main.ts artifactKind: bun-command healthPath: /readyz healthPort: 6675 componentPaths: - cmd/hwlab-harnessrl-api/ - internal/harnessrl/ - internal/cloud/server-caserun-http.ts - package.json - package-lock.json - deploy/runtime/boot/hwlab-harnessrl-api.sh env: TZ: Asia/Shanghai observable: true hwlab-harnessrl-worker: runtimeKind: bun-command entrypoint: cmd/hwlab-harnessrl-worker/main.ts artifactKind: bun-command healthPath: /readyz healthPort: 6676 componentPaths: - cmd/hwlab-harnessrl-worker/ - internal/harnessrl/ - tools/src/hwlab-caserun-lib.ts - package.json - package-lock.json - deploy/runtime/boot/hwlab-harnessrl-worker.sh env: TZ: Asia/Shanghai HWLAB_CASERUN_INTERNAL_API_URL: http://hwlab-cloud-api.hwlab-dev.svc.cluster.local:6667 observable: true hwlab-workbench-api: runtimeKind: bun-command entrypoint: cmd/hwlab-workbench-api/main.ts artifactKind: bun-command healthPath: /health/ready healthPort: 6677 componentPaths: - cmd/hwlab-workbench-api/ - internal/workbench/ - internal/cloud/workbench-command-proxy.ts - tools/src/workbench-cli.ts - tools/hwlab-cli/bin/hwlab-cli.ts - package.json - package-lock.json - deploy/runtime/boot/hwlab-workbench-api.sh env: TZ: Asia/Shanghai observable: true hwlab-workbench-worker: runtimeKind: bun-command entrypoint: cmd/hwlab-workbench-worker/main.ts artifactKind: bun-command healthPath: /health/ready healthPort: 6678 componentPaths: - cmd/hwlab-workbench-worker/ - internal/workbench/ - internal/cloud/code-agent-agentrun-adapter.ts - package.json - package-lock.json - deploy/runtime/boot/hwlab-workbench-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 healthProbe: startup: periodSeconds: 10 timeoutSeconds: 3 failureThreshold: 90 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: BUN_CONFIG_REGISTRY: https://registry.npmjs.org/ npm_config_registry: https://registry.npmjs.org/ 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: &v03EnvRecipe 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: &v03BootConfig 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-FREQ keilProject: projects/71-00075-11-FREQ/FirmWare/MDK-ARM/FREQ_Controller_FW.uvprojx keilTarget: FREQ_Controller_FW hexPath: projects/71-00075-11-FREQ/FirmWare/MDK-ARM/FREQ_Controller_FW/FREQ_Controller_FW.hex mapPath: projects/71-00075-11-FREQ/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-FREQ", "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_HWPOD_OPERATION_RETENTION_SECONDS: "604800" 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_WORKBENCH_API_URL: http://hwlab-workbench-api.hwlab-v03.svc.cluster.local:6677 WORKBENCH_CLOUD_API_AUTHORIZATION: secretRef:hwlab-v03-master-server-admin-api-key/api-key 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 HARNESSRL_API_URL: http://hwlab-harnessrl-api.hwlab-v03.svc.cluster.local:6675 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 - serviceId: hwlab-harnessrl-api replicas: 1 env: HARNESSRL_DATABASE_URL: secretRef:hwlab-cloud-api-v03-db/database-url HARNESSRL_TEMPORAL_ADDRESS: temporal-frontend.temporal.svc.cluster.local:7233 HARNESSRL_TEMPORAL_NAMESPACE: unidesk HARNESSRL_TEMPORAL_TASK_QUEUE: hwlab-v03-harnessrl HARNESSRL_ACTIVITY_START_TO_CLOSE_TIMEOUT_MS: "1800000" HARNESSRL_ACTIVITY_HEARTBEAT_TIMEOUT_MS: "30000" HARNESSRL_ACTIVITY_RETRY_INITIAL_INTERVAL_MS: "1000" HARNESSRL_ACTIVITY_RETRY_MAXIMUM_INTERVAL_MS: "30000" HARNESSRL_ACTIVITY_RETRY_MAXIMUM_ATTEMPTS: "5" HARNESSRL_API_PORT: "6675" OTEL_SERVICE_NAME: hwlab-harnessrl-api - serviceId: hwlab-harnessrl-worker replicas: 1 env: HARNESSRL_DATABASE_URL: secretRef:hwlab-cloud-api-v03-db/database-url HARNESSRL_TEMPORAL_ADDRESS: temporal-frontend.temporal.svc.cluster.local:7233 HARNESSRL_TEMPORAL_NAMESPACE: unidesk HARNESSRL_TEMPORAL_TASK_QUEUE: hwlab-v03-harnessrl HARNESSRL_ACTIVITY_START_TO_CLOSE_TIMEOUT_MS: "1800000" HARNESSRL_ACTIVITY_HEARTBEAT_TIMEOUT_MS: "30000" HARNESSRL_ACTIVITY_RETRY_INITIAL_INTERVAL_MS: "1000" HARNESSRL_ACTIVITY_RETRY_MAXIMUM_INTERVAL_MS: "30000" HARNESSRL_ACTIVITY_RETRY_MAXIMUM_ATTEMPTS: "5" HARNESSRL_WORKER_HEALTH_PORT: "6676" HWLAB_CASERUN_INTERNAL_API_URL: http://hwlab-cloud-api.hwlab-v03.svc.cluster.local:6667 HWLAB_RUNTIME_INTERNAL_API_URL: http://hwlab-cloud-api.hwlab-v03.svc.cluster.local:6667 OTEL_SERVICE_NAME: hwlab-harnessrl-worker - serviceId: hwlab-workbench-api replicas: 1 env: WORKBENCH_MODE: temporal WORKBENCH_API_PORT: "6677" WORKBENCH_API_IDLE_TIMEOUT_SECONDS: "60" WORKBENCH_CLOUD_API_URL: http://hwlab-cloud-api.hwlab-v03.svc.cluster.local:6667 WORKBENCH_CLOUD_API_AUTHORIZATION: secretRef:hwlab-v03-master-server-admin-api-key/api-key WORKBENCH_API_AUTHORIZATION: secretRef:hwlab-v03-master-server-admin-api-key/api-key WORKBENCH_TEMPORAL_ADDRESS: temporal-frontend.temporal.svc.cluster.local:7233 WORKBENCH_TEMPORAL_NAMESPACE: unidesk WORKBENCH_TEMPORAL_TASK_QUEUE: hwlab-v03-workbench WORKBENCH_ACTIVITY_START_TO_CLOSE_TIMEOUT_MS: "30000" WORKBENCH_ACTIVITY_RETRY_INITIAL_INTERVAL_MS: "1000" WORKBENCH_ACTIVITY_RETRY_MAXIMUM_INTERVAL_MS: "30000" WORKBENCH_ACTIVITY_RETRY_MAXIMUM_ATTEMPTS: "5" OTEL_SERVICE_NAME: hwlab-workbench-api - serviceId: hwlab-workbench-worker replicas: 1 env: WORKBENCH_MODE: temporal WORKBENCH_WORKER_HEALTH_PORT: "6678" WORKBENCH_CLOUD_API_URL: http://hwlab-cloud-api.hwlab-v03.svc.cluster.local:6667 WORKBENCH_CLOUD_API_AUTHORIZATION: secretRef:hwlab-v03-master-server-admin-api-key/api-key WORKBENCH_TEMPORAL_ADDRESS: temporal-frontend.temporal.svc.cluster.local:7233 WORKBENCH_TEMPORAL_NAMESPACE: unidesk WORKBENCH_TEMPORAL_TASK_QUEUE: hwlab-v03-workbench WORKBENCH_ACTIVITY_START_TO_CLOSE_TIMEOUT_MS: "30000" WORKBENCH_ACTIVITY_RETRY_INITIAL_INTERVAL_MS: "1000" WORKBENCH_ACTIVITY_RETRY_MAXIMUM_INTERVAL_MS: "30000" WORKBENCH_ACTIVITY_RETRY_MAXIMUM_ATTEMPTS: "5" HWLAB_KAFKA_BOOTSTRAP_SERVERS: platform-infra-kafka-kafka-bootstrap.platform-infra.svc.cluster.local:9092 HWLAB_KAFKA_EVENT_TOPIC: hwlab.event.v1 HWLAB_KAFKA_CLIENT_ID: hwlab-v03-workbench-worker OTEL_SERVICE_NAME: hwlab-workbench-worker production: name: Production node: NC01 sourceBranch: release gitopsBranch: release-gitops gitReadUrl: http://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB.git gitWriteUrl: http://git-mirror-write.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB.git artifactCatalog: deploy/artifact-catalog.nc01-production.json runtimePath: runtime-production namespace: hwlab-production imageTagMode: full endpoint: https://lab.hwpod.com publicEndpoints: frontend: https://lab.hwpod.com api: https://lab.hwpod.com publicServices: nodes: NC01: - name: hwlab-cloud-web-public selector: app.kubernetes.io/name: hwlab-cloud-web port: 80 targetPort: 8080 nodePort: 32010 frp: enabled: false externalPostgres: enabled: true serviceName: nc01-host-postgres endpointAddress: 10.42.0.1 port: 5432 migrationSecretName: hwlab-cloud-api-production-db migrationSecretKey: migration-database-url workbench: rawHwlabEventWindow: enabled: true maxEntries: 200 maxRetainedBytes: 1048576 envReuseServices: *v03EnvReuseServices bootScripts: *v03BootScripts serviceDeclarations: *v03ServiceDeclarations services: - serviceId: hwlab-cloud-api shutdownDrain: enabled: true path: /v1/internal/workbench/drain sleepSeconds: 3 timeoutMs: 2500 env: HWLAB_METRICS_NAMESPACE: hwlab-production HWLAB_CLOUD_DB_URL: secretRef:hwlab-cloud-api-production-db/database-url HWLAB_CLOUD_DB_SSL_MODE: require HWLAB_CLOUD_DB_CONTRACT: production-redacted-presence-only HWLAB_ACCESS_CONTROL_REQUIRED: "1" HWLAB_SESSION_COOKIE_SAMESITE: None HWLAB_BOOTSTRAP_ADMIN_ID: usr_production_admin HWLAB_BOOTSTRAP_ADMIN_USERNAME: admin HWLAB_BOOTSTRAP_ADMIN_DISPLAY_NAME: HWLAB Production Admin HWLAB_BOOTSTRAP_ADMIN_PASSWORD_HASH: secretRef:hwlab-production-bootstrap-admin/password-hash HWLAB_BOOTSTRAP_ADMIN_API_KEY_ID: key_master_server_admin HWLAB_BOOTSTRAP_ADMIN_API_KEY: secretRef:hwlab-production-master-server-admin-api-key/api-key HWLAB_USER_BILLING_URL: http://hwlab-user-billing.hwlab-production.svc.cluster.local:6670 HWLAB_WORKBENCH_RUNTIME_URL: http://hwlab-workbench-runtime.hwlab-production.svc.cluster.local:6671 HWLAB_PROJECT_MANAGEMENT_URL: http://hwlab-project-management.hwlab-production.svc.cluster.local:6672 HWLAB_TASKTREE_URL: http://hwlab-tasktree-api.hwlab-production.svc.cluster.local:6673 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" OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces OTEL_SERVICE_NAME: hwlab-cloud-api - serviceId: hwlab-cloud-web env: HWLAB_CLOUD_WEB_OPENCODE_UPSTREAM_URL: http://opencode-server.hwlab-production.svc.cluster.local:4096 - serviceId: hwlab-workbench-runtime env: HWLAB_WORKBENCH_RUNTIME_DB_URL: secretRef:hwlab-cloud-api-production-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-production-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_production_admin HWLAB_BOOTSTRAP_ADMIN_USERNAME: admin HWLAB_BOOTSTRAP_ADMIN_DISPLAY_NAME: HWLAB Production Admin HWLAB_BOOTSTRAP_ADMIN_PASSWORD_HASH: secretRef:hwlab-production-bootstrap-admin/password-hash HWLAB_USER_BILLING_STATE_AUTHORITY: nc01-postgres HWLAB_USER_BILLING_EXTERNAL_DB_LABEL: nc01-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-production.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-production-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-production-mdtodo HWLAB_PROJECT_MANAGEMENT_SOURCE_NAME: HWLAB Production MDTODO HWLAB_PROJECT_MANAGEMENT_PROJECT_ID: project_hwlab_production 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-production.svc.cluster.local:6667/v1/hwpod-node-ops HWLAB_PROJECT_MANAGEMENT_HWPOD_NODE_OPS_API_KEY: secretRef:hwlab-production-master-server-admin-api-key/api-key OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces OTEL_SERVICE_NAME: hwlab-project-management - 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-production-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-production-tasktree TASKTREE_WORKER_HEALTH_PORT: "6674" OTEL_SERVICE_NAME: hwlab-tasktree-worker envRecipe: *v03EnvRecipe bootConfig: *v03BootConfig services: - serviceId: hwlab-harnessrl-api namespace: hwlab-dev healthPath: /health/live - serviceId: hwlab-harnessrl-worker namespace: hwlab-dev healthPath: /health/live - 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