ZeroClaw is a lightweight, Rust-based personal AI assistant that runs on your own server. It connects to messaging apps you already use — Telegram, WhatsApp, Discord, Slack and others — and acts as your always-on AI assistant. Your data stays on your server and never passes through a third-party service.
What's on your server
ZeroClaw binary (pre-installed, single Rust binary)
Supported AI providers: Anthropic, OpenAI, OpenRouter and 20+ others
Channels: Telegram, WhatsApp, Discord, Slack, Signal, iMessage, Matrix, Email and more
Gateway API: REST API and WebSocket at
127.0.0.1:42617Persistent long-term memory across conversations
Built-in cron scheduler for automated tasks
Complete the setup wizard
When you SSH into your VPS for the first time, the ZeroClaw setup wizard starts automatically:
ssh root@YOUR_IP_ADDRESS
The wizard guides you through choosing your AI provider, entering your API key, connecting your first messaging channel and configuring your workspace. Setup takes around 2-5 minutes.
If you close the SSH session before finishing, reconnect and run:
zeroclaw onboard
The wizard picks up where it left off and skips steps already completed.
Connect messaging channels
After initial setup, add more channels at any time:
zeroclaw channel bind-telegram YOUR_BOT_TOKEN zeroclaw channel list zeroclaw channel doctor
For WhatsApp, Discord, Slack and other channels, refer to the ZeroClaw documentation at https://github.com/zeroclaw-labs/zeroclaw/blob/master/docs/reference/api/channels-reference.md
Talk to your assistant
Single message:
zeroclaw agent -m "What's the weather in London today?"
Interactive chat mode:
zeroclaw agent
Type your messages and press Enter. Type exit to quit.
Run ZeroClaw as a background service
To keep your assistant running 24/7, install it as a systemd service:
zeroclaw service install zeroclaw service start
Check status, stop or restart:
zeroclaw service status zeroclaw service stop zeroclaw service restart
The gateway
The gateway is ZeroClaw's control plane. It exposes a REST API, WebSocket chat and a webhook endpoint for messaging channel integrations.
zeroclaw gateway # Start on default port 42617 zeroclaw gateway --port 8080 # Start on a specific port zeroclaw gateway --port 0 # Start on a random port
When the gateway starts it displays a one-time pairing code. Use this to authenticate your first API client or webhook integration.
Available endpoints:
# Health check curl http://127.0.0.1:42617/health # Send a message via webhook (after pairing) curl -X POST http://127.0.0.1:42617/webhook \ -H "Content-Type: application/json" \ -d '{"message": "Hello ZeroClaw"}' # Prometheus metrics curl http://127.0.0.1:42617/metrics
WebSocket chat is at ws://127.0.0.1:42617/ws/chat and the full REST API at http://127.0.0.1:42617/api/* (bearer token required after pairing).
Enable the web dashboard
The web dashboard is not active by default. To enable it, add the config line and restart the gateway:
sed -i '/^\[gateway\]/a web_dist_dir = "/root/.zeroclaw/web"' /root/.zeroclaw/config.toml
Verify it was added correctly:
grep -A3 '^\[gateway\]' /root/.zeroclaw/config.toml
Then re-run zeroclaw gateway and open an SSH tunnel from your local machine:
ssh -L 42617:127.0.0.1:42617 root@YOUR_VPS_PUBLIC_IP
Open http://localhost:42617 in your browser to access the dashboard.
Do not bind the gateway to your public IP without a firewall rule. Doing so exposes the dashboard to the internet.
Full autonomous runtime
The daemon starts everything at once: gateway, channels, scheduler and the agent runtime. This is the recommended way to run ZeroClaw in production if you are not using the systemd service.
zeroclaw daemon
Status and diagnostics
zeroclaw status # Check if ZeroClaw is running and show active channels zeroclaw doctor # Full system diagnostics
Run zeroclaw doctor after any update or if something stops working. It checks your configuration, provider connectivity, channel health and system resources.
Scheduled tasks
zeroclaw cron add "0 9 * * *" --prompt "Send me a morning briefing" zeroclaw cron list zeroclaw cron remove TASK_ID zeroclaw cron run TASK_ID
Memory
zeroclaw memory list zeroclaw memory get KEY zeroclaw memory stats
Update ZeroClaw
curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash zeroclaw doctor
Always run zeroclaw doctor after updating.
Configuration
The config file is at ~/.zeroclaw/config.toml. Minimal example:
default_provider = "anthropic" api_key = "sk-ant-..."
Edit with:
nano ~/.zeroclaw/config.toml
Full CLI reference
zeroclaw onboard # Run setup wizard zeroclaw status # Show runtime status zeroclaw doctor # System diagnostics zeroclaw agent # Interactive chat zeroclaw agent -m "message" # Single message zeroclaw gateway # Start control plane zeroclaw daemon # Start full autonomous runtime zeroclaw service install zeroclaw service start zeroclaw service stop zeroclaw service restart zeroclaw service status zeroclaw channel list zeroclaw channel doctor zeroclaw channel bind-telegram TOKEN zeroclaw cron list zeroclaw cron add "*/5 * * * *" --prompt "Check system health" zeroclaw cron remove ID zeroclaw cron run ID zeroclaw memory list zeroclaw memory get KEY zeroclaw memory stats zeroclaw auth login --provider anthropic zeroclaw auth status zeroclaw auth use --provider openai --profile work
Common issues
zeroclaw: command not found
The binary is not in your PATH. Run:
export PATH="/root/.cargo/bin:$PATH"
To make this permanent, add it to /root/.bashrc.
Channel not receiving messages
Run zeroclaw channel doctor to check connectivity. Make sure your bot token is correct and that you've sent /start to your Telegram bot.
Provider API errors
Run zeroclaw doctor and check the provider section. Verify your API key is correct and your account has available credits.
Assistant not responding after reboot
If installed as a service:
zeroclaw service status
If running manually:
zeroclaw daemon
