{ "title": "Deploy on Render", "content": "Source: https://docs.openclaw.ai/render\n\nDeploy OpenClaw on Render using Infrastructure as Code. The included `render.yaml` Blueprint defines your entire stack declaratively, service, disk, environment variables, so you can deploy with a single click and version your infrastructure alongside your code.\n\n* A [Render account](https://render.com) (free tier available)\n* An API key from your preferred [model provider](/providers)\n\n## Deploy with a Render Blueprint\n\n\n Deploy to Render\n\n\nClicking this link will:\n\n1. Create a new Render service from the `render.yaml` Blueprint at the root of this repo.\n2. Prompt you to set `SETUP_PASSWORD`\n3. Build the Docker image and deploy\n\nOnce deployed, your service URL follows the pattern `https://.onrender.com`.\n\n## Understanding the Blueprint\n\nRender Blueprints are YAML files that define your infrastructure. The `render.yaml` in this\nrepository configures everything needed to run OpenClaw:\n\nKey Blueprint features used:\n\n| Feature | Purpose |\n| --------------------- | ---------------------------------------------------------- |\n| `runtime: docker` | Builds from the repo's Dockerfile |\n| `healthCheckPath` | Render monitors `/health` and restarts unhealthy instances |\n| `sync: false` | Prompts for value during deploy (secrets) |\n| `generateValue: true` | Auto-generates a cryptographically secure value |\n| `disk` | Persistent storage that survives redeploys |\n\n| Plan | Spin-down | Disk | Best for |\n| --------- | ----------------- | ------------- | ----------------------------- |\n| Free | After 15 min idle | Not available | Testing, demos |\n| Starter | Never | 1GB+ | Personal use, small teams |\n| Standard+ | Never | 1GB+ | Production, multiple channels |\n\nThe Blueprint defaults to `starter`. To use free tier, change `plan: free` in your fork's\n`render.yaml` (but note: no persistent disk means config resets on each deploy).\n\n### Complete the setup wizard\n\n1. Navigate to `https://.onrender.com/setup`\n2. Enter your `SETUP_PASSWORD`\n3. Select a model provider and paste your API key\n4. Optionally configure messaging channels (Telegram, Discord, Slack)\n5. Click **Run setup**\n\n### Access the Control UI\n\nThe web dashboard is available at `https://.onrender.com/openclaw`.\n\n## Render Dashboard features\n\nView real-time logs in **Dashboard → your service → Logs**. Filter by:\n\n* Build logs (Docker image creation)\n* Deploy logs (service startup)\n* Runtime logs (application output)\n\nFor debugging, open a shell session via **Dashboard → your service → Shell**. The persistent disk is mounted at `/data`.\n\n### Environment variables\n\nModify variables in **Dashboard → your service → Environment**. Changes trigger an automatic redeploy.\n\nIf you use the original OpenClaw repository, Render will not auto-deploy your OpenClaw. To update it, run a manual Blueprint sync from the dashboard.\n\n1. Go to **Dashboard → your service → Settings → Custom Domains**\n2. Add your domain\n3. Configure DNS as instructed (CNAME to `*.onrender.com`)\n4. Render provisions a TLS certificate automatically\n\nRender supports horizontal and vertical scaling:\n\n* **Vertical**: Change the plan to get more CPU/RAM\n* **Horizontal**: Increase instance count (Standard plan and above)\n\nFor OpenClaw, vertical scaling is usually sufficient. Horizontal scaling requires sticky sessions or external state management.\n\n## Backups and migration\n\nExport your configuration and workspace at any time:\n\nThis downloads a portable backup you can restore on any OpenClaw host.\n\n### Service won't start\n\nCheck the deploy logs in the Render Dashboard. Common issues:\n\n* Missing `SETUP_PASSWORD` — the Blueprint prompts for this, but verify it's set\n* Port mismatch — ensure `PORT=8080` matches the Dockerfile's exposed port\n\n### Slow cold starts (free tier)\n\nFree 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 plan for always-on.\n\n### Data loss after redeploy\n\nThis happens on free tier (no persistent disk). Upgrade to a paid plan, or\nregularly export your config via `/setup/export`.\n\n### Health check failures\n\nRender expects a 200 response from `/health` within 30 seconds. If builds succeed but deploys fail, the service may be taking too long to start. Check:\n\n* Build logs for errors\n* Whether the container runs locally with `docker build && docker run`", "code_samples": [ { "code": "Key Blueprint features used:\n\n| Feature | Purpose |\n| --------------------- | ---------------------------------------------------------- |\n| `runtime: docker` | Builds from the repo's Dockerfile |\n| `healthCheckPath` | Render monitors `/health` and restarts unhealthy instances |\n| `sync: false` | Prompts for value during deploy (secrets) |\n| `generateValue: true` | Auto-generates a cryptographically secure value |\n| `disk` | Persistent storage that survives redeploys |\n\n## Choosing a plan\n\n| Plan | Spin-down | Disk | Best for |\n| --------- | ----------------- | ------------- | ----------------------------- |\n| Free | After 15 min idle | Not available | Testing, demos |\n| Starter | Never | 1GB+ | Personal use, small teams |\n| Standard+ | Never | 1GB+ | Production, multiple channels |\n\nThe Blueprint defaults to `starter`. To use free tier, change `plan: free` in your fork's\n`render.yaml` (but note: no persistent disk means config resets on each deploy).\n\n## After deployment\n\n### Complete the setup wizard\n\n1. Navigate to `https://.onrender.com/setup`\n2. Enter your `SETUP_PASSWORD`\n3. Select a model provider and paste your API key\n4. Optionally configure messaging channels (Telegram, Discord, Slack)\n5. Click **Run setup**\n\n### Access the Control UI\n\nThe web dashboard is available at `https://.onrender.com/openclaw`.\n\n## Render Dashboard features\n\n### Logs\n\nView real-time logs in **Dashboard → your service → Logs**. Filter by:\n\n* Build logs (Docker image creation)\n* Deploy logs (service startup)\n* Runtime logs (application output)\n\n### Shell access\n\nFor debugging, open a shell session via **Dashboard → your service → Shell**. The persistent disk is mounted at `/data`.\n\n### Environment variables\n\nModify variables in **Dashboard → your service → Environment**. Changes trigger an automatic redeploy.\n\n### Auto-deploy\n\nIf you use the original OpenClaw repository, Render will not auto-deploy your OpenClaw. To update it, run a manual Blueprint sync from the dashboard.\n\n## Custom domain\n\n1. Go to **Dashboard → your service → Settings → Custom Domains**\n2. Add your domain\n3. Configure DNS as instructed (CNAME to `*.onrender.com`)\n4. Render provisions a TLS certificate automatically\n\n## Scaling\n\nRender supports horizontal and vertical scaling:\n\n* **Vertical**: Change the plan to get more CPU/RAM\n* **Horizontal**: Increase instance count (Standard plan and above)\n\nFor OpenClaw, vertical scaling is usually sufficient. Horizontal scaling requires sticky sessions or external state management.\n\n## Backups and migration\n\nExport your configuration and workspace at any time:", "language": "unknown" } ], "headings": [ { "level": "h2", "text": "Prerequisites", "id": "prerequisites" }, { "level": "h2", "text": "Deploy with a Render Blueprint", "id": "deploy-with-a-render-blueprint" }, { "level": "h2", "text": "Understanding the Blueprint", "id": "understanding-the-blueprint" }, { "level": "h2", "text": "Choosing a plan", "id": "choosing-a-plan" }, { "level": "h2", "text": "After deployment", "id": "after-deployment" }, { "level": "h3", "text": "Complete the setup wizard", "id": "complete-the-setup-wizard" }, { "level": "h3", "text": "Access the Control UI", "id": "access-the-control-ui" }, { "level": "h2", "text": "Render Dashboard features", "id": "render-dashboard-features" }, { "level": "h3", "text": "Logs", "id": "logs" }, { "level": "h3", "text": "Shell access", "id": "shell-access" }, { "level": "h3", "text": "Environment variables", "id": "environment-variables" }, { "level": "h3", "text": "Auto-deploy", "id": "auto-deploy" }, { "level": "h2", "text": "Custom domain", "id": "custom-domain" }, { "level": "h2", "text": "Scaling", "id": "scaling" }, { "level": "h2", "text": "Backups and migration", "id": "backups-and-migration" }, { "level": "h2", "text": "Troubleshooting", "id": "troubleshooting" }, { "level": "h3", "text": "Service won't start", "id": "service-won't-start" }, { "level": "h3", "text": "Slow cold starts (free tier)", "id": "slow-cold-starts-(free-tier)" }, { "level": "h3", "text": "Data loss after redeploy", "id": "data-loss-after-redeploy" }, { "level": "h3", "text": "Health check failures", "id": "health-check-failures" } ], "url": "llms-txt#deploy-on-render", "links": [] }