Skip to content

ZeroClaw

AI Agents & Assistants

ZeroClaw is a self‑hosted personal AI assistant runtime written in Rust that you control entirely – it runs locally, owns your data, and can interact through many channels (Discord, Telegram, Matrix, email, etc.) while offering configurable security and hardware integration.

Rust Latest v0.7.3 · 1mo ago Security brief →

Features

  • Multi‑channel interaction: one agent can answer across Discord, Telegram, Matrix, email, webhooks, CLI and more.
  • Provider‑agnostic LLM support: plug in Anthropic, OpenAI, Ollama or any compatible endpoint with fallback routing.
  • Security‑first design: supervised autonomy, OS‑level sandboxes (Landlock/Bubblewrap), tool receipts and an opt‑in YOLO dev mode.

Recent releases

View all 11 releases →
v0.7.3 Breaking risk
Breaking changes
  • Codebase split into 12+ workspace crates (zeroclaw-api, zeroclaw-runtime, zeroclaw-providers, zeroclaw-channels, zeroclaw-config, zeroclaw-gateway, zeroclaw-tools, zeroclaw-memory, zeroclaw-infra, zeroclaw-tui, zeroclaw-plugins, zeroclaw-hardware); public APIs and import paths restructured
  • Config V2 schema introduced; automatic migration via zeroclaw config migrate
  • Slack config: channel_id parameter replaced with channel_ids
Security fixes
  • Command security policy blocks dangerous interpreter arguments (-e, --eval, -c)
Notable features
  • OpenRouter provider streaming for token-by-token responses
  • GitHub Copilot available as selectable provider
  • Web dashboard decoupled from binary with voice mode and plugins page
Full changelog

Changelog — v0.6.9 → v0.7.3

Changes since the v0.6.9 stable release. This release represents the largest
structural overhaul in ZeroClaw's history: the entire codebase has been split into a
proper Cargo workspace of focused crates, a new config schema has shipped with a live
migration path, and a wave of channel, provider, and security improvements have landed
on top of that foundation.


Highlights

  • Workspace split complete — ZeroClaw is now a multi-crate Cargo workspace. The
    monolithic source tree has been decomposed into 12+ focused crates
    (zeroclaw-api, zeroclaw-runtime, zeroclaw-gateway, zeroclaw-channels,
    zeroclaw-tools, zeroclaw-memory, zeroclaw-providers, zeroclaw-infra,
    zeroclaw-config, zeroclaw-tui, zeroclaw-plugins, zeroclaw-hardware).
    The foundation binary now builds at 6.6 MB with --no-default-features.

  • Config V2 schema with automatic migration — Provider config has moved to a cleaner
    layout. Running zeroclaw config migrate upgrades your existing config in-place,
    preserving comments. The old props subcommand still works but is now deprecated in
    favour of zeroclaw config.

  • OpenRouter streaming — OpenRouterProvider now streams responses token-by-token
    instead of waiting for the full response, matching the experience of native providers.

  • Web dashboard decoupled from the binary — The dashboard is now built separately
    and embedded at release time. cargo install and AUR/Homebrew packages include it.
    A new voice mode and plugins page have been added to the dashboard.

  • LINE channel — LINE Messaging API is now a supported channel.

  • Matrix improvements — Mention-only filtering (the agent only responds when
    mentioned), encrypted media download restored, outbound attachment support added, and
    onboarding wizard preservation.

  • GitHub Copilot onboarding — GitHub Copilot is now selectable as a provider
    through the onboarding wizard and zeroclaw config flow (#5321).

  • Authenticated OTLP exporters — New otel_headers config key lets you pass
    custom headers (e.g. Authorization: Bearer …) to protected OTLP endpoints (#5700).


What's New

Architecture & Workspace

  • Extracted 12 workspace crates from the monolith, implementing the microkernel RFC
    roadmap (RFC D1–D5). Every subsystem — providers, channels, tools, memory, infra,
    config, gateway, TUI, plugins, hardware — now lives in its own crate with explicit
    dependency boundaries enforced by the compiler.
  • Foundation binary (--no-default-features) compiles clean at 6.6 MB.
  • agent-runtime feature flag gates the full agent loop; the kernel binary builds
    without it.
  • Switched TLS from aws-lc-rs to ring and stripped .eh_frame sections, reducing
    binary size further.
  • schemars is now optional behind a schema-export feature flag — no longer a
    mandatory compile dependency.
  • 28 per-channel feature flags with forwarding chains so unused channels add zero
    compile time.
  • Workspace-wide [workspace.dependencies] and [workspace.package] inheritance
    eliminates version duplication across Cargo.toml files.
  • RFC Rev 2 compliance: stability tiers, versioning policy, and release profile are now
    wired into the workspace.

Providers

  • OpenRouterProvider now supports streaming (#5717). Responses appear token-by-token
    instead of arriving all at once.
  • GitHub Copilot is now available as a selectable provider in the onboarding wizard
    and zeroclaw config interactive flow (#5321).
  • Fixed: native tool-call messages are now stripped before sending to providers that
    have native_tool_calling = false, preventing provider errors (#5762).
  • Fixed: tool_stream events are no longer forwarded to non-Z.AI providers in the
    streaming path, preventing unexpected provider errors (#5806).
  • Fixed: DeepSeek V3.2 system prompt escaping and token estimation corrected (#5454).

Channels

  • LINE Messaging API channel added (#5642).
  • Matrix: mention-only filtering — the agent can be configured to respond only when
    directly mentioned. Encrypted media download restored. Outbound attachment support
    added. Onboarding wizard settings now preserved across restarts (#5166, #5727).
  • Telegram: tool approval requests now include inline_keyboard markup, giving
    users interactive approve/deny buttons instead of plain text (#5790).
  • Sender user ID is now propagated into the channel system prompt, giving the agent
    context about who it is talking to (#5526).
  • Email and VoiceCall channels now have an enabled field and are correctly wired into
    the orchestrator (#5659).
  • <think> tags are stripped from streaming draft updates before they reach the client
    (#5505).
  • Fixed: missing channels in build_channel_by_id caused sessions_send to silently
    fail for some channel types (#5506).
  • Telegram and Matrix implementations moved out of the orchestrator into their own
    modules (#5639).

Configuration

  • Config V2 schema with a new provider layout (providers.models,
    providers.fallback, model_routes, embedding_routes).
  • zeroclaw config migrate upgrades a V1 config to V2 in-place, preserving comments
    and formatting.
  • zeroclaw config replaces zeroclaw props. The old props subcommand is deprecated
    but still functional.
  • Onboarding wizard updated to write V2 provider format directly.
  • Fixed: false "Unknown config key" warnings for Option<T> fields and config aliases
    (#5510).
  • Fixed: providers.fallback now emits a warning if it references a key that does not
    exist in providers.models.
  • Fixed: temperature validation restored in the providers.models loop.
  • Slack config: channel_id deprecated in favour of channel_ids (plural) for V2.
  • Nostr, WhatsApp Web, and hardware wizard sections wired into the onboarding flow
    (#5640).

Observability

  • otel_headers — new config key for passing arbitrary HTTP headers to OTLP
    endpoints. Enables authenticated exporters (e.g. Grafana Cloud, Honeycomb) without
    environment variable workarounds (#5700).

Web Dashboard

  • Voice mode added to the dashboard.
  • Plugins management page added.
  • Theme mode switch fixed — light/dark selection now applies correctly on load (#5724).
  • Visual preview swatches added to the theme mode selector (#5767).
  • Dashboard is now decoupled from the main binary — built separately and embedded at
    release time. Included in binary releases, AUR, Homebrew, and cargo install
    (#5675, #5665).
  • Web build logic moved into the gateway crate; no-op recompiles (previously ~1 minute)
    eliminated.

Agent & Runtime

  • CLI channel factory now registered for interactive mode — zeroclaw interactive
    sessions work again after the workspace split (#5802).
  • Duplicate ToolCall events in turn_streamed deduplicated; clients no longer see the
    same tool call reported twice (#5746).
  • Empty successful tool output is now normalised before being returned to the provider,
    preventing downstream parse errors on blank responses (#5565).
  • Session integrity improvements: streaming refactor and history pruning for long
    conversations (#5167).
  • Cron agent jobs no longer trigger auto_save, preventing runaway memory consolidation
    on scheduled tasks (#5664).
  • Fixed: cron_run tool output was not being delivered to configured channels.
  • Windows: the shell console window is now hidden when running as a background process
    (#5563).

Skills (Claude Code)

  • github-issue-triage skill added — automates structured triage of GitHub issues using
    Claude Code (#5780).
  • squash-merge skill added — preserves clean commit history when merging upstream
    changes (#5782).

Security

  • Dangerous interpreter arguments (e.g. -e, --eval, -c on interpreters) are now
    blocked by the command security policy (#5702).
  • Heredocs and safe shell redirects (<<EOF, >, >>) are explicitly allowed (#5160).

Installation & Distribution

  • install.sh rewritten from scratch for the workspace split — correctly handles the
    new crate layout and binary paths (#5666).
  • AUR package migrated from zeroclaw to zeroclawlabs (#5544).
  • Daemon supervisor and onboarding launch checks now include the webhook channel (#5799).

Dependencies & Security Advisories

  • rustls-webpki and rumqttc bumped to resolve RUSTSEC-2026-0098 and
    RUSTSEC-2026-0099 (#5786).

Deployment

  • Sample Kubernetes and OpenShift deployment manifests added in deploy-k8s/ with
    hardened security context (runAsNonRoot, readOnlyRootFilesystem, drop ALL caps,
    seccompProfile: RuntimeDefault) and pairing auth enabled by default (#5880).

Bug Fixes (summary)

| Area | Fix |
|------|-----|
| Provider | Strip native tool messages for non-native-tool-calling providers |
| Provider | tool_stream events forwarded to non-Z.AI providers in streaming path |
| Provider | DeepSeek V3.2 system prompt escaping and token estimation |
| Agent | CLI channel factory missing in interactive mode |
| Agent | Duplicate ToolCall events in streaming turns |
| Agent | Normalize empty successful tool output |
| Matrix | Encrypted media download; outbound attachments |
| Channels | Missing Arc Provider forwarding methods |
| Channels | <think> tag leaking into streaming draft updates |
| Telegram | inline_keyboard missing from tool approval requests |
| Cron | cron_run tool output not delivered to configured channels |
| Config | False "Unknown config key" warnings on Option fields |
| Config | Temperature validation missing from providers loop |
| Config | Fallback key references nonexistent provider — now warns |
| Session | Integrity, streaming refactor, history pruning |
| Cron | auto_save causing recursive memory bloat on scheduled jobs |
| Security | Dangerous interpreter flags not blocked |
| Install | install.sh broken after workspace split |
| Runtime | Windows console window visible in background mode |
| Distribution | Web dashboard missing from AUR and cargo install builds |
| Docker | Workspace crate manifests missing from multi-stage build after workspace split (#5879) |
| Agent | Streamed reasoning content lost during tool replay (#5606) |
| Web | Theme mode switch not applying light/dark correctly |
| Web | Theme mode selector missing visual preview swatches |


Breaking Changes

Config schema (V1 → V2)

The provider section of config.toml has a new layout. V1 configs are still loaded and
automatically understood, but the recommended path is to run the migration:

zeroclaw config migrate

This rewrites your config to V2 in-place. The old format will continue to work in this
release but will not be supported indefinitely.

zeroclaw props deprecated

Use zeroclaw config instead. The props subcommand still works and will not be
removed in this release, but it will emit a deprecation notice.

Slack channel_id deprecated

Use channel_ids (a list) in the Slack config block. channel_id (singular) still
works but is deprecated in V2.

Workspace crate boundaries

If you have any code that depends directly on internal ZeroClaw crate paths (e.g. for
embedding or testing), the crate structure has changed significantly. Refer to
AGENTS.md for the current crate map and stability tiers. zeroclaw-api is the stable
extension point — all other crates are Beta or Experimental.


Contributors

Thank you to everyone who contributed to this release:

  • @abhijeet117
  • @aliasliao
  • @ArgenisDLR
  • @Audacity88
  • @c98
  • @DaBlitzStein
  • @freeekanayaka
  • @guitaripod
  • @ilteoood
  • @JordanTheJet
  • @kunalk16
  • @markuman
  • @micookie
  • @nayrosk
  • @niedbalski
  • @ninenox
  • @pavelanni
  • @singlerider
  • @theonlyhennygod
  • @titulus
  • @tompro
  • @UtopiaX
  • @vernonstinebaker
  • @WareWolf-MoonWall
  • @wlh320
  • @zavertiaev

Full diff: git log v0.6.9..HEAD --oneline

v0.6.9 New feature
Notable features
  • browser tools enabled by default with auto-approve
  • autonomous PR review skill
  • dashboard SSE event buffering
Full changelog

What's New

  • config: Configurable derive macro and zeroclaw props CLI
  • config: enable browser tools by default with auto-approve
  • gateway: broadcast cron job results to dashboard WebSocket clients
  • gateway: buffer SSE events for dashboard log persistence
  • heartbeat: enable heartbeat by default
  • i18n: add all 31 languages to web dashboard and fix locale API
  • providers: add merge_system_into_user option to ModelProviderConfig
  • skills: add github-pr-review skill for autonomous PR triage and review
  • web: add collapsible desktop sidebar with local state persistence
  • web: add form-based config editor with mode toggle

Contributors

  • Abdul Sadath
  • Argenis
  • argenis de la rosa
  • Claude Opus 4.6
  • Claude Opus 4.6 (1M context)
  • Claude Sonnet 4.6
  • Drew Lipiecki
  • Henrik Akselsen
  • HoWon
  • ilteoood
  • jordanthejet
  • linyibin
  • m-tky
  • Matteo Pietro Dazzi
  • Michael Lohr
  • Richard Piacentini
  • Shane Engelman
  • shedwards

Full changelog: v0.6.8...v0.6.9

v0.5.6 Bug fix

Fixed macOS Xcode license handling, crates.io publish workflow, and Docker build issues.

v0.5.5 New feature
Notable features
  • Theme system with CSS variables and settings modal
  • ClaudeCodeTool for two-tier agent delegation
  • Raspberry Pi GPIO, I2C/SPI support and mem0 memory backend
v0.1.7 Security relevant
Security fixes
  • Prompt injection defense
  • Leak detection system
Notable features
  • Novita AI as OpenAI-compatible provider
  • WATI WhatsApp Business API channel
  • Android target support (armv7 and aarch64)

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

About

Stars
31,677
Forks
4,670
Language
Rust

Install & Platforms

Install via
shell-script binary
Platforms
linux macos windows

Community & Support

Beta — feedback welcome: [email protected]