Deploy on Render
Deploy Moltbot 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.
Prerequisites
- A Render account (free tier available)
- An API key from your preferred model provider
Deploy with a Render Blueprint
Clicking this link will:
- Create a new Render service from the
render.yamlBlueprint at the root of this repo. - Prompt you to set
SETUP_PASSWORD - Build the Docker image and deploy
Once deployed, your service URL follows the pattern https://<service-name>.onrender.com.
Understanding the Blueprint
Render Blueprints are YAML files that define your infrastructure. The render.yaml in this
repository configures everything needed to run Moltbot:
services:
- type: web
name: moltbot
runtime: docker
plan: starter
healthCheckPath: /health
envVars:
- key: PORT
value: "8080"
- key: SETUP_PASSWORD
sync: false # prompts during deploy
- key: MOLTBOT_STATE_DIR
value: /data/.moltbot
- key: MOLTBOT_WORKSPACE_DIR
value: /data/workspace
- key: MOLTBOT_GATEWAY_TOKEN
generateValue: true # auto-generates a secure token
disk:
name: moltbot-data
mountPath: /data
sizeGB: 1Key Blueprint features used:
| Feature | Purpose |
|---|---|
runtime: docker | Builds from the repo’s Dockerfile |
healthCheckPath | Render monitors /health and restarts unhealthy instances |
sync: false | Prompts for value during deploy (secrets) |
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 defaults to starter. To use free tier, change plan: free in your fork’s
render.yaml (but note: no persistent disk means config resets on each deploy).
After deployment
Complete the setup wizard
- Navigate to
https://<your-service>.onrender.com/setup - Enter your
SETUP_PASSWORD - Select a model provider and paste your API key
- Optionally configure messaging channels (Telegram, Discord, Slack)
- Click Run setup
Access the Control UI
The web dashboard is available at https://<your-service>.onrender.com/moltbot.
Render Dashboard features
Logs
View real-time logs in Dashboard → your service → Logs. Filter by:
- Build logs (Docker image creation)
- Deploy logs (service startup)
- Runtime logs (application output)
Shell access
For debugging, open a shell session via Dashboard → your service → Shell. The persistent disk is mounted at /data.
Environment variables
Modify variables in Dashboard → your service → Environment. Changes trigger an automatic redeploy.
Auto-deploy
If you use the original Moltbot repository, Render will not auto-deploy your Moltbot. To update it, run a manual Blueprint sync from the dashboard.
Custom domain
- Go to Dashboard → your service → Settings → Custom Domains
- Add your domain
- Configure DNS as instructed (CNAME to
*.onrender.com) - Render provisions a TLS certificate automatically
Scaling
Render supports horizontal and vertical scaling:
- Vertical: Change the plan to get more CPU/RAM
- Horizontal: Increase instance count (Standard plan and above)
For Moltbot, vertical scaling is usually sufficient. Horizontal scaling requires sticky sessions or external state management.
Backups and migration
Export your configuration and workspace at any time:
https://<your-service>.onrender.com/setup/exportThis downloads a portable backup you can restore on any Moltbot host.
Troubleshooting
Service won’t start
Check the deploy logs in the Render Dashboard. Common issues:
- Missing
SETUP_PASSWORD— the Blueprint prompts for this, but verify it’s set - Port mismatch — ensure
PORT=8080matches the Dockerfile’s exposed port
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 plan for always-on.
Data loss after redeploy
This happens on free tier (no persistent disk). Upgrade to a paid plan, or
regularly export your config via /setup/export.
Health check failures
Render 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:
- Build logs for errors
- Whether the container runs locally with
docker build && docker run