347 lines
12 KiB
JSON
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"
|
|
}
|