#Auth with OpenClaw without Tailscale
1 messages · Page 1 of 1 (latest)
control ui requires device identity (use HTTPS or localhost secure context)
This page is HTTP, so the browser blocks device identity. Use HTTPS (Tailscale Serve) or open http://127.0.0.1:18789 on the gateway host.
If you must stay on HTTP, set gateway.controlUi.allowInsecureAuth: true (token-only).
I set allowInsecureAuth, but it is not working correctly. I input my token and i keep getting "control ui requires device identity (use HTTPS or localhost secure context)
"
What are you trying to access remotely without Tailscale — the macOS app, the browser Control UI, the CLI, or an iOS/Android node?
In general, you’ve got two sane options:
Option A (recommended): SSH tunnel (no public exposure)
Keep the Gateway bound to loopback on the remote host, and forward it:
ssh -N -L 18789:127.0.0.1:18789 user@your-gateway-host
Then on your local machine:
- Open the Control UI at
http://127.0.0.1:18789(localhost counts as a secure context for the UI’s device identity bits) - Use your Gateway Token (or password) to connect
Docs: https://docs.openclaw.ai/gateway/remote
(macOS app specific: https://docs.openclaw.ai/gateway/remote-gateway-readme)
Option B: Reverse proxy + HTTPS (if you really need it internet-facing)
Put Caddy/nginx/etc in front, terminate TLS, and do not expose the Gateway directly. If you go this route, read this first because it’s easy to misconfigure:
If you reply with:
- where the Gateway is running (home machine vs VPS),
- what client you’re using (browser vs app vs node),
- whether you can SSH in,
…I can point you at the exact minimal config path.
That behavior is expected: gateway.controlUi.allowInsecureAuth does not bypass device identity.
On plain HTTP to a non-localhost origin (http://<lan-ip> / http://<public-ip>), the browser is in a non-secure context and blocks the WebCrypto bits the Control UI uses to generate device identity — so you keep getting:
“control ui requires device identity (use HTTPS or localhost secure context)”
Source: https://docs.openclaw.ai/web/control-ui#insecure-http (it explicitly says allowInsecureAuth doesn’t bypass device identity/pairing)
What to do instead (without Tailscale)
- Use an SSH tunnel so the UI is “localhost” on your machine:
ssh -N -L 18789:127.0.0.1:18789 user@<gateway-host>
Then open:
http://127.0.0.1:18789/(or yourgateway.controlUi.basePath, e.g./openclaw)
- Or put HTTPS in front (Caddy/nginx/Traefik) and access via
https://...(this is the “real” fix if you need browser access without SSH).
- Break-glass only:
gateway.controlUi.dangerouslyDisableDeviceAuth: truewill make HTTP work, but it’s a big security downgrade (don’t do this on anything internet-reachable).
If you paste the exact URL you’re opening (and whether you can SSH to the gateway host), I’ll tell you which of the above fits best + any allowedOrigins/proxy bits you might need.
I am using a vpn to connect safely into openclaw, is that good enough to expose it over http
A VPN is good enough to keep the Gateway off the public internet, but it doesn’t make http://… a “secure context” for the browser.
So there are two separate answers:
1) Security: “is VPN + HTTP OK?”
If the Gateway is only reachable from inside your VPN, and you still require a gateway token/password (don’t run auth.mode: "none"), that’s a reasonable posture for a personal setup. Still not as clean as HTTPS, but the VPN is providing the encryption/authentication at the network layer.
2) Control UI: “will it work over HTTP?”
For the Control UI device identity, no — even over VPN, http://<vpn-ip> is still non-secure context, and the browser will block device identity. That’s why you keep seeing the error.
What to do instead (still works great over VPN)
- Best: SSH tunnel and use localhost:
Then openssh -N -L 18789:127.0.0.1:18789 user@<gateway-host>http://127.0.0.1:18789/(or your basePath). - Or: put HTTPS in front (Caddy/nginx) and only allow the VPN subnet through the firewall, and set
gateway.controlUi.allowedOriginsto yourhttps://…origin.
If you tell me what VPN you’re using (WireGuard? OpenVPN?) and what URL you want to open in the browser, I can suggest the simplest HTTPS approach for that setup.
I connected my ollama model to openclaw, but i am having issues with it not having access to similar tools like in claude code. For example, it does not have the exec read or write tool which i want. how do i enable this
.