Control UI (Web Dashboard)

Browser-based dashboard for managing your OpenClaw Gateway. View status, configure settings, manage devices, and monitor sessions.

The Control UI is the browser-based admin dashboard served directly by your OpenClaw Gateway at its root URL (default: http://127.0.0.1:18789/). It provides a visual interface for everything you'd otherwise do through the CLI — viewing Gateway status, configuring settings, managing paired devices, monitoring active sessions, approving exec requests, and chatting with your agent. Authentication happens at the WebSocket handshake via your gateway token (from gateway.auth.token or OPENCLAW_GATEWAY_TOKEN). The CLI command 'openclaw dashboard' auto-opens it in your browser and handles token passing. For security, URL tokens are stored in sessionStorage (per-tab, per-gateway) and stripped from the URL after load — no persistent token leakage. This is an admin surface, not a public-facing product. The docs are clear: do not expose it publicly. Access it via localhost, Tailscale Serve (tokenless if gateway.auth.allowTailscale is true), or an SSH tunnel (ssh -N -L 18789:127.0.0.1:18789 user@host). For remote Gateways, Tailscale is the recommended approach — it provides encrypted access without exposing ports. The Control UI is the fastest way to get a visual overview of your OpenClaw setup: which channels are connected, which nodes are paired, what sessions are active, and what cron jobs are scheduled. For power users who prefer the terminal, the CLI covers the same ground — but the dashboard makes it accessible to anyone with a browser.

Tags: web, dashboard, management

Use Cases

  • Initial setup and onboarding — visual overview of your Gateway configuration, connected channels, and paired devices
  • Session monitoring — watch active sessions, review conversation history, and track agent behavior
  • Device management — approve pairing requests, check node status, and manage connected devices
  • Configuration management — view and modify Gateway settings through a GUI instead of editing JSON/YAML files
  • Troubleshooting — check Gateway health, view logs, and diagnose connection issues

Tips

  • Use 'openclaw dashboard' to auto-open with proper authentication — it handles token passing securely
  • For remote Gateways, use Tailscale Serve for tokenless dashboard access (when gateway.auth.allowTailscale is true)
  • SSH tunnel is the quick-and-dirty remote access method: 'ssh -N -L 18789:127.0.0.1:18789 user@host' then open localhost:18789
  • Bookmark the localhost URL without the token — the dashboard stores auth in sessionStorage after first successful connection
  • Use the dashboard for onboarding and visual overview, then switch to CLI or messaging channels for daily use

Known Issues & Gotchas

  • This is an admin surface — do NOT expose it publicly without proper authentication and network restrictions
  • Token stored in sessionStorage means it's per-tab and per-gateway URL — opening in a new tab requires re-authentication
  • If you see 'unauthorized' or WebSocket 1008, check for token drift — run 'openclaw config get gateway.auth.token' on the gateway host to verify
  • SecretRef-managed tokens require the secret to be resolved in your shell — 'openclaw dashboard' will print a non-tokenized URL if unresolved
  • The dashboard URL with gateway.controlUi.basePath can be customized — check your config if the default / path returns 404
  • For headless servers, 'openclaw dashboard' prints the URL and SSH hint instead of opening a browser

Community Feedback

The ULTIMATE OpenClaw Setup Guide: now you can chat with OpenClaw through the web dashboard, but the REAL magic is chatting through your regular messaging apps!

— Reddit r/OpenClawInstall

Got tired of the default Control UI so I built PinchChat. The dashboard is functional but power users will want something with message editing and branching.

— Reddit r/OpenClawInstall

The dashboard is great for onboarding — you can see all your channels, devices, and sessions in one place. Much easier than memorizing CLI commands when you're starting out.

— Reddit r/selfhosted

Frequently Asked Questions

How do I access the Control UI?

Run 'openclaw dashboard' in your terminal — it opens the dashboard in your browser with proper authentication. Alternatively, open http://127.0.0.1:18789/ and enter your gateway token when prompted.

How do I access the dashboard for a remote Gateway?

Use an SSH tunnel: 'ssh -N -L 18789:127.0.0.1:18789 user@gateway-host', then open http://127.0.0.1:18789/. Or use Tailscale Serve for a cleaner setup with automatic TLS.

Why do I keep getting 'unauthorized' errors?

Check for token drift — the token in your browser may not match the Gateway's current token. Run 'openclaw config get gateway.auth.token' on the Gateway host and enter that token. For persistent issues, follow the token drift recovery checklist in the docs.

Can I use the Control UI as my primary chat interface?

Yes, it includes a chat interface. However, messaging channels (Telegram, Discord) offer better mobile support, push notifications, and persistence. The dashboard is best for admin tasks and quick testing.

Is the Control UI customizable?

You can change the base path via gateway.controlUi.basePath in your config. The UI itself is not heavily themeable. For a custom chat experience, consider the WebChat widget or community projects like PinchChat.

Does the dashboard work on mobile browsers?

The dashboard is responsive and works on mobile browsers, but it's optimized for desktop use. For mobile, the iOS/Android apps or messaging channels provide a better experience.