Files
pikasTech-HWLAB/deploy/deploy.json
T

347 lines
12 KiB
JSON

{
"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."
}
},
"lanes": {
"v02": {
"name": "v0.2",
"sourceBranch": "v0.2",
"gitopsBranch": "v0.2-gitops",
"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": "deploy/gitops/g14/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": "bun-command",
"entrypoint": "cmd/hwlab-edge-proxy/main.ts",
"artifactKind": "bun-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",
"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/g14-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",
"HWLAB_CODE_AGENT_AGENTRUN_PROVIDER_ID": "G14",
"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"
}
}
]
}
},
"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"
}
},
{
"serviceId": "hwlab-agent-skills",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
"profile": "dev",
"replicas": 1,
"env": {}
}
],
"createdAt": "2026-05-21T00:00:00Z"
}