{ "manifestVersion": "v1", "environment": "dev", "commitId": "7de6edd", "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:7de6edd", "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": "7de6edd", "HWLAB_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-api:7de6edd", "HWLAB_IMAGE_TAG": "7de6edd", "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_RUNTIME_ADAPTER": "postgres", "HWLAB_CLOUD_RUNTIME_DURABLE": "true", "HWLAB_CODE_AGENT_PROVIDER": "openai", "HWLAB_CODE_AGENT_MODEL": "gpt-5.5", "HWLAB_CODE_AGENT_OPENAI_BASE_URL": "http://172.26.26.227:17680/v1/responses", "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:7de6edd", "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:7de6edd", "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:7de6edd", "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:7de6edd", "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:7de6edd", "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:7de6edd", "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:7de6edd", "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:7de6edd", "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:7de6edd", "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:7de6edd", "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:7de6edd", "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:7de6edd", "namespace": "hwlab-dev", "healthPath": "/health/live", "profile": "dev", "replicas": 1, "env": { "HWLAB_SKILLS_COMMIT_ID": "7de6edd" } } ], "createdAt": "2026-05-21T00:00:00Z" }