diff --git a/stacks/skaldsong/.env.example b/stacks/skaldsong/.env.example index e94dfbe..90b3da5 100644 --- a/stacks/skaldsong/.env.example +++ b/stacks/skaldsong/.env.example @@ -39,9 +39,17 @@ SKALDSONG_BIFROST_JWT_KEY= # Coordinated update with worldtree-dev required if host:port changes. SKALDSONG_HOST_BIFROST_ENDPOINT_URL=http://10.250.50.70:8300 -# URL skaldsong uses to call Worldtree's conversation API. From -# ana-docker, corviduo-dev's IP:port LAN-direct. -SKALDSONG_WORLDTREE_API_URL=http://10.250.50.152:8080 +# Worldtree API client — outbound. Same Bearer as +# SKALDSONG_BIFROST_JWT_KEY (different code path consumes it). +WORLDTREE_TOKEN= +WORLDTREE_BASE_URL=http://10.250.50.152:8080 + +# Wizard agent ID on Worldtree. MUST be pinned to the existing slot +# (skaldsong:wizard-v2) — blank would POST /agents/define and burn a +# slot of the 50-agent-per-key quota. Heimdall scopes agent_id to +# user_id, so this matches the agent defined from skaldsong-dev's +# prior nh3-dev hand-launch. +SKALDSONG_HOST_WIZARD_AGENT_ID=skaldsong:wizard-v2 # CORS — comma-separated origins. Include the SPA's public hostname AND # any dev origins still in rotation. diff --git a/stacks/skaldsong/README.md b/stacks/skaldsong/README.md index 78ad74c..56d4b39 100644 --- a/stacks/skaldsong/README.md +++ b/stacks/skaldsong/README.md @@ -85,9 +85,11 @@ scripts/elway ana-docker --playbook playbooks/deploy-skaldsong.yaml \ | `SKALDSONG_BIND` | ✓ | ✓ | Host bind address (0.0.0.0 default). | | `SKALDSONG_DB_DIR` | ✓ (mount) | ✓ | Host path for SQLite. | | `SKALDSONG_RUNS_DIR_HOST` | ✓ (mount) | ✓ | Host path for generation artifacts. | -| `SKALDSONG_BIFROST_JWT_KEY` | ✓ (anchor) | ✓ | Shared HS256 secret w/ Worldtree's `WORLDTREE_SKALDSONG_USER_KEY`. | +| `SKALDSONG_BIFROST_JWT_KEY` | ✓ (anchor) | ✓ | Shared HS256 secret w/ Worldtree's `WORLDTREE_SKALDSONG_USER_KEY`. Same value as `WORLDTREE_TOKEN`. | | `SKALDSONG_HOST_BIFROST_ENDPOINT_URL` | ✓ (anchor) | ✓ | URL Worldtree calls back to (must match allowlist). | -| `SKALDSONG_WORLDTREE_API_URL` | ✓ (anchor) | ✓ | URL skaldsong calls Worldtree at. | +| `WORLDTREE_TOKEN` | ✓ (anchor) | ✓ | Bearer for outbound HTTP to Worldtree. Same value as `SKALDSONG_BIFROST_JWT_KEY`. | +| `WORLDTREE_BASE_URL` | ✓ (anchor) | ✓ | URL skaldsong calls Worldtree at. | +| `SKALDSONG_HOST_WIZARD_AGENT_ID` | ✓ (anchor) | ✓ | Existing agent slot ID (`skaldsong:wizard-v2`). Blank burns a Heimdall quota slot on first boot. | | `SKALDSONG_HOST_CORS_ORIGINS` | ✓ (anchor) | ✓ | Comma-separated CORS origins. | | `SKALDSONG_TTS_ENGINE` | ✓ (anchor) | ✓ | `kokoro` (only engine in v1). | | `SKALDSONG_TTS_BASE_URL` | ✓ (anchor) | ✓ | Kokoro URL (WG-routed). | diff --git a/stacks/skaldsong/compose.yaml b/stacks/skaldsong/compose.yaml index 62e07d1..e8d58a7 100644 --- a/stacks/skaldsong/compose.yaml +++ b/stacks/skaldsong/compose.yaml @@ -47,9 +47,22 @@ services: # required if host:port changes. SKALDSONG_HOST_BIFROST_ENDPOINT_URL: "${SKALDSONG_HOST_BIFROST_ENDPOINT_URL:-}" - # URL skaldsong uses to call Worldtree's conversation API. From - # ana-docker, this is corviduo-dev's IP:port LAN-direct. - SKALDSONG_WORLDTREE_API_URL: "${SKALDSONG_WORLDTREE_API_URL:-http://10.250.50.152:8080}" + # Worldtree API client. WORLDTREE_TOKEN is the SAME shared-secret + # Bearer as SKALDSONG_BIFROST_JWT_KEY above — different code path + # consumes it (outbound HTTP Authorization header vs inbound HS256 + # JWT verify). WORLDTREE_BASE_URL is corviduo-dev's IP:port + # LAN-direct from ana-docker. + WORLDTREE_TOKEN: "${WORLDTREE_TOKEN:-}" + WORLDTREE_BASE_URL: "${WORLDTREE_BASE_URL:-http://10.250.50.152:8080}" + + # Wizard agent ID on Worldtree. MUST be pinned to the existing + # agent slot (`skaldsong:wizard-v2` per skaldsong-dev's prior + # hand-launched setup); leaving blank on first boot would POST + # /agents/define and burn another slot of the 50-agent-per-key + # Heimdall quota. Heimdall scopes agent_id to user_id, so the + # ana-docker deployment inherits the same id as the nh3-dev + # hand-launch. + SKALDSONG_HOST_WIZARD_AGENT_ID: "${SKALDSONG_HOST_WIZARD_AGENT_ID:-skaldsong:wizard-v2}" # CORS for the SPA. Comma-separated origins; include both the # public hostname and any dev origins still in rotation.