campaign Announcements

Critical

We are not affiliated with openagen/zeroclaw or zeroclaw.org. Use only the official repository and verified ZeroClaw social accounts as the source of truth.

Important

No official fundraising/investment program has launched. Ignore impersonation attempts and unofficial claims.

Important

Anthropic OAuth terms changed (2026-02-19). Avoid Claude Code OAuth integrations temporarily until policy risk is clarified.

info Introduction

ZeroClaw is a fast, small, fully autonomous AI assistant infrastructure built in Rust. A single static binary runs on $10 hardware with <5MB RAM — 99% less memory than Node-based alternatives. Every subsystem is a trait: swap providers, channels, tools, memory backends, and tunnels with a config change.

memory
Single Binary
3.4MB release, <10ms cold start on 0.8GHz
swap_horiz
Trait-Driven
Provider, Channel, Tool, Memory, Tunnel — all swappable
shield
Secure by Default
Localhost-only gateway, pairing OTP, workspace scoping
developer_board
Deploy Anywhere
ARM, x86, RISC-V — Raspberry Pi to cloud

download Installation

ZeroClaw ships as a single Rust binary. Install via Homebrew, bootstrap script, or manual source build.

Prerequisites: Rust stable toolchain (rustup), Git, an AI provider API key (OpenRouter, Anthropic, OpenAI, Ollama, etc.)

Homebrew (macOS / Linuxbrew)

# macOS / Linuxbrew
brew install zeroclaw

One-Click Bootstrap (Recommended)

git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./bootstrap.sh

# With system deps + Rust install on fresh machines
./bootstrap.sh --install-system-deps --install-rust

# With onboarding in the same flow
./bootstrap.sh --onboard --api-key "sk-..." --provider openrouter

# Remote one-liner
curl -fsSL https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/main/scripts/bootstrap.sh | bash

Manual Build & Install

git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
cargo build --release --locked
cargo install --path . --force --locked

# Ensure ~/.cargo/bin is in PATH
export PATH="$HOME/.cargo/bin:$PATH"

Dev fallback: prefix commands with cargo run --release -- to skip global install.

rocket_launch Quick Start

Run onboarding once to set up your config, then start chatting.

# Interactive onboarding wizard
zeroclaw onboard --interactive

# Or quick setup (no prompts)
zeroclaw onboard --api-key sk-... --provider openrouter --model "openrouter/auto"

# Quickly repair channels/allowlists only
zeroclaw onboard --channels-only

# Chat with the agent
zeroclaw agent -m "Hello, ZeroClaw!"

# Interactive mode
zeroclaw agent

# Start gateway + daemon
zeroclaw gateway
zeroclaw daemon

# Check status
zeroclaw status
zeroclaw doctor
zeroclaw channel doctor

# Bind Telegram identity into allowlist
zeroclaw channel bind-telegram 123456789

# Service + migration helpers
zeroclaw service install
zeroclaw config schema
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw

Config location: ~/.zeroclaw/config.toml — created automatically by zeroclaw onboard.

terminal Commands

ZeroClaw is a single binary with subcommands for every workflow.

CommandDescription
zeroclaw onboardInteractive or quick setup — creates config, sets API key
zeroclaw onboard --channels-onlyReconfigure channel credentials/allowlists only
zeroclaw agentChat mode (interactive REPL or single -m message)
zeroclaw gatewayStart webhook server (default 127.0.0.1:3000)
zeroclaw daemonStart full autonomous long-running runtime
zeroclaw statusShow full system status
zeroclaw auth statusInspect active auth profile and token state
zeroclaw doctorDiagnose daemon/scheduler/channel freshness
zeroclaw channel listList configured channels and status
zeroclaw channel doctorCheck channel health and readiness
zeroclaw channel bind-telegram <id>Authorize a Telegram user ID into allowlist
zeroclaw service installInstall user-level background service
zeroclaw service start/stop/statusManage background service lifecycle
zeroclaw cronManage scheduled tasks (list/add/remove/pause/resume)
zeroclaw providersList supported providers and aliases
zeroclaw modelsRefresh provider model catalogs
zeroclaw auth loginLogin with subscription auth profiles
zeroclaw skillsList/install/remove skills
zeroclaw config schemaPrint full config contract JSON Schema
zeroclaw migrate openclawImport data from OpenClaw runtime
zeroclaw integrations info <name>Get integration setup guidance
zeroclaw hardwareUSB discover/introspect/info commands
zeroclaw peripheralManage and flash hardware peripherals

smart_toy Agent Mode

The zeroclaw agent command runs an AI assistant that can use tools, recall memory, and execute tasks.

# Single message
zeroclaw agent -m "List files in the current directory"

# Interactive REPL
zeroclaw agent

# Use a specific provider/model
zeroclaw agent --provider anthropic --model claude-sonnet-4-6 -m "Hello"

# Use a subscription auth profile
zeroclaw agent --provider openai-codex --auth-profile openai-codex:work -m "Hello"

dns Gateway & Daemon

The gateway exposes a webhook server for channel integrations. The daemon runs the full autonomous runtime including heartbeat, cron, and channels.

# Start the gateway (webhook server, default 127.0.0.1:3000)
zeroclaw gateway
zeroclaw gateway --port 0        # random port (security hardened)

# Start full autonomous runtime
zeroclaw daemon

# Manage as a background service
zeroclaw service install
zeroclaw service status
Security: Gateway binds 127.0.0.1 by default. Use a tunnel (Cloudflare, Tailscale, ngrok) to expose it externally.

forum Channels

Channels let ZeroClaw receive and reply to messages from Telegram, Discord, Slack, Mattermost, iMessage, Matrix, Signal, WhatsApp, Email, IRC, Lark, DingTalk, and more. All channels use a deny-by-default allowlist.

# Telegram
[channels_config.telegram]
bot_token = "123456:ABC..."
allowed_users = ["your_username"]   # or ["*"] for all

# Discord
[channels_config.discord]
bot_token = "..."
allowed_users = ["your-discord-id"]

# Slack
[channels_config.slack]
bot_token = "xoxb-..."
allowed_users = ["UMEMBERID"]

# Start channels via daemon
zeroclaw daemon

Tip: Run zeroclaw onboard --channels-only to reconfigure channels without touching other settings.

build Tools

Tools are capabilities the agent can invoke during a conversation. All built-in tools are sandboxed and workspace-scoped by default.

# Built-in tools:
# shell, file_read, file_write, memory, cron,
# git, http_request, browser (opt-in), composio (opt-in),
# delegate, hardware, screenshot, pushover

# Enable browser tools
[browser]
enabled = true
allowed_domains = ["docs.rs", "github.com"]

# Enable Composio (1000+ OAuth integrations)
[composio]
enabled = true
api_key = "cmp_..."

database Memory System

Full-stack search engine with zero external dependencies — no Pinecone, no Elasticsearch, no LangChain.

Vector DB
SQLite BLOB + cosine similarity
Keyword Search
FTS5 + BM25 scoring
Hybrid Merge
Custom weighted merge
Cache
LRU eviction policy
[memory]
backend = "sqlite"             # sqlite | lucid | postgres | markdown | none
auto_save = true
embedding_provider = "none"    # none | openai | custom:https://...
vector_weight = 0.7
keyword_weight = 0.3

# PostgreSQL remote backend
# [storage.provider.config]
# provider = "postgres"
# db_url = "postgres://user:pass@host:5432/zeroclaw"

settings Config File

Config lives at ~/.zeroclaw/config.toml — created by zeroclaw onboard.

api_key = "sk-..."
default_provider = "openrouter"
default_model = "anthropic/claude-sonnet-4-6"
default_temperature = 0.7

[memory]
backend = "sqlite"
auto_save = true

[gateway]
port = 3000
host = "127.0.0.1"
require_pairing = true
allow_public_bind = false

[autonomy]
level = "supervised"
workspace_only = true
allowed_commands = ["git", "npm", "cargo", "ls", "cat", "grep"]

[runtime]
kind = "native"

[tunnel]
provider = "none"

[secrets]
encrypt = true

model_training AI Providers

ZeroClaw supports 28+ built-in providers plus any OpenAI-compatible or Anthropic-compatible custom endpoint.

ProviderDescription
openrouterMulti-model router (recommended)
anthropicClaude models
openaiGPT models
ollamaLocal or remote Ollama
geminiGoogle Gemini
custom:https://...Any OpenAI-compatible endpoint

Run zeroclaw providers to list all available providers and aliases.

key Environment Variables

Provider API keys and optional overrides.

# Provider API keys
OPENROUTER_API_KEY=sk-or-v1-...
ANTHROPIC_API_KEY=sk-ant-...
OPENAI_API_KEY=sk-...

# Lucid memory backend
ZEROCLAW_LUCID_CMD=/usr/local/bin/lucid
ZEROCLAW_LUCID_BUDGET=200

# Ollama remote endpoint
OLLAMA_API_KEY=your-key
VariableDescription
OPENROUTER_API_KEYOpenRouter API key
ANTHROPIC_API_KEYAnthropic API key
OPENAI_API_KEYOpenAI API key
OLLAMA_API_KEYOllama remote endpoint key
ZEROCLAW_LUCID_CMDPath to lucid binary
ZEROCLAW_LUCID_BUDGETLucid memory budget (default 200)

shield Security

ZeroClaw enforces security at every layer and passes all items from the community security checklist.

Localhost-only gateway
Binds 127.0.0.1. Refuses 0.0.0.0 without tunnel or allow_public_bind
Pairing required
6-digit OTP on startup. Exchange via POST /pair for bearer token
Filesystem scoped
workspace_only by default. 14 system dirs + 4 sensitive dotfiles blocked
Symlink escape detection
Canonicalization + resolved-path workspace checks
Encrypted secrets
API keys encrypted at rest with local key file
Deny-by-default channels
Empty allowlist = deny all. "*" = allow all (explicit opt-in)
[gateway]
require_pairing = true
allow_public_bind = false   # refuse 0.0.0.0 without tunnel

[autonomy]
workspace_only = true       # scoped to workspace by default

account_tree Architecture

Every subsystem is a Rust trait — swap implementations with a config change, zero code changes.

SubsystemTraitShips with
AI ModelsProvider28 built-ins + custom endpoints
ChannelsChannelCLI, Telegram, Discord, Slack, WhatsApp, iMessage, Matrix, Signal, Email, IRC, Lark, DingTalk, QQ, Webhook
Memory SystemMemorySQLite hybrid, PostgreSQL, Lucid, Markdown, none
ToolsToolshell, file, memory, cron, git, browser, http, composio, delegate, hardware
ObservabilityObserverNoop, Log, Multi
RuntimeRuntimeAdapterNative, Docker (sandboxed)
SecuritySecurityPolicyPairing, sandbox, allowlists, rate limits, filesystem scoping
IdentityIdentityConfigOpenClaw (markdown), AIEOS v1.1 (JSON)
TunnelTunnelNone, Cloudflare, Tailscale, ngrok, Custom
HeartbeatEngineHEARTBEAT.md periodic tasks
List/install/remove skillsLoaderTOML manifests + SKILL.md instructions
IntegrationsRegistry70+ integrations across 9 categories

runtime.kind = "native" and "docker" are supported today. WASM/edge runtimes are planned.

api Gateway API

Minimal HTTP API for channel integrations and health checks.

MethodEndpointDescription
GET/healthHealth check (always public, no secrets leaked)
POST/pairExchange OTP (X-Pairing-Code header) for bearer token
POST/webhookSend message to agent (Authorization: Bearer)
GET/POST/whatsappWhatsApp webhook verification + incoming messages
# Health check (no auth required)
curl http://127.0.0.1:3000/health

# Exchange pairing code for bearer token
curl -X POST http://127.0.0.1:3000/pair \
  -H "X-Pairing-Code: 847291"

# Send a message (requires bearer token)
curl -X POST http://127.0.0.1:3000/webhook \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"message": "Hello, ZeroClaw!"}'

lock Auth & Pairing

Subscription-native auth profiles (multi-account, encrypted at rest) for OpenAI Codex and Anthropic.

# OpenAI Codex (device code — recommended for servers)
zeroclaw auth login --provider openai-codex --device-code

# Browser/callback flow
zeroclaw auth login --provider openai-codex --profile default

# Anthropic setup token
zeroclaw auth paste-token --provider anthropic --profile default

# Check / refresh / switch profile
zeroclaw auth status
zeroclaw auth refresh --provider openai-codex --profile default
zeroclaw auth use --provider openai-codex --profile work

code Development

Standard Rust workflow. A pre-push git hook runs fmt + clippy + test automatically.

# Dev build
cargo build

# Release build (works on all devices including Raspberry Pi)
cargo build --release

# Run tests
cargo test

# Lint
cargo clippy --locked --all-targets -- -D clippy::correctness

# Format
cargo fmt

# Enable pre-push hook (fmt + clippy + test)
git config core.hooksPath .githooks

menu_book Docs Hub

For task-oriented documentation, start from the docs hub in the official repository.

DocumentPath
Documentation hubdocs/README.md
Unified docs TOCdocs/SUMMARY.md
Commands referencedocs/commands-reference.md
Config referencedocs/config-reference.md
Providers referencedocs/providers-reference.md
Channels referencedocs/channels-reference.md
Operations runbookdocs/operations-runbook.md
Troubleshootingdocs/troubleshooting.md

Ready to run the stack?

brew install zeroclaw && zeroclaw onboard --interactive