Skip to main content
Run everything below in your OpenClaw container’s App terminal (hPanel → your app → App terminal), as root. The gateway runs as the node user (HOME=/data), so Sesame commands are prefixed with runuser -u node --. Installing into /data and wrapping via the compose file keeps the setup alive across restarts, reboots, and container recreates — only /data and the compose file survive a recreate, and both hold everything Sesame needs. Requires the cloud broker at getsesame.dev. See the main OpenClaw guide for the concepts (secrets, injection, approvals).

1. Install + register (container shell)

2. Wrap the gateway (container shell)

3. Point the compose file at it (host shell or panel YAML editor)

In docker-compose.yml, under the openclaw service, add both keys (setting entrypoint clears the image’s default command, so restate it):
Apply:
Put these in docker-compose.yml itself, not docker-compose.override.yml. The hPanel deploy runs docker compose -f docker-compose.yml up -d, which never merges an override — the container starts unwrapped, with no error.

4. Add your secrets and verify

In getsesame.devSecrets → Add, add a secret for each host your agent calls — the preset fills the injection mode. Set an auto-approve policy on your model host so chat doesn’t pause every turn; keep per-call approval on side-effecting hosts. Confirm a brokered call succeeds. Pick a host you’ve confirmed has a valid secret — the check only proves injection for that specific host:
A 401/403 here means the broker injected a key the host rejected — the secret for that host is missing or invalid — not that the wrapper is broken. Fix that host’s secret, or test against a different host you know is good. Then send a chat in OpenClaw and approve the first call. The reply arrives with your real key injected server-side — OpenClaw never sees it.

Confirm the gateway itself is wrapped

The check above wraps a new curl, so it passes even when the running gateway is unwrapped — and sesame status reports registration, not mediation. Check the live process from the host shell:
Check 3 is decisive: no HTTPS_PROXY on the gateway’s own PID means its calls bypass Sesame entirely.

Troubleshooting

Running this with an agent? Give it the steps above and have it run them in the container’s App terminal — pausing for the browser approval at sesame login, and confirming step 4’s brokered call returns 200.