Files
pikasTech-HWLAB/deploy/deploy.json
T
Lyon 7a0648088c fix: wire distinct M3 simulator identities
Merge PR #159 after Code Queue rebase and validation. Runner verified M3 cardinality, hardware-loop smoke, patch-panel runtime smoke, m3 readonly contract, and git diff check. This is source/config blocker removal only; it does not claim DEV-LIVE M3 pass.
2026-05-23 00:09:29 +08:00

365 lines
11 KiB
JSON

{
"manifestVersion": "v1",
"environment": "dev",
"commitId": "c7de474",
"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
},
{
"name": "hwlab-dev-tunnel-health",
"type": "tcp",
"localServiceId": "hwlab-tunnel-client",
"localHost": "hwlab-tunnel-client.hwlab-dev.svc.cluster.local",
"localPort": 7402,
"remotePort": 7402
}
]
},
"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-cli",
"name": "hwlab-cli",
"namespace": "hwlab-dev",
"port": 7501,
"targetPort": "http"
},
{
"serviceId": "hwlab-agent-skills",
"name": "hwlab-agent-skills",
"namespace": "hwlab-dev",
"port": 7430,
"targetPort": "http"
},
{
"serviceId": "hwlab-agent-mgr",
"name": "hwlab-agent-mgr",
"namespace": "hwlab-dev",
"port": 7410,
"targetPort": "http"
},
{
"serviceId": "hwlab-gateway-simu",
"name": "hwlab-gateway-simu-1",
"namespace": "hwlab-dev",
"port": 7101,
"targetPort": "http"
},
{
"serviceId": "hwlab-box-simu",
"name": "hwlab-box-simu-1",
"namespace": "hwlab-dev",
"port": 7201,
"targetPort": "http"
},
{
"serviceId": "hwlab-gateway-simu",
"name": "hwlab-gateway-simu-2",
"namespace": "hwlab-dev",
"port": 7101,
"targetPort": "http"
},
{
"serviceId": "hwlab-box-simu",
"name": "hwlab-box-simu-2",
"namespace": "hwlab-dev",
"port": 7201,
"targetPort": "http"
},
{
"serviceId": "hwlab-patch-panel",
"name": "hwlab-patch-panel",
"namespace": "hwlab-dev",
"port": 7301,
"targetPort": "http"
},
{
"serviceId": "hwlab-router",
"name": "hwlab-router",
"namespace": "hwlab-dev",
"port": 7401,
"targetPort": "http"
},
{
"serviceId": "hwlab-tunnel-client",
"name": "hwlab-tunnel-client",
"namespace": "hwlab-dev",
"port": 7402,
"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."
}
},
"services": [
{
"serviceId": "hwlab-cloud-api",
"image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:c7de474",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
"profile": "dev",
"replicas": 1,
"env": {
"HWLAB_ENVIRONMENT": "dev",
"HWLAB_PUBLIC_ENDPOINT": "http://74.48.78.17:16667",
"HWLAB_COMMIT_ID": "c7de474",
"HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-api:c7de474",
"HWLAB_IMAGE_TAG": "c7de474",
"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": "require",
"HWLAB_CLOUD_DB_CONTRACT": "dev-redacted-presence-only",
"HWLAB_CLOUD_DB_SERVICE_NAME": "cloud-api-db",
"HWLAB_CLOUD_DB_SERVICE_NAMESPACE": "hwlab-dev",
"HWLAB_CLOUD_DB_HOST": "cloud-api-db.hwlab-dev.svc.cluster.local",
"HWLAB_CLOUD_DB_PORT": "5432",
"HWLAB_CODE_AGENT_PROVIDER": "openai",
"HWLAB_CODE_AGENT_MODEL": "gpt-5.5",
"OPENAI_API_KEY": "secretRef:hwlab-code-agent-provider/openai-api-key"
}
},
{
"serviceId": "hwlab-cloud-web",
"image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:c7de474",
"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"
}
},
{
"serviceId": "hwlab-agent-mgr",
"image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:c7de474",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
"profile": "dev",
"replicas": 1,
"env": {
"HWLAB_AGENT_SESSION_MODE": "control-plane",
"HWLAB_ENVIRONMENT": "dev"
}
},
{
"serviceId": "hwlab-agent-worker",
"image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:c7de474",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
"profile": "dev",
"replicas": 0,
"env": {
"HWLAB_AGENT_SESSION_MODE": "session-scoped",
"HWLAB_ENVIRONMENT": "dev"
}
},
{
"serviceId": "hwlab-gateway",
"image": "127.0.0.1:5000/hwlab/hwlab-gateway:c7de474",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
"profile": "dev",
"replicas": 0,
"env": {
"HWLAB_GATEWAY_MODE": "hardware-boundary",
"HWLAB_ENVIRONMENT": "dev"
}
},
{
"serviceId": "hwlab-gateway-simu",
"image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:c7de474",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
"profile": "dev",
"replicas": 2,
"instanceNames": ["hwlab-gateway-simu-1", "hwlab-gateway-simu-2"],
"identityStrategy": "indexed-workloads",
"env": {
"HWLAB_GATEWAY_MODE": "simulator",
"HWLAB_GATEWAY_ID": "gwsimu_1,gwsimu_2",
"HWLAB_BOX_IDS": "boxsimu_1,boxsimu_2",
"HWLAB_BOX_RESOURCES": "res_boxsimu_1,res_boxsimu_2",
"HWLAB_BOX_URLS": "http://hwlab-box-simu-1.hwlab-dev.svc.cluster.local:7201,http://hwlab-box-simu-2.hwlab-dev.svc.cluster.local:7201"
}
},
{
"serviceId": "hwlab-box-simu",
"image": "127.0.0.1:5000/hwlab/hwlab-box-simu:c7de474",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
"profile": "dev",
"replicas": 2,
"instanceNames": ["hwlab-box-simu-1", "hwlab-box-simu-2"],
"identityStrategy": "indexed-workloads",
"env": {
"HWLAB_BOX_ID": "boxsimu_1,boxsimu_2",
"HWLAB_BOX_RESOURCE_ID": "res_boxsimu_1,res_boxsimu_2",
"HWLAB_GATEWAY_SESSION_ID": "gws_gwsimu_1,gws_gwsimu_2",
"HWLAB_ENVIRONMENT": "dev"
}
},
{
"serviceId": "hwlab-patch-panel",
"image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:c7de474",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
"profile": "dev",
"replicas": 1,
"env": {
"HWLAB_PATCH_PANEL_MODE": "dev-skeleton",
"HWLAB_PATCH_PANEL_ENDPOINT_MAP": "{\"res_boxsimu_2\":\"http://hwlab-box-simu-2.hwlab-dev.svc.cluster.local:7201\"}",
"HWLAB_ENVIRONMENT": "dev"
}
},
{
"serviceId": "hwlab-router",
"image": "127.0.0.1:5000/hwlab/hwlab-router:c7de474",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
"profile": "dev",
"replicas": 1,
"env": {
"HWLAB_ROUTER_MODE": "edge-reachability",
"HWLAB_EDGE_PROXY_SERVICE": "hwlab-edge-proxy"
}
},
{
"serviceId": "hwlab-tunnel-client",
"image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:c7de474",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
"profile": "dev",
"replicas": 1,
"env": {
"HWLAB_TUNNEL_MODE": "frp-client",
"HWLAB_FRP_SERVER_ADDR": "74.48.78.17",
"HWLAB_FRP_PUBLIC_PORT": "16667",
"HWLAB_FRP_WEB_PUBLIC_PORT": "16666"
}
},
{
"serviceId": "hwlab-edge-proxy",
"image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:c7de474",
"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"
}
},
{
"serviceId": "hwlab-cli",
"image": "127.0.0.1:5000/hwlab/hwlab-cli:c7de474",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
"profile": "dev",
"replicas": 0,
"env": {
"HWLAB_CLI_ENDPOINT": "http://74.48.78.17:16667"
}
},
{
"serviceId": "hwlab-agent-skills",
"image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:c7de474",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
"profile": "dev",
"replicas": 1,
"env": {
"HWLAB_SKILLS_COMMIT_ID": "c7de474"
}
}
],
"createdAt": "2026-05-21T00:00:00Z"
}