Deploy OpenClaw to Specific with a single command. Get a 24/7 AI agent connected to Telegram or Discord, with your entire config and workspace backed up to GitHub.
specific deploy- OpenClaw Gateway running 24/7
- Everything version controlled — config, cron jobs, workspace, and memory backed up to GitHub automatically
- Telegram or Discord configured out of the box (add/remove channels anytime via the UI)
- Google Workspace integration — connect Gmail, Calendar, Drive, Contacts, and Sheets with a few clicks via built-in OAuth flow
- Secrets never committed — raw API keys are replaced with
${ENV_VAR}references before pushing to GitHub - Prompt hardening — improve change visibility and reduce silent/partial edits so your OpenClaw project stays stable over time
- Setup UI — web-based onboarding, env var management, channel pairing, and gateway control
- Webhook proxy — single exposed port handles both the setup UI and gateway webhooks
-
Install the Specific CLI:
curl -fsSL https://specific.dev/install.sh | sh -
Deploy:
specific deploy
-
When prompted, set
setup_passwordto a strong password of your choice. -
Visit your app URL (e.g.
https://your-app.spcf.app) and complete the setup wizard.
Everything else — AI keys, GitHub credentials, channel tokens — is configured through the setup UI after your first login. The service can also be managed via dashboard.specific.dev.
The specific.hcl defines:
| Resource | Purpose |
|---|---|
secret "setup_password" |
Password for the setup UI (user-provided) |
secret "openclaw_gateway_token" |
Auto-generated 64-char token for gateway auth |
volume "data" |
Persistent storage for config, workspace, and credentials |
Environment variables passed to the container:
| Variable | Description |
|---|---|
PORT |
Specific-assigned port (auto) |
SETUP_PASSWORD |
Protects the setup UI |
OPENCLAW_GATEWAY_TOKEN |
Gateway authentication token |
ALPHACLAW_ROOT_DIR |
Root data directory on the volume |
After deploying, visit your app URL (e.g. https://your-app.spcf.app).
The welcome screen walks you through selecting your default model and entering the minimum required variables:
- Model (required): Pulled dynamically from your installed OpenClaw model catalog
- AI Provider auth (required for selected model): Anthropic API Key/Setup Token, OpenAI API Key, Gemini API Key, or OpenAI Codex OAuth
- GitHub: Personal access token + a repo (
owner/repo) for backing up your agent's state - Channel (at least one): Telegram Bot Token or Discord Bot Token
Each field includes instructions and links for how to get the value. Optional fields (like Brave Search API Key) can be filled in later from the Envars tab.
Model catalog note: Models are discovered at runtime via
openclaw models list --all --json. This keeps the setup UI aligned with the OpenClaw version installed in your deployment.Versioning note: Template builds intentionally install
alphaclaw@latestduring Docker build, so new deploys pick up the newest release automatically.Codex OAuth note: OpenClaw onboarding runs in non-interactive mode here. For OAuth-only Codex setups, the wrapper uses
--auth-choice skipand then applies your selectedopenai-codex/*model after onboarding.
Click Complete Setup — the server runs onboarding, configures channels, and pushes an initial commit to your GitHub repo. This takes 10–15 seconds.
DM your bot on Telegram (or Discord). The setup UI shows "Send a message to your bot on Telegram or Discord" with pending pairings polling every second. Click Approve to connect.
Once at least one channel is paired, the Google Workspace section appears:
- Click Set up Google and enter your OAuth client credentials (from Google Cloud Console)
- Select which permissions to grant
- Click Sign in with Google to complete the OAuth flow
- The UI shows API status for each service — click Enable API links for any that need enabling
DM your bot again — you're live!
Check your GitHub repo — you should see the initial commit with your agent's full config and workspace.
Memory search: For your agent to semantically search its own memory, you need either
OPENAI_API_KEYorGEMINI_API_KEYset. OpenClaw uses these to generate embeddings. Without one, memory recall won't work.
The Envars tab lets you:
- View and edit all configured environment variables
- See which vars are set (values masked by default, click Show to reveal)
- Add custom variables — supports pasting multiple
KEY=VALUElines at once - Delete custom variables with the ✕ button
- Save changes to the persistent env file
- Apply saved changes to bot runtime by clicking Restart Gateway after saving changes
The Models tab lets you:
- Set your primary model after onboarding
- Manage AI provider keys and Codex OAuth connection
Adding or removing a channel token (e.g. DISCORD_BOT_TOKEN) automatically enables/disables that channel in the OpenClaw config using openclaw channels add/remove.
| Variable | Group | Description |
|---|---|---|
ANTHROPIC_API_KEY |
AI Provider | From console.anthropic.com (recommended) |
ANTHROPIC_TOKEN |
AI Provider | From claude setup-token |
OPENAI_API_KEY |
AI Provider | From platform.openai.com |
(no env var) Codex OAuth |
AI Provider | Connected via setup UI OAuth flow (ChatGPT subscription/Codex); stored in OpenClaw auth profiles |
GEMINI_API_KEY |
AI Provider | From aistudio.google.com |
GITHUB_TOKEN |
GitHub | Personal access token with repo scope from github.com/settings/tokens |
GITHUB_WORKSPACE_REPO |
GitHub | owner/repo (or https://github.com/owner/repo) |
TELEGRAM_BOT_TOKEN |
Channels | From @BotFather · full guide |
DISCORD_BOT_TOKEN |
Channels | From Developer Portal · full guide |
BRAVE_API_KEY |
Tools | From brave.com/search/api — free tier available |
specific devThis installs dependencies and runs alphaclaw locally with secrets injected and a local volume for persistent data. Visit http://localhost:<port> to complete onboarding.
First time you DM the bot, it sends a pairing request. Approve it in the setup UI. Pairings poll every second when pending — if nothing appears, check that the channel token is correct in the Envars tab.
- Check logs for errors
- Verify your channel token is correct (Envars tab)
- Try clicking Restart in the General tab
- Check gateway status — should show green "running"
- Check that AI provider credentials are valid
- Check logs for the specific error — common cause is a missing env var referenced in
openclaw.json
If the service repeatedly crashes or restarts, it may be running out of memory. Increase the service memory limit in the Specific dashboard.
The channel's env var is empty or missing. Go to the Envars tab, add the token, and save. The channel will be automatically enabled in the config.