Hosting
Upstash Box
Run a persistent OpenClaw Gateway on Upstash Box, a managed Linux environment with keep-alive lifecycle support.
Use an SSH tunnel for dashboard access. Do not expose the Gateway port directly to the public internet.
Prerequisites
- Upstash account
- Keep-alive Upstash Box
- SSH client on your local machine
Create a Box
Create a keep-alive Box in the Upstash Console. Note the Box ID (for example
right-flamingo-14486) and your Box API key.
Upstash maintains its current OpenClaw Box walkthrough at OpenClaw Setup.
Connect with an SSH tunnel
Forward the OpenClaw dashboard port to your local machine. Use your Box API key as the SSH password when prompted:
ssh -o ServerAliveInterval=15 -o ServerAliveCountMax=3 -L 18789:127.0.0.1:18789 <box-id>@us-east-1.box.upstash.comThe keepalive options reduce idle tunnel drops during onboarding.
Install OpenClaw
Inside the Box, use the following command on npm 12 or npm 11.16+. On npm 11.15
and earlier, omit --allow-scripts=openclaw.
sudo npm install -g openclaw --allow-scripts=openclawRun onboarding
openclaw onboard --no-install-daemonFollow the prompts. Copy the dashboard URL and token when onboarding finishes.
Start the Gateway
Keep the Gateway on loopback for the SSH tunnel, then start one unsupervised process in the background:
openclaw config set gateway.bind loopbacknohup openclaw gateway run > gateway.log 2>&1 &openclaw doctor --jsonWith the SSH tunnel active, open the dashboard URL locally:
http://127.0.0.1:18789/#token=<your-token>Auto-restart
Set this command as the Box init script so the Gateway restarts when the Box starts:
nohup openclaw gateway run > gateway.log 2>&1 &Onboarding deliberately skips daemon installation in this guide. The Box init script is the single owner of Gateway startup, so two processes do not contend for the same lock and port.
Troubleshooting
If SSH freezes during onboarding, reconnect with a clean SSH config and keepalives:
ssh -F /dev/null -o ControlMaster=no -o ServerAliveInterval=15 -o ServerAliveCountMax=3 -L 18789:127.0.0.1:18789 <box-id>@us-east-1.box.upstash.comThis bypasses stale local ~/.ssh/config settings and keeps the tunnel active
through idle network periods.