Files
pikasTech-HWLAB/deploy/deploy.yaml
T
2026-06-30 06:17:40 +08:00

922 lines
34 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
- tools/src/hwlab-cli/trace-renderer.ts
env: {}
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
- scripts/artifact-publish.mjs
- scripts/src/dev-artifact-services.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-v03.74-48-78-17.nip.io
publicEndpoints:
frontend: https://hwlab-v03.74-48-78-17.nip.io
api: https://hwlab-v03.74-48-78-17.nip.io
legacyFrontend: http://74.48.78.17:20666
legacyApi: http://74.48.78.17:20667
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: false
autoCollapseTerminal: false
observability:
traceExplorerUrlTemplate: /v1/workbench/traces/{trace_id}/events
opencode:
providerProfile: dsflash-go
providerId: dsflash-go
displayName: AgentRun dsflash-go
model: deepseek-v4-flash
smallModel: deepseek-v4-flash
baseURL: https://opencode.ai/zen/go/v1
npm: '@ai-sdk/openai-compatible'
apiKeyEnv: OPENCODE_DSFLASH_GO_API_KEY
apiKeySecretRef: hwlab-code-agent-provider/opencode-api-key
contextLimit: 1000000
outputLimit: 384000
agentrunSecretNamespace: agentrun-v02
agentrunSecretName: agentrun-v01-provider-dsflash-go
agentrunSecretKeys:
- auth.json
- config.toml
- model-catalog.json
externalPostgres:
enabled: true
serviceName: g14-platform-postgres
endpointAddress: 10.42.0.1
port: 5432
runtimeStore:
postgres:
image: postgres:16-alpine
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-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-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_TURN_STATUS_REFRESH_TIMEOUT_MS: "30000"
HWLAB_CODE_AGENT_AGENTRUN_NO_RESPONSE_TIMEOUT_MS: "600000"
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"
HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_SYNC_POLL_INTERVAL_MS: "1000"
HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_ENABLED: "1"
HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_INITIAL_DELAY_MS: "5000"
HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_INTERVAL_MS: "60000"
HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_MIN_AGE_MS: "30000"
HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_BATCH_SIZE: "100"
HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_JITTER_MS: "15000"
HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_FAILURE_BACKOFF_MS: "120000"
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-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
- 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_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
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
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
- scripts/artifact-publish.mjs
- scripts/src/dev-artifact-services.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]
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"]
}
]
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_DOMAIN: .pikapython.com
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_HWPOD_SPEC_REGISTRY_DIRS: /etc/hwlab/hwpod-specs
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-v01
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-v02.svc.cluster.local:8080
AGENTRUN_API_KEY: secretRef:hwlab-v03-master-server-admin-api-key/api-key
HWLAB_CODE_AGENT_AGENTRUN_RUNNER_NAMESPACE: agentrun-v02
HWLAB_CODE_AGENT_AGENTRUN_SECRET_NAMESPACE: agentrun-v02
HWLAB_CODE_AGENT_AGENTRUN_REPO_URL: http://git-mirror-http.devops-infra.svc.cluster.local/pikasTech/HWLAB.git
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
services:
- 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