fix: resolve gateway URL at runtime via /api/studio fallback (#66)

Fixes #57 — NEXT_PUBLIC_GATEWAY_URL is a build-time variable that gets
baked into the client bundle. Changing it in .env and restarting has no
effect without a rebuild.

- normalizeLocalGatewayDefaults now accepts the sanitized public form
  ({url, tokenConfigured}) from /api/studio
- When no saved gateway URL exists, prefer runtime localGatewayDefaults
  (from openclaw.json or CLAW3D_GATEWAY_URL env var) over the
  potentially stale build-time NEXT_PUBLIC_GATEWAY_URL
- loadLocalGatewayDefaults falls back to CLAW3D_GATEWAY_URL/TOKEN env
  vars when openclaw.json is absent
- Added runtime env vars documentation to .env.example and README

Co-authored-by: robotica4us-collab <neo@openclaw.ai>
Made-with: Cursor
This commit is contained in:
iamlukethedev
2026-03-27 14:45:02 -05:00
committed by iamlukethedev
parent 456cfae771
commit e71b62444c
7 changed files with 152 additions and 12 deletions
+8 -1
View File
@@ -1,6 +1,13 @@
# Browser/client gateway URL
# Browser/client gateway URL (build-time — requires `npm run build` after changes)
NEXT_PUBLIC_GATEWAY_URL=ws://localhost:18789
# Runtime gateway URL — takes effect on restart without a rebuild.
# Use this instead of NEXT_PUBLIC_GATEWAY_URL when you want to change the
# gateway endpoint without re-running `npm run build`. Also used as a
# fallback when openclaw.json is not present.
# CLAW3D_GATEWAY_URL=ws://localhost:18789
# CLAW3D_GATEWAY_TOKEN=
# Debug UI
DEBUG=true