Deploy OpenClaw on Render with Infrastructure-as-Code
Learn how to deploy OpenClaw on Render using the render.yaml Blueprint, which declares the service, disk, and environment variables together. This guide is for developers who want a simple, repeatable deployment.
Read this when
- Deploying OpenClaw to Render
- You want a declarative cloud deploy with Render Blueprints
Deploy OpenClaw on Render with the repository's render.yaml Blueprint. This single file declares the service, disk, and environment variables together.
Prerequisites
- A Render account (free tier is available)
- An API key from your chosen model provider
Deploy
This action spins up a Render service from render.yaml, compiles the Docker image, and launches it. Your service URL follows the format https://<service-name>.onrender.com.
The Blueprint
services:
- type: web
name: openclaw
runtime: docker
plan: starter
dockerCommand: node openclaw.mjs gateway --allow-unconfigured
healthCheckPath: /startupz
envVars:
- key: OPENCLAW_GATEWAY_PORT
value: "8080"
- key: OPENCLAW_STATE_DIR
value: /data/.openclaw
- key: OPENCLAW_WORKSPACE_DIR
value: /data/workspace
- key: OPENCLAW_GATEWAY_TOKEN
generateValue: true # auto-generates a secure token
disk:
name: openclaw-data
mountPath: /data
sizeGB: 1
| Feature | Purpose |
|---|---|
runtime: docker | Builds from the repo's Dockerfile |
healthCheckPath | Render admits traffic after /startupz reports startup complete |
generateValue: true | Auto-generates a cryptographically secure value |
disk | Persistent storage that survives redeploys |
Choosing a plan
| Plan | Spin-down | Disk | Best for |
|---|---|---|---|
| Free | After 15 min idle | Not available | Testing, demos |
| Starter | Never | 1GB+ | Personal use, small teams |
| Standard+ | Never | 1GB+ | Production, multiple channels |
The Blueprint's default is starter. To switch to the free tier, set plan: free and remove the disk: block from your fork's render.yaml; Render will reject a Blueprint that links a persistent disk to a free instance. Without that disk, OpenClaw's state is wiped on each deploy.
After deployment
Access the Control UI
The web dashboard can be reached at https://<your-service>.onrender.com/. Authenticate with the shared secret: the auto-generated OPENCLAW_GATEWAY_TOKEN (located in Dashboard → your service → Environment), or your password if you've enabled password auth.
Logs
Dashboard → your service → Logs displays build logs (Docker image creation), deploy logs (service startup), and runtime logs (application output).
Shell access
Dashboard → your service → Shell launches a shell session. The persistent disk is mounted at /data.
Environment variables
Modify variables in Dashboard → your service → Environment. Any change triggers an automatic redeploy.
Auto-deploy
Render redeploys automatically whenever the connected repo's branch receives a new commit. If you deployed directly from openclaw/openclaw rather than your own fork, you lack push access to trigger that, so update by running a manual Blueprint sync from the Dashboard, or point the service at your own fork.
Custom domain
- Dashboard → your service → Settings → Custom Domains
- Add your domain
- Configure DNS as instructed (CNAME to
*.onrender.com) - Render provisions a TLS certificate automatically
Scaling
- Vertical: upgrade the plan for more CPU/RAM. Usually sufficient for OpenClaw.
- Horizontal: raise the instance count (Standard plan and above). Requires sticky sessions or external state management since OpenClaw keeps runtime state on the local disk.
Backups and migration
From the Render Dashboard shell, export state, config, auth profiles, and workspace at any time:
openclaw backup create
openclaw backup restore <archive.tar.gz> --target <fresh-directory>
Restore verifies and extracts into a fresh staging directory; activation is a separate offline step. See Restore a full archive for the rollback warnings and activation sequence.
Troubleshooting
Service will not start
Review the deploy logs in the Render Dashboard. Frequent problems:
- Missing
OPENCLAW_GATEWAY_TOKEN, confirm it is set in Dashboard → Environment - Port mismatch, ensure
OPENCLAW_GATEWAY_PORT=8080so the gateway binds to the port Render expects
Slow cold starts (free tier)
Free tier services spin down after 15 minutes of inactivity; the first request after spin-down takes a few seconds while the container starts. Upgrade to Starter for always-on.
Data loss after redeploy
Happens on the free tier (no persistent disk). Upgrade to a paid plan, or regularly export a backup with openclaw backup create from the Render shell.
Health check failures
If builds succeed but deploys fail, the service may be taking too long to start or /startupz may not be reachable. Check:
- Build logs for errors
- Whether the container runs locally with
docker build && docker run
Next steps
- Set up messaging channels: Channels
- Configure the Gateway: Gateway configuration
- Keep OpenClaw up to date: Updating