--- title: 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](https://render.com) (free tier available) - An API key from your preferred [model provider](/providers) ## Alternative: Wrapper with Installer For a deployment with a built-in installer and proxied Control UI (including WebSocket support), see community wrappers (e.g. in the ecosystem docs). Such wrappers may provide: - **Install Wizard** at `/install` (password protected) - **Control UI** reverse-proxied with WebSocket support - **Export / Import backups** to migrate deployments ## Deploy with a Render Blueprint Deploy to Render Clicking this link will: 1. Create a new Render service from the `render.yaml` Blueprint at the root of this repo. 2. Prompt you to set `MOLTBOT_GATEWAY_TOKEN` (or set it in **Environment** after deploy). 3. Build the Docker image and deploy. Once deployed, your service URL follows the pattern `https://.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: ```yaml services: - type: web name: moltbot runtime: docker plan: starter dockerCommand: /bin/sh scripts/render-start.sh envVars: - key: PORT value: "8080" - key: MOLTBOT_GATEWAY_TOKEN sync: false # set in Render dashboard (secret) - key: MOLTBOT_STATE_DIR value: /data/.moltbot - key: MOLTBOT_WORKSPACE_DIR value: /data/workspace # LLM Provider API Keys (set these in Render dashboard as secrets) - key: ANTHROPIC_API_KEY sync: false - key: OPENAI_API_KEY sync: false - key: GEMINI_API_KEY sync: false - key: GROQ_API_KEY sync: false - key: OPENROUTER_API_KEY sync: false # Add other provider keys as needed (MISTRAL_API_KEY, XAI_API_KEY, etc.) disk: name: moltbot-data mountPath: /data sizeGB: 1 ``` Key Blueprint features used: | Feature | Purpose | |---------|---------| | `runtime: docker` | Builds from the repo's Dockerfile | | `dockerCommand` | Runs `scripts/render-start.sh` to create config and start the gateway | | `sync: false` | Prompts for value during deploy (secrets) | | `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 ### Set the gateway token 1. In Render **Dashboard → your service → Environment**, set `MOLTBOT_GATEWAY_TOKEN` to a long random secret (or generate one with `openssl rand -hex 32`). 2. Save changes; Render will redeploy. ### Access the Control UI The web dashboard is at `https://.onrender.com/moltbot`. Open a tokenized URL (e.g. from the service logs or your own link that includes the token) or paste the token into the Control UI settings to authenticate. ## 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. #### Configuring LLM API Keys After deployment, you need to configure at least one LLM provider API key. Set these in the Render dashboard: **Most common providers:** - **Anthropic (Claude)**: `ANTHROPIC_API_KEY` — Get from [Anthropic Console](https://console.anthropic.com/) - **OpenAI (GPT)**: `OPENAI_API_KEY` — Get from [OpenAI Platform](https://platform.openai.com/api-keys) - **Google Gemini**: `GEMINI_API_KEY` — Get from [Google AI Studio](https://aistudio.google.com/app/apikey) - **Groq**: `GROQ_API_KEY` — Get from [Groq Console](https://console.groq.com/keys) - **OpenRouter**: `OPENROUTER_API_KEY` — Get from [OpenRouter](https://openrouter.ai/keys) **Additional providers:** - `MISTRAL_API_KEY` — Mistral AI - `XAI_API_KEY` — xAI (Grok) - `OPENCODE_API_KEY` — OpenCode Zen - `DEEPGRAM_API_KEY` — Deepgram (speech-to-text) To set API keys: 1. Go to **Dashboard → your service → Environment** 2. Click **Add Environment Variable** 3. Enter the variable name (e.g., `ANTHROPIC_API_KEY`) 4. Enter your API key value 5. Click **Save Changes** The service will automatically redeploy with the new environment variable. **Alternative: Config file method** You can also configure API keys in the `moltbot.json` config file (under `MOLTBOT_STATE_DIR` or `~/.moltbot`) using the `env` block, though environment variables are preferred for security: ```json5 { "env": { "ANTHROPIC_API_KEY": "sk-ant-...", "OPENAI_API_KEY": "sk-..." } } ``` See [Model Providers](/concepts/model-providers) for a complete list of supported providers and their configuration. ### Auto-deploy If you use a fork, Render will not auto-deploy from the upstream repo. To update, run a manual Blueprint sync from the dashboard or push to your connected branch. ## Custom domain 1. Go to **Dashboard → your service → Settings → Custom Domains** 2. Add your domain 3. Configure DNS as instructed (CNAME to `*.onrender.com`) 4. 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 If your deployment exposes a setup/export endpoint, you can export configuration and workspace from: ``` https://.onrender.com/setup/export ``` Otherwise, backup the persistent disk contents (e.g. under `/data/.moltbot`) via Render Shell or your own backup process. ## Troubleshooting ### Service won't start Check the deploy logs in the Render Dashboard. Common issues: - Missing `MOLTBOT_GATEWAY_TOKEN` — set it in **Environment** (Dashboard → your service → Environment) - Port mismatch — ensure `PORT=8080` matches the gateway 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 If Render is configured with `healthCheckPath: /health`, it expects a 200 from `/health` within 30 seconds. This blueprint does not set a health check by default. If deploys fail, check deploy logs and that `scripts/render-start.sh` runs correctly (config written under `MOLTBOT_STATE_DIR` or `~/.moltbot`, then gateway started with the token).