
ZeaburOpenClaw 🦞 (formerly Clawdbot, Moltbot) is a personal AI assistant that runs locally and connects to multiple messaging platforms via a WebSocket-based Gateway architecture.
⚠️ This template uses ghcr.io/openclaw/openclaw:latest. OpenClaw 🦞 is in rapid development, so there may be undiscovered bugs. Changing versions may also cause stability issues.
⚠️ If you encounter any issues, feel free to check the GitHub issues for solutions or to report new ones. For Zeabur platform-related issues, please contact Zeabur support.
⚠️ macOS-specific software and packages (e.g. Homebrew) are not supported in this container environment. Please look for alternative solutions.
⚠️ This template requires a Dedicated Server on Zeabur. It cannot run on shared clusters.
⚠️ This template is pre-configured and ready to use - no need to run the setup wizard. If you do want to run the wizard, remember to set bind to lan mode. Refer to the official documentation for more advanced configuration.
gpt-5-mini): If you entered the API Key during deployment, go directly to step 3. You can also add ZEABUR_AI_HUB_API_KEY later via Variables tab in Zeabur dashboard (restart service after adding).anthropic/claude-opus-4-5. Go to Web UI Settings or add API key via environment variables. See: https://docs.openclaw.ai/providers/anthropicFor AI model configuration, see the official documentation.
Getting your bot token from BotFather:
/newbot to create a new bot123456789:ABCdefGHIjklMNOpqrsTUVwxyz)Adding the token to Zeabur:
TELEGRAM_BOT_TOKEN with your bot token"plugins": { "entries": { "telegram": { "enabled": true } } }. To disable, set enabled to false.Pairing your Telegram account:
/start to your bot in TelegramJN4MSY23)openclaw pairing approve telegram <code>openclaw pairing approve telegram <code>Approved telegram sender <user-id>.Step 1: Configure WhatsApp channel Add the following configuration via OpenClaw Web UI (Settings → Config) or paste it to chat:
"channels": {
"whatsapp": {
"selfChatMode": true,
"dmPolicy": "allowlist",
"allowFrom": ["+15551234567"]
}
}
Replace +15551234567 with your WhatsApp phone number (with country code). Restart the service after saving.
Step 2: Link WhatsApp
openclaw channels loginCreating a LINE Messaging API channel:
Adding credentials to Zeabur:
LINE_CHANNEL_ACCESS_TOKEN with your channel access tokenLINE_CHANNEL_SECRET with your channel secret"plugins": { "entries": { "line": { "enabled": true } } }Setting up the webhook:
https://<your-domain>/line/webhookhttps://<your-domain>/line/webhookPairing your LINE account:
JN4MSY23)openclaw pairing approve line <code>openclaw pairing approve line <code>Approved line sender <user-id>.For other messaging platforms (Discord, Slack, etc.), see the Channels documentation.
Verify your setup:
zeabur-ai/gpt-5-minianthropic/claude-opus-4-5 (requires API key)Switch model for current conversation (via chat commands):
/models - View available models/model <model-id> - Switch model for this conversation only (does not affect other conversations)Change default model for all new conversations (via Web UI Settings):
gemini-2.5-flash-lite, gpt-5-nano). If a model becomes unavailable, use /new to start a new conversation with the default model.Add AI providers (via Web UI Settings or environment variables):
Modify Zeabur AI Hub models (via Zeabur dashboard):
/opt/openclaw/providers/zeabur-ai-hub.json5/home/node/.openclaw/openclaw.json via Files tab or Web UI Settings. Add the following to models.providers.zeabur-ai.models array:{ "id": "gpt-5.2", "name": "GPT-5.2", "reasoning": false, "input": ["text", "image"], "cost": { "input": 1.5, "output": 12, "cacheRead": 0.15, "cacheWrite": 0 }, "contextWindow": 400000, "maxTokens": 8192 },
{ "id": "gpt-5.1", "name": "GPT-5.1", "reasoning": false, "input": ["text", "image"], "cost": { "input": 1.35, "output": 11, "cacheRead": 0.14, "cacheWrite": 0 }, "contextWindow": 400000, "maxTokens": 8192 },
{ "id": "gpt-5-nano", "name": "GPT-5 Nano", "reasoning": false, "input": ["text", "image"], "cost": { "input": 0.1, "output": 0.8, "cacheRead": 0.01, "cacheWrite": 0 }, "contextWindow": 400000, "maxTokens": 8192 },
{ "id": "glm-4.7", "name": "GLM-4.7", "reasoning": false, "input": ["text", "image"], "cost": { "input": 0.5, "output": 2, "cacheRead": 0.12, "cacheWrite": 0 }, "contextWindow": 204800, "maxTokens": 8192 },
{ "id": "glm-4.7-flash", "name": "GLM-4.7 Flash", "reasoning": false, "input": ["text", "image"], "cost": { "input": 0.25, "output": 1, "cacheRead": 0.06, "cacheWrite": 0 }, "contextWindow": 204800, "maxTokens": 8192 },
{ "id": "kimi-k2.5", "name": "Kimi K2.5", "reasoning": false, "input": ["text"], "cost": { "input": 0.45, "output": 2, "cacheRead": 0, "cacheWrite": 0 }, "contextWindow": 131072, "maxTokens": 8192 }
All data is stored under /home/node:
/home/node/.openclaw - Configuration, sessions, devices, and credentials/home/node/.openclaw/workspace - Workspace and memory files💡 Tip: We recommend creating a backup after completing your initial setup or making significant configuration changes.
Backup:
backup → Download from /home/node in Files tab (e.g. backup-1430.tar.gz)
cd /home/node && tar -czvf backup.tar.gz .openclawRestore:
/home/node folder in Files tabrestore <backup-file> --strip 2restore <backup-file>cd /home/node && tar -xzvf <backup-file>⚠️ Restore will overwrite existing configuration and data on the new service. Remember to also restore related environment variables (e.g. TELEGRAM_BOT_TOKEN). Channel backup/restore has only been tested with Telegram and WhatsApp.
Old version (without commands) data locations:
~/.clawdbot, workspace ~/clawd~/.moltbot or ~/.clawdbot, workspace ~/clawdNew OpenClaw location: /home/node/.openclaw (includes config and workspace)
OpenClaw has backward compatibility and will automatically read from .clawdbot and .moltbot folders, so you can extract directly without renaming.
Migration steps:
cd /home/node && tar -czvf backup.tar.gz .clawdbot .moltbot clawd 2>/dev/null (ignores missing folders)backup.tar.gz from Files tabbackup.tar.gz to /home/node folder in Files tabcd /home/node && tar -xzvf backup.tar.gz && rm backup.tar.gzThe clawdbot and moltbot CLI commands are still available for backward compatibility.
Service won't start after config change? Use rescue mode:
/opt/openclaw/rescue.sh (or sleep infinity for older versions without commands)Invalid config at /home/node/.openclaw/openclaw.json: - agents.list.0: Unrecognized key: "allowModels" — fix the config at /home/node/.openclaw/openclaw.json in the file browser, or open Command and run openclaw doctor --fix to remove unrecognized keys automatically/opt/openclaw/startup.sh && /opt/openclaw/start_gateway.sh
node dist/index.js gateway --allow-unconfigured --bind "${OPENCLAW_GATEWAY_BIND}" --port "${OPENCLAW_GATEWAY_PORT}" --token "${OPENCLAW_GATEWAY_TOKEN}"Update version: Go to Settings → Service Image Source → modify ghcr.io/openclaw/openclaw:<tag>.
Health check error Startup probe failed: dial tcp ... connect: connection refused? This means the service hasn't finished starting yet or the port is not ready. OpenClaw may need more time to start, especially on first launch. Try:
⚠️ This feature requires a fresh deployment from this template. Existing deployments do not have the Tailscale startup scripts — please redeploy to use this feature.
Instead of a public domain, you can use Tailscale to make OpenClaw accessible only within your private network (tailnet), without exposing it to the public internet.
Prerequisites:
Step 1: Set environment variables In the Zeabur dashboard Environment Variables tab, add:
TS_AUTHKEY (required): Your Tailscale Auth Key (tskey-auth-xxx). Get one at Tailscale Admin Console → Keys. Without this, Tailscale setup is skipped entirely.TS_HOSTNAME (optional): The machine name on your tailnet, which determines your access URL (https://<TS_HOSTNAME>.<tailnet>.ts.net). Defaults to openclaw if not set.Step 2: Switch startup command Go to Settings → Command, change to:
/opt/openclaw/startup.sh && /opt/openclaw/start_gateway_tailscale.sh
Restart the service.
Step 3: Install Tailscale on your device Install Tailscale on the device you want to access OpenClaw from (macOS, Windows, iOS, Android, Linux), and log in with the same Tailscale account used to create the Auth Key.
Step 4: First login to Web UI Once started, open in your browser (must be on the same tailnet):
https://<TS_HOSTNAME>.<your-tailnet>.ts.net
You can find your tailnet DNS name at Tailscale Admin Console → DNS, or check the full URL in the service Logs on Zeabur dashboard.
First visit will show "pairing required". Log in using either method:
https://<TS_HOSTNAME>.<your-tailnet>.ts.net?token=<GATEWAY_TOKEN>You can find the Gateway Token in the Zeabur dashboard Instructions tab or Environment Variables (OPENCLAW_GATEWAY_TOKEN).
Step 5: Connect OpenClaw app (Optional, macOS example)
wss://<TS_HOSTNAME>.<your-tailnet>.ts.netFor iOS and Android setup, see the official documentation.
Switch back to public domain mode:
Change the startup command back to /opt/openclaw/startup.sh && /opt/openclaw/start_gateway.sh and restart.
This template disables mDNS/Bonjour (OPENCLAW_DISABLE_BONJOUR=1) because Zeabur container hostnames can exceed the 63-byte DNS label limit. mDNS is only used for local network discovery (like AirPlay/Chromecast) and is not needed in cloud environments where services connect via internal DNS.
2026/2/16
latest to keep up with rapid security fixes2026/2/15
start_gateway_tailscale.sh for private HTTPS access via tailnet without exposing to public internet2026.2.142026/2/10
/v1/images/generations to /v1/chat/completions API, default model to gemini-2.5-flash-imagegpt-oss-120b, llama-3.3-70b, qwen-3-32 HTTP 500: add supportsStore: false compat flaggpt-oss-120b reasoning flag (set to true).zip format (Zeabur backup service)TELEGRAM_BOT_TOKEN, DISCORD_BOT_TOKEN, SLACK_BOT_TOKEN, SLACK_APP_TOKEN, LINE_CHANNEL_ACCESS_TOKEN, LINE_CHANNEL_SECRET) into config at startup2026/2/7
2026/2/4
backup and restore global commandsrescue.sh for troubleshooting when config is broken2026/2/2
Zeabur