OpenClaw Studio is a clean web dashboard for OpenClaw. Use it to connect to your Gateway, see your agents, chat, manage approvals, and configure jobs from one place.
⭐ Drop a star to help us grow! ⭐
It helps more developers discover the project.
If your Gateway is already running, pick the scenario that matches where your Gateway and Studio will run:
- A. Gateway local, Studio local (same computer)
- B. Gateway in the cloud, Studio local (your laptop)
- C. Studio in the cloud, Gateway in the cloud
All setups use the same install/run path (recommended): npx -y openclaw-studio@latest
- Node.js 18+ (LTS recommended)
- An OpenClaw Gateway URL + token
- Tailscale (optional, recommended for remote access)
npx -y openclaw-studio@latest
cd openclaw-studio
npm run dev- Open http://localhost:3000
- In Studio, set:
- Upstream URL:
ws://localhost:18789 - Upstream Token: your gateway token (for example:
openclaw config get gateway.auth.token)
- Upstream URL:
Run Studio on your laptop as above, then set an upstream URL your laptop can reach.
Recommended (Tailscale Serve on the gateway host):
- On the gateway host:
tailscale serve --yes --bg --https 443 http://127.0.0.1:18789
- In Studio (on your laptop):
- Upstream URL:
wss://<gateway-host>.ts.net - Upstream Token: your gateway token
- Upstream URL:
Alternative (SSH tunnel):
- From your laptop:
ssh -L 18789:127.0.0.1:18789 user@<gateway-host>
- In Studio:
- Upstream URL:
ws://localhost:18789
- Upstream URL:
This is the “always-on” setup. The easiest secure version is to keep the Gateway private and expose Studio over Tailscale.
- On the VPS that will run Studio:
- Run Studio (same commands as above).
- Expose Studio over tailnet HTTPS:
tailscale serve --yes --bg --https 443 http://127.0.0.1:3000
- Open Studio from your laptop/phone:
https://<studio-host>.ts.net
- In Studio, set:
- Upstream URL:
wss://<gateway-host>.ts.net(or whatever your gateway is reachable at from the Studio host) - Upstream Token: your gateway token
- Upstream URL:
Notes:
- Avoid serving Studio behind
/studiounless you configurebasePathand rebuild. - If Studio is reachable beyond a tailnet, consider setting
STUDIO_ACCESS_TOKEN(see Configuration below).
There are two separate network paths:
- Browser -> Studio: HTTP for the UI, plus a WebSocket to
ws(s)://<studio-host>:3000/api/gateway/ws - Studio -> Gateway (upstream): a second WebSocket opened by the Studio Node server to your configured Upstream URL
This is why ws://localhost:18789 means “gateway on the Studio host”, not “gateway on your phone”.
git clone https://github.com/grp06/openclaw-studio.git
cd openclaw-studio
npm install
npm run devPaths and key settings:
- OpenClaw config:
~/.openclaw/openclaw.json(orOPENCLAW_CONFIG_PATH/OPENCLAW_STATE_DIR) - Studio settings:
~/.openclaw/openclaw-studio/settings.json - Default gateway URL:
ws://localhost:18789(override via Studio Settings orNEXT_PUBLIC_GATEWAY_URL) - Optional Studio access gate: set
STUDIO_ACCESS_TOKENon the Studio server
See docs/ui-guide.md for UI workflows (agent creation, cron jobs, exec approvals).
See docs/pi-chat-streaming.md for how Studio bridges browser WebSocket traffic to the upstream Gateway, how runtime streaming arrives (chat/agent events), and how the chat UI renders tool calls, thinking traces, and final transcript lines.
See docs/permissions-sandboxing.md for how agent creation choices (tool policy, sandbox config, exec approvals) flow from Studio into the OpenClaw Gateway and how upstream OpenClaw enforces them at runtime (workspaces, sandbox mounts, tool availability, and exec approval prompts).
If the UI loads but “Connect” fails, it’s usually Studio->Gateway:
- Confirm the upstream URL/token in the UI (stored on the Studio host at
<state dir>/openclaw-studio/settings.json). EPROTO/ “wrong version number”: you usedwss://...to a non-TLS endpoint (usews://..., or put the gateway behind HTTPS).- Assets 404 under
/studio: serve Studio at/or configurebasePathand rebuild. - 401 “Studio access token required”:
STUDIO_ACCESS_TOKENis enabled; open/?access_token=...once to set the cookie. - Helpful error codes:
studio.gateway_url_missing,studio.gateway_token_missing,studio.upstream_error,studio.upstream_closed.
See ARCHITECTURE.md for details on modules and data flow.
