Use this file to discover all available pages before exploring further.
ZeroClaw exposes three distinct runtime modes depending on how much autonomy you need: agent for interactive or single-shot tasks, gateway for webhook serving, and daemon for the full autonomous long-running runtime. Each mode can be used independently or composed as part of a larger deployment.
agent
gateway
daemon
The agent command runs a single conversation turn or drops into an interactive REPL. It is the fastest way to send a prompt or iterate on a task without starting a persistent server.
# Single-shot messagezeroclaw agent -m "Hello, ZeroClaw!"# Interactive sessionzeroclaw agent# Use a specific provider for this sessionzeroclaw agent --provider openai-codex -m "hello"# Use a named auth profilezeroclaw agent --provider openai-codex --auth-profile openai-codex:work -m "hello"
Agent mode exits after each task completes. Use it for scripting, one-off queries, and testing your provider configuration. For continuous operation, use daemon instead.
Channels (Telegram, Discord, Slack, and others) require zeroclaw daemon to be running. agent alone does not start channel listeners.
The gateway command starts the webhook server without the full autonomous runtime. Use it when you want to accept inbound HTTP requests and forward them to the agent loop while managing other components separately.
# Default: bind to 127.0.0.1:42617zeroclaw gateway# Bind to a specific portzeroclaw gateway --port 42617# Random port (useful for security-hardened or parallel setups)zeroclaw gateway --port 0
On first start, a 6-digit pairing code is printed to the terminal. Exchange it for a bearer token via POST /pair with the X-Pairing-Code header. All subsequent /webhook requests require Authorization: Bearer <token>.Configure the gateway in ~/.zeroclaw/config.toml:
The gateway refuses to bind to 0.0.0.0 unless allow_public_bind = true is explicitly set in config or a tunnel is active. Do not set allow_public_bind = true on untrusted networks.
The daemon command starts the full autonomous runtime: gateway, channel listeners, cron scheduler, heartbeat engine, and the agent loop — all in a single foreground process.
# Start with config defaultszeroclaw daemon# Override bind address and port at runtimezeroclaw daemon --host 127.0.0.1 --port 42617# Public LAN bind (trusted networks only)zeroclaw daemon --host 0.0.0.0 --port 42617
Use daemon in production, on always-on hosts, and whenever you need the agent to respond to channel messages, run scheduled tasks, or execute periodic heartbeat workflows.After starting the daemon, verify all systems are healthy:
zeroclaw statuszeroclaw doctorzeroclaw channel doctor
When daemon is running, ZeroClaw reads periodic tasks from a HEARTBEAT.md file in your workspace. Each line starting with - in that file is treated as a task to execute at the configured interval. When no - entries exist in HEARTBEAT.md, the engine falls back to the message field in the [heartbeat] config block.
[heartbeat]enabled = falseinterval_minutes = 30message = "Check London time" # fallback task when HEARTBEAT.md has no `- ` entriestarget = "telegram" # announce channel: telegram, discord, slack, mattermostto = "123456789" # target recipient, chat, or channel ID
When target and to are set, the daemon posts heartbeat results to that channel and recipient automatically. Set enabled = false to turn off heartbeat entirely.
Heartbeat requires zeroclaw daemon (or the background service) to be running. It does not fire when only zeroclaw agent or zeroclaw gateway is active.
ZeroClaw includes a built-in task scheduler managed with the cron subcommand. The daemon must be running for tasks to fire.
# List all scheduled taskszeroclaw cron list# Add a task that repeats at a fixed intervalzeroclaw cron add-every 30m "Check inbox"# Schedule a task at a specific timezeroclaw cron add-at "2026-06-01T09:00:00" "Send reminder"# Run once at the next opportunityzeroclaw cron once "2026-06-01T09:00:00" "Deploy release"# Remove a scheduled task by IDzeroclaw cron remove <task-id># Update an existing taskzeroclaw cron update <task-id> "Updated task text"# Pause and resume without removingzeroclaw cron pause <task-id>zeroclaw cron resume <task-id>
Tasks that fire while the daemon is stopped are not backfilled.
zeroclaw estop lets you halt all autonomous task execution immediately without restarting the process, and resume it when safe. Use it during incidents or before applying a config change.
zeroclaw estop
Emergency stop suspends autonomous execution including cron tasks and heartbeat. Channel listeners remain active so you can communicate with a halted agent and issue a resume command.
Check that auth and system dependencies are healthy:
zeroclaw auth statuszeroclaw doctor
3
Start the daemon
Launch the full runtime with gateway, channels, and scheduler:
zeroclaw daemon
4
Confirm channels are live
zeroclaw channel doctorzeroclaw status
5
(Optional) Enable heartbeat
Set enabled = true in the [heartbeat] block of ~/.zeroclaw/config.toml, set interval_minutes, and create HEARTBEAT.md in your workspace with task lines starting with - .