:7860 # OpenClaw UI mounted at /openclaw (preserve prefix). handle /openclaw* { reverse_proxy 127.0.0.1:18789 { header_up Authorization "Bearer {$OPENCLAW_GATEWAY_TOKEN}" header_up X-OpenClaw-Token "{$OPENCLAW_GATEWAY_TOKEN}" } } # NanoClaw UI mounted at /nanoclaw (preserve prefix). handle /nanoclaw* { reverse_proxy 127.0.0.1:{$NANOCLAW_PORT} } handle /nanobot* { reverse_proxy 127.0.0.1:{$NANOBOT_PORT} } handle /picoclaw* { reverse_proxy 127.0.0.1:{$PICOCLAW_PORT} } handle /zeroclaw* { reverse_proxy 127.0.0.1:{$ZEROCLAW_PORT} } handle /nullclaw* { reverse_proxy 127.0.0.1:{$NULLCLAW_PORT} } # OpenClaw UI uses absolute runtime paths; proxy them too. handle /ws* { reverse_proxy 127.0.0.1:18789 { header_up Authorization "Bearer {$OPENCLAW_GATEWAY_TOKEN}" header_up X-OpenClaw-Token "{$OPENCLAW_GATEWAY_TOKEN}" } } handle /__openclaw__/* { reverse_proxy 127.0.0.1:18789 { header_up Authorization "Bearer {$OPENCLAW_GATEWAY_TOKEN}" header_up X-OpenClaw-Token "{$OPENCLAW_GATEWAY_TOKEN}" } } handle /ask { reverse_proxy 127.0.0.1:18789 { header_up Authorization "Bearer {$OPENCLAW_GATEWAY_TOKEN}" header_up X-OpenClaw-Token "{$OPENCLAW_GATEWAY_TOKEN}" } } handle /gateway* { reverse_proxy 127.0.0.1:18789 { header_up Authorization "Bearer {$OPENCLAW_GATEWAY_TOKEN}" header_up X-OpenClaw-Token "{$OPENCLAW_GATEWAY_TOKEN}" } } handle /events* { reverse_proxy 127.0.0.1:18789 { header_up Authorization "Bearer {$OPENCLAW_GATEWAY_TOKEN}" header_up X-OpenClaw-Token "{$OPENCLAW_GATEWAY_TOKEN}" } } handle /socket* { reverse_proxy 127.0.0.1:18789 { header_up Authorization "Bearer {$OPENCLAW_GATEWAY_TOKEN}" header_up X-OpenClaw-Token "{$OPENCLAW_GATEWAY_TOKEN}" } } handle /health { reverse_proxy 127.0.0.1:18789 { header_up Authorization "Bearer {$OPENCLAW_GATEWAY_TOKEN}" header_up X-OpenClaw-Token "{$OPENCLAW_GATEWAY_TOKEN}" } } handle { reverse_proxy 127.0.0.1:8501 }