Compare commits

...

388 Commits

Author SHA1 Message Date
Argenis
feaca20582
feat: desktop companion app + device-aware installer + CI/CD (#4500)
* feat: add desktop companion app integration and CI/CD pipeline

- Add `zeroclaw desktop` CLI command to launch/install companion app
- Add device-aware installer (desktop/server/mobile/embedded/container)
- Replace from-source Tauri build with pre-built .dmg download flow
- Add `build-desktop` job to beta and stable release workflows
- Build universal macOS .dmg via Tauri on macos-14 runners
- Include .dmg in GitHub Release assets alongside CLI binaries

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: bump version to 0.6.1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: update Cargo.lock for 0.6.1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 03:59:11 -04:00
Nim G
40af505e90
feat(security): wire LeakDetector into outbound message path (#4457)
* feat(security): wire LeakDetector into outbound message path

Wire LeakDetector.scan() into channel response sanitization (via
sanitize_channel_response) and cron job delivery (via
deliver_announcement) to prevent credential leakage to external
channels.

Changes:
- src/channels/mod.rs: Add leak detection to sanitize_channel_response()
  with tracing::warn! on detection. Follows prior art from commit fb3b7b8e.
- src/cron/scheduler.rs: Add leak detection to deliver_announcement()
  before sending output to any channel (Telegram, Discord, Slack,
  Mattermost, Signal, Matrix, WhatsApp, QQ).
- Added unit tests in both modules to verify redaction behavior.

All outbound channel messages and cron job delivery are now scanned for
API keys, AWS credentials, JWTs, database URLs, private keys, and
high-entropy tokens. Detected leaks are redacted before delivery and
logged via tracing::warn! with pattern details.

Ref: SPEC-1.3-leak-detector-outbound.md (gap closure §1.3)
Prior art: commit fb3b7b8e (zeroclaw_homecomming branch)

* fix(security): enforce leak redaction with RedactedOutput newtype

Replace raw String return from scan_and_redact_output with a
RedactedOutput newtype. All channel dispatch in deliver_announcement
must go through this type, so the compiler rejects any path that
skips leak detection. Replaces tests that called LeakDetector in
isolation with tests that exercise scan_and_redact_output through
the RedactedOutput boundary.
2026-03-24 01:43:49 -04:00
Nim G
f812dbcb85
feat(channels): add message redaction API to Channel trait (#4458)
* feat(channels): add message redaction API to Channel trait

Add redact_message() method to Channel trait with default no-op implementation.
Implement for MatrixChannel using existing room.redact() SDK method.
Add comprehensive test coverage for trait default and Matrix implementation.

Changes:
- src/channels/traits.rs: Add redact_message() default method and test
- src/channels/matrix.rs: Implement redact_message() for MatrixChannel
- tests/integration/channel_matrix.rs: Add RedactMessage event, test channel impl, and lifecycle test

Tests added:
- default_redact_message_returns_success (trait default)
- redact_message_lifecycle (MatrixTestChannel)
- Updated minimal_channel_all_defaults_succeed

All tests pass. No breaking changes.

* test(channels): clarify redact_message test coverage

* fix(channels): use OwnedRoomId for matrix redact_message room lookup

RoomId is unsized (wraps str), so inlining .parse() in
get_room(&target_room.parse()?) fails to compile with the
channel-matrix feature. Use an intermediate OwnedRoomId binding,
matching the pattern used in send() and listen().
2026-03-24 01:43:41 -04:00
Nim G
59225d97b3
feat(memory): add bulk memory deletion by namespace and session (#4459)
Add purge_namespace() and purge_session() methods to Memory trait with
default bail! implementations. Implement both in SQLite backend using
spawn_blocking pattern matching forget(). Expose via new memory_purge
tool with security enforcement.

Changes:
- src/memory/traits.rs: Add purge_namespace/purge_session trait methods
- src/memory/sqlite.rs: Implement purge methods + 8 backend tests
- src/tools/memory_purge.rs: New tool following memory_forget pattern
- src/tools/mod.rs: Register memory_purge module and export

Tests:
- SQLite backend: 8 tests (namespace/session purge, preservation, count, noop)
- Tool: 8 tests (name/schema, purge success, noop, missing param, readonly/rate-limit)

All tests pass. Clippy clean. Formatted with cargo fmt.
2026-03-24 01:43:39 -04:00
Nim G
483f773e1d
feat(ci): add per-component path labels and labeler workflow (#4461)
* feat(ci): add per-component labels for channels, providers, and tools

labeler.yml only had base scope labels (channel, provider, tool) matching
entire directories. The PR workflow and ci-map specs already describe
fine-grained module labels (channel:telegram, provider:kimi, tool:shell)
but the labeler config never implemented them.

Adds 27 channel, 13 provider, and 12 tool group entries. Base labels are
preserved for the compaction rule in pr-labeler.yml.

* feat(ci): add pr-path-labeler workflow to invoke actions/labeler

labeler.yml has path-label config but no workflow was invoking it.
Adds pr-path-labeler.yml on pull_request_target to apply path and
per-component labels automatically. Updates actions source policy
doc to reflect the new workflow and action.

* docs(contributing): add label registry as single reference for all PR labels

Label definitions were scattered across labeler.yml, label-policy.json,
pr-workflow.md, and ci-map.md with no consolidated view. Adds a single
registry documenting all 99 labels by category, their definitions, how
each is applied, and which automation exists vs. is specced but missing.

* docs(contributing): correct label-registry automation status

The CI was simplified from 20+ workflows to 4. Size, risk,
contributor tier, and triage label automation (pr-labeler.yml,
pr-auto-response.yml, pr-check-stale.yml) were removed during
that simplification. Update the registry to reflect that these
labels are now applied manually, not "not yet implemented."

See PR #2931 for the upstream docs cleanup.
2026-03-24 01:43:35 -04:00
Argenis
b4bbe820a2
feat(memory): add pgvector support and Postgres knowledge graph (#4028) (#4488)
* feat(memory): add pgvector support and Postgres knowledge graph (#4028)

Enhance PostgresMemory with optional pgvector extension for hybrid
vector+keyword recall. Add namespace and importance columns. Create
PgKnowledgeGraph with recursive CTEs for graph traversal (no AGE
dependency). Extend ConsolidationResult with facts/trend fields for
richer extraction. All behind memory-postgres feature flag.

New file: knowledge_graph_pg.rs (5 unit tests)
Modified: postgres.rs (pgvector init, namespace/importance columns),
consolidation.rs (facts/trend fields), StorageProviderConfig

* fix: update PostgresMemory::new call in CLI with pgvector params
2026-03-24 01:04:01 -04:00
Argenis
1702bb2747
fix: route WebSocket connections through configured proxy (#4408)
* fix: route WebSocket connections through configured proxy (#4408)

tokio_tungstenite::connect_async does not honour proxy settings. Add
proxy-aware WebSocket connect helpers (HTTP CONNECT and SOCKS5) in
config::schema and update all six channel WebSocket connections
(discord, discord_history, slack, dingtalk, lark, qq) to use
ws_connect_with_proxy instead of connect_async.

* fix: update Cargo.lock with tokio-socks dependency
2026-03-24 01:02:46 -04:00
Argenis
b6f661c3c5
feat(agent): add complexity-based eval and auto-classify routing (#3928) (#4486)
Add heuristic complexity estimation (Simple/Standard/Complex) and
post-response quality evaluation to enable cheapest-capable model
routing. When rule-based classification misses, auto_classify falls
back to complexity-tier hints for model selection. Eval gate checks
response quality and suggests retry with higher-tier model if below
threshold.

New file: eval.rs (14 unit tests)
Modified: AgentConfig (eval, auto_classify fields), classify_model()
2026-03-24 00:51:18 -04:00
Argenis
ac543cff20
fix(tools): allow git_operations to run in workspace subdirectories (#4483)
Fixes #4409. The git_operations tool now accepts an optional 'path'
parameter to specify a subdirectory within the workspace. Path
traversal outside the workspace is rejected for security.
2026-03-24 00:44:41 -04:00
Argenis
c88affa020
fix(cron): treat empty allowed_tools as None and sanitize tool names (#4482)
Fixes #4442. Empty allowed_tools arrays caused all tools to be filtered
out, making cron jobs fail. Also adds tool name validation in the
OpenRouter provider to skip tools with names that violate the OpenAI
naming regex.
2026-03-24 00:44:39 -04:00
Argenis
67998ad702
fix(docker): add [autonomy] section with auto_approve to Docker configs (#4481)
Fixes #4445. Docker/podman containers running in daemon mode had no
[autonomy] section in the baked config.toml, causing file_write and
file_edit tools to be auto-denied in non-interactive mode.
2026-03-24 00:44:32 -04:00
Argenis
c104b23ddb
feat(agent): add token efficiency analyzer layer (#3892) (#4484)
Add history pruning and context-aware tool filtering to reduce token
usage per API call. History pruner collapses old tool call/result pairs
and drops oldest messages when over budget. Context analyzer suggests
relevant tools per iteration based on keyword matching.

New files: history_pruner.rs, context_analyzer.rs
Modified: AgentConfig (new fields), ToolFilterGroup (filter_builtins),
agent loop (pruning integration)
2026-03-24 00:38:15 -04:00
Argenis
698adca707
fix: add channel-lark to default features (#4472)
Resolves #3540. Lark/Feishu channel was not included in default features, causing builds via cargo install, brew, and other standard install methods to produce binaries without Lark support. Also fixes pre-existing lark audio test failures that were previously hidden.
2026-03-24 00:23:43 -04:00
Argenis
50a877b4c1
fix(ci): use shared concurrency group for master push events (#4479)
The concurrency group used github.sha for push events, giving each
merge its own group. Back-to-back merges queued multiple full CI runs
that never cancelled each other, exhausting runner capacity.

Use a fixed 'push-master' group so only the latest push to master
runs CI — older runs are cancelled automatically.
2026-03-24 00:15:26 -04:00
Argenis
fa7b615508
feat(providers): support Bearer token API keys for Amazon Bedrock (#4473)
Add BedrockAuth enum supporting both SigV4 and BearerToken authentication.
BEDROCK_API_KEY env var takes precedence over AWS AKSK credentials.
When a Bearer token is provided, requests use Authorization: Bearer header
instead of SigV4 signing. Existing SigV4 auth remains fully backward
compatible.

Closes #3742
2026-03-24 00:08:13 -04:00
Argenis
ea9eccfe8b
feat: make shell tool timeout configurable via config.toml (#4468)
Add `[shell_tool]` section to config schema with `timeout_secs` field
(default 60s). The ShellTool struct now carries the timeout as an
instance field instead of relying on the hardcoded constant, and the
full tool registry reads the value from Config at construction time.

Closes #4331
2026-03-24 00:07:46 -04:00
Argenis
eb036b4d95
feat(skills): add TEST.sh validation/testing framework (#4476)
Add a `zeroclaw skills test [name] [--verbose]` command that discovers
and executes TEST.sh files inside skill directories. Each line in a
TEST.sh follows the format `command | expected_exit_code | pattern` and
is validated against actual exit code and output (substring or regex).

- Add `Test` variant to `SkillCommands` enum in lib.rs
- Create `src/skills/testing.rs` with test runner, parser, and
  pretty-printed results using the console crate
- Wire the new subcommand into `handle_command()` in skills/mod.rs
- Add example TEST.sh for the browser skill
- Include 14 unit tests covering parsing, pattern matching, execution,
  aggregation, and edge cases

Closes #3697
2026-03-23 23:58:52 -04:00
Argenis
1c07d5b411
feat(tools): add built-in ask_user tool for interactive prompts (#4474)
Implement a new ask_user tool that sends a question to a messaging
channel and waits for the user's response with configurable timeout.
Supports optional structured choices and works across all channels
(Telegram, Discord, Slack, CLI, Web) via the late-bound channel map
pattern used by PollTool and ReactionTool.

Closes #3698
2026-03-23 23:58:50 -04:00
Argenis
0fe3834349
feat(channels): migrate inline transcription to TranscriptionManager (#4475)
Migrate Telegram, Discord, Slack, WhatsApp Web, and Matrix channels
from inline TranscriptionConfig/transcribe_audio() calls to the
centralized TranscriptionManager pattern for unified provider selection,
fallback, and global cap enforcement.

Each channel now:
- Stores a transcription_manager: Option<Arc<TranscriptionManager>> field
- Builds the manager in with_transcription() from config
- Calls manager.transcribe() instead of the legacy transcribe_audio() shim
- Matrix replaces the whisper-cpp shell-out with the manager API

Closes #4311
2026-03-23 23:58:05 -04:00
Argenis
33f9d66b54
feat(channel): add transcribe_non_ptt_audio config for WhatsApp STT (#4470)
Allow transcription of forwarded/regular audio messages on WhatsApp,
not just push-to-talk voice notes. Controlled by the new
`transcribe_non_ptt_audio` option in `[transcription]` (default: false).

Closes #4343
2026-03-23 23:43:28 -04:00
Argenis
368f39829f
fix: strip [Used tools: xxx] logs from channel responses (#4400)
The tool-context summary (e.g. `[Used tools: browser_open]`) was
prepended to assistant history entries for all non-Telegram channels so
the LLM could retain awareness of prior tool usage.  This caused the
model to learn and reproduce the bracket format in its own output,
delivering raw log lines to end-users instead of meaningful tool results.

Three changes:

1. Stop prepending `[Used tools: …]` to stored history for all channels.
   The LLM already receives tool context through the tool-call/result
   messages built by `run_tool_call_loop`, making the summary redundant.

2. Strip any `[Used tools: …]` prefix from cached history on reload, so
   existing sessions are cleaned up retroactively.

3. Strip the prefix in `sanitize_channel_response` as a safety net, in
   case the model still echoes it from older context.
2026-03-23 23:34:29 -04:00
Argenis
9376c26018
feat(tools): add Claude Code task runner with Slack progress and SSH handoff (#4466)
Implement ClaudeCodeRunner that spawns Claude Code in a tmux session with
HTTP hooks to POST tool execution events back to ZeroClaw's gateway,
updating a Slack message in-place with progress, plus an SSH handoff link.

Components:
- src/tools/claude_code_runner.rs: session lifecycle (tmux spawn, hook
  config generation, event handling, TTL cleanup)
- src/gateway/api.rs: POST /hooks/claude-code endpoint for hook events
- src/channels/slack.rs: chat.update + chat.postMessage with ts return
- src/config/schema.rs: ClaudeCodeRunnerConfig (enabled, ssh_host,
  tmux_prefix, session_ttl)
- src/tools/mod.rs: register runner tool

Closes #4287
2026-03-23 23:24:58 -04:00
Argenis
08e131d7c6
feat(slack): add /config command with Block Kit UI for model switching (#4464)
Add interactive /config command for Slack that renders Block Kit
static_select dropdowns for provider and model selection. Interactive
block_actions payloads from Socket Mode are translated into synthetic
/models and /model commands so existing runtime command handling
applies the selection to the per-sender RouteSelectionMap.

- Enable runtime model switching for the slack channel
- Add ShowConfig variant to ChannelRuntimeCommand
- Parse /config in parse_runtime_command (gated by supports_runtime_model_switch)
- Build Block Kit JSON with provider/model dropdowns and current selection
- Detect __ZEROCLAW_BLOCK_KIT__ prefix in SlackChannel::send() to post raw blocks
- Handle interactive envelope type in Socket Mode for block_actions events
- Non-Slack channels get a plain-text /config fallback

Closes #4286
2026-03-23 23:24:56 -04:00
Argenis
36db977b35
feat: adopt AGENTS.md as the primary agent instruction format (#4462)
Replace the AGENTS.md symlink with a real file containing all cross-tool
agent instructions. Reduce CLAUDE.md to Claude Code-specific directives
only, with a reference back to AGENTS.md for shared conventions.

Closes #4289
2026-03-23 23:24:45 -04:00
Argenis
92b0ebb61a
fix: include channel-lark in Docker build defaults (#4463)
Resolves #3538. Docker builds only included memory-postgres in ZEROCLAW_CARGO_FEATURES, which meant Lark/Feishu long-connection (WebSocket) support was not compiled into container images.
2026-03-23 23:22:36 -04:00
Argenis
9c312180a2
chore: bump version to 0.6.0 (#4455)
Includes macOS desktop menu bar app, media pipeline channels,
SOP engine improvements, and CLI tool integrations.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 21:16:46 -04:00
Argenis
a433c37c53
feat: add macOS desktop menu bar app (Tauri) (#4454)
* feat(tauri): add desktop app scaffolding with Tauri commands

Add Tauri v2 workspace member under apps/tauri with gateway client,
shared state, and Tauri command handlers for status, health, channels,
pairing, and agent messaging. The desktop app communicates with the
ZeroClaw gateway over HTTP and is buildable independently via
`cargo check -p zeroclaw-desktop`.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(tauri): add system tray icon, menu, and events

Add tray module with menu construction (Show Dashboard, Status, Open
Gateway, Quit) and event handlers. Wire tray setup into the Tauri
builder's setup hook. Add icons/ placeholder directory.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(tauri): add mobile entry, platform capabilities, icons, and tests

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(tauri): add auto-pairing, gradient icons, and WebView integration

Desktop app now auto-pairs with the gateway on startup using localhost
admin endpoints, injects the token into the WebView localStorage, and
loads the dashboard from the gateway URL. Adds blue gradient Z tray
icons (idle/working/error/disconnected states), proper .icns app icon,
health polling with tray updates, and Tauri-aware API/WS/SSE paths in
the web frontend.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(tauri): add dock icon, keep-alive for tray mode, and install preflight

- Set macOS dock icon programmatically via NSApplication API so it shows
  the blue gradient Z even in dev builds without a .app bundle
- Add RunEvent::ExitRequested handler to keep app alive as a menu bar app
  when all windows are closed
- Add desktop app preflight checks to install.sh (Rust, Xcode CLT,
  cargo-tauri, Node.js) with automatic build on macOS

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 20:55:22 -04:00
Argenis
af8e805016
fix(tools): correct CLI args for codex and gemini harness tools (#4401)
* feat(tools): add Codex CLI and Gemini CLI harness tools

Add two new ACP harness tools following the same pattern as ClaudeCodeTool:

- CodexCliTool: delegates to `codex -q` for OpenAI Codex CLI
- GeminiCliTool: delegates to `gemini -p` for Google Gemini CLI

Both tools share the same security model (rate limiting, act-policy
enforcement, workspace containment, env sanitisation, kill-on-drop
timeout) and are config-gated via `[codex_cli]` / `[gemini_cli]`
sections with `enabled = true`.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(tools): use 'codex exec' instead of invalid '-q' flag

* feat(tools): add OpenCode CLI harness tool

Add opencode_cli tool following the same pattern as codex_cli and
gemini_cli. Uses `opencode run "<prompt>"` for non-interactive
delegation. Includes config struct, factory registration, env
sanitization, timeout, and tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(tools): correct CLI invocation args for codex and gemini tools

- Fix codex_cli to use `codex -q` (quiet mode) instead of incorrect
  `codex exec` subcommand, matching the documented behavior and the
  actual @openai/codex CLI interface.
- Fix gemini_cli install instruction to reference `@google/gemini-cli`
  instead of the incorrect `@anthropic-ai/gemini-cli` package name.

---------

Co-authored-by: Giulio V <vannini.gv@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: rareba <rareba@users.noreply.github.com>
2026-03-23 17:42:07 -04:00
Argenis
9f127f896d
fix(tools): validate task_id to prevent path traversal in delegate tool (#4405)
* feat(tools): add background and parallel execution to delegate tool

Add three new execution modes to the delegate tool:

- background: when true, spawns the sub-agent in a background tokio task
  and returns a task_id immediately. Results are persisted to
  workspace/delegate_results/{task_id}.json.

- parallel: accepts an array of agent names, runs them all concurrently
  with the same prompt, and returns all results when complete.

- action parameter with check_result/list_results/cancel_task support
  for managing background task lifecycle.

Cascade control: background sub-agents use child CancellationToken
derived from the parent, enabling cancel_all_background_tasks() to
abort all running background agents when the parent session ends.

Existing synchronous delegation flow is fully preserved (opt-in only).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(tools): validate task_id as UUID to prevent path traversal in delegate tool

The check_result and cancel_task actions accept a user-provided task_id
that is used directly in filesystem path construction. A malicious
task_id like "../../etc/passwd" could read or overwrite arbitrary files.

Since task_ids are always generated as UUIDs internally, this adds UUID
format validation before any filesystem operations, rejecting invalid
task_id values with a clear error message.

Also updates existing tests to use valid UUID-format task_ids and adds
dedicated path traversal rejection tests.

* fix: add missing attachments field to wati ChannelMessage after media pipeline merge

* fix(channels): add missing attachments field to voice_wake and lark

---------

Co-authored-by: Giulio V <vannini.gv@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 16:57:24 -04:00
Argenis
b98971c635
fix(sop): fix state file leak and add deterministic execution tests (#4404)
* feat(sop): add deterministic execution mode with typed steps and approval checkpoints

Add opt-in deterministic execution to the SOP workflow engine, inspired
by OpenClaw's Lobster engine. Deterministic mode bypasses LLM round-trips
for step transitions, executing steps sequentially with piped outputs.

Key additions:
- SopExecutionMode::Deterministic variant and `deterministic: true` SOP.toml flag
- SopStepKind enum (Execute/Checkpoint) for marking approval pause points
- StepSchema for typed input/output validation (JSON Schema fragments)
- DeterministicRunState for persisting/resuming interrupted workflows
- DeterministicSavings for tracking LLM calls saved
- SopRunAction::DeterministicStep and CheckpointWait action variants
- SopRunStatus::PausedCheckpoint status
- Engine methods: start_deterministic_run, advance_deterministic_step,
  resume_deterministic_run, persist/load_deterministic_state
- SopConfig in config/schema.rs with sops_dir, default_execution_mode,
  max_concurrent_total, approval_timeout_secs, max_finished_runs
- Wire `pub mod sop` in lib.rs (previously dead/uncompiled module)
- Fix pre-existing test issues: TempDir import, async test annotations

All 86 SOP core tests pass (engine: 42, mod: 17, dispatch: 13, types: 14).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(sop): resolve clippy warnings and fix metrics test failures

- Add `ampersona-gates = []` feature declaration to Cargo.toml to fix
  clippy `unexpected cfg condition value` errors in sop/mod.rs,
  sop/audit.rs, and sop/metrics.rs.
- Use dynamic Utc::now() timestamps in metrics test helper `make_run()`
  instead of hardcoded 2026-02-19 dates, which had drifted outside the
  7-day/30-day windowed metric windows causing 7 test failures.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(sop): remove non-functional ampersona-gates feature flag

The ampersona-gates feature flag referenced ampersona_core and
ampersona_engine crates that do not exist, causing cargo check
--all-features to fail. Remove the feature flag and all gated code:

- Remove ampersona-gates from Cargo.toml [features]
- Delete src/sop/gates.rs (entire module behind cfg gate)
- Remove gated methods from audit.rs (log_gate_decision, log_phase_state)
- Remove gated MetricsProvider impl and tests from metrics.rs
- Simplify sop_status.rs gate_eval field and append_gate_status
- Update observability docs (EN + zh-CN)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style(sop): fix formatting in metrics.rs

* fix(sop): wire SOP tools into tool registry

The five SOP tools (sop_list, sop_advance, sop_execute, sop_approve,
sop_status) existed as source files but were never registered in
all_tools_with_runtime. They are now conditionally registered when
sop.sops_dir is configured.

Also fixes:
- Add mod sop + SopCommands re-export to main.rs (binary crate)
- Handle new DeterministicStep/CheckpointWait variants in match arms
- Add missing struct fields (deterministic, kind, schema, llm_calls_saved)
  to test constructors

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(sop): fix state file leak and add deterministic execution tests

- Fix persist_deterministic_state fallback: use system temp dir instead
  of current working directory when SOP location is unset, preventing
  state files from polluting the working directory.
- Add comprehensive test coverage for deterministic execution path:
  start, advance, checkpoint pause, completion with savings tracking,
  and rejection of non-deterministic SOPs.
- Add tests for deterministic flag in TOML manifest loading and
  checkpoint kind parsing from SOP.md.
- Add serde roundtrip tests for DeterministicRunState, SopStepKind,
  SopExecutionMode::Deterministic, and SopRunStatus::PausedCheckpoint.

* ci: retrigger CI

* fix: add missing attachments field to wati ChannelMessage after media pipeline merge

* fix(channels): add missing attachments field to voice_wake and lark

---------

Co-authored-by: Giulio V <vannini.gv@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: rareba <rareba@users.noreply.github.com>
2026-03-23 16:40:26 -04:00
Argenis
2ee0229740
fix(gateway): improve WebSocket chat error handling and diagnostics (#4407)
- Add error codes to WS error messages (AGENT_INIT_FAILED, AUTH_ERROR, PROVIDER_ERROR, INVALID_JSON, UNKNOWN_MESSAGE_TYPE, EMPTY_CONTENT)
- Send Close frame with code 1011 on agent init failure
- Add tracing logs for agent init and turn errors
- Increase MAX_API_ERROR_CHARS from 200 to 500
- Frontend: handle abnormal close codes and show config error hints

Fixes #3681
Supersedes #4366
Original work by mark-linyb
2026-03-23 15:30:18 -04:00
Argenis
0d2b57ee2e
fix(channels): ensure newline between narration and draft status lines (#4394)
Narration text from native tool-call providers that doesn't end with a newline now gets one appended before dispatch to the draft updater. Prevents garbled output in Telegram drafts.

Closes #4348
2026-03-23 15:30:15 -04:00
Argenis
b85a445955
fix(channels): prevent draft streaming hang after tool loop completion (#4393)
Drop delta_tx before awaiting draft_updater so the mpsc channel closes and the updater task can terminate. Without this, draft-capable channels (e.g. Telegram) hang indefinitely after the tool loop completes.

Closes #4300
2026-03-23 15:30:12 -04:00
Argenis
dbd8c77519
feat(channels): add automatic media understanding pipeline (#4402)
* feat(channels): add automatic media understanding pipeline for inbound messages

Add MediaPipeline that pre-processes inbound channel message attachments
before the agent sees them:

- Audio: transcribed via existing transcription infrastructure, annotated
  as [Audio transcription: ...]
- Images: annotated with [Image: <file> attached] (vision-aware)
- Video: annotated with [Video: <file> attached] (placeholder for future API)

The pipeline is opt-in via [media_pipeline] config section (default: disabled).
Individual media types can be toggled independently.

Changes:
- New src/channels/media_pipeline.rs with MediaPipeline struct and tests
- New MediaPipelineConfig in config/schema.rs
- Added attachments field to ChannelMessage for media pass-through
- Wired pipeline into process_channel_message after hooks, before agent

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(channels): add attachments field to integration test fixtures

Add missing `attachments: vec![]` to all ChannelMessage struct literals
in channel_matrix.rs and channel_routing.rs after the new attachments
field was added to the struct in traits.rs.

Also fix schema.rs test compilation: make TempDir import unconditional
and add explicit type annotations on tokio::fs calls to resolve type
inference errors in the bootstrap file tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(channels): add missing attachments field to gmail_push and discord_history constructors

These channels were added to master after the media pipeline PR was
originally branched. The ChannelMessage struct now requires an
attachments field, so initialise it to an empty Vec for channels
that do not yet extract attachments.

---------

Co-authored-by: Giulio V <vannini.gv@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 15:14:11 -04:00
Argenis
34db67428f
fix(gateway): stream ws agent chat responses (#4390)
Add Agent::turn_streamed() that forwards TurnEvent (Chunk, ToolCall,
ToolResult) through an mpsc channel during execution. The WebSocket
gateway uses tokio::join! to relay these events to the client in real
time instead of waiting for the full turn to complete.

Introduce chunk_reset message type so the frontend clears its draft
buffer before the authoritative done message arrives.  Update the React
AgentChat page to render streamed text live in the typing indicator
area, replacing the bounce-dot animation when content is available.

Backward-compatible: the done message still carries the full_response
field unchanged, and providers that do not support streaming fall back
to the non-streaming chat path transparently.

Closes #4372
2026-03-23 15:01:04 -04:00
Argenis
01d0c6b23a
fix(config): add cost tracking configuration to template and example files (#4387)
Add the [cost] section to dev/config.template.toml and
examples/config.example.toml documenting all CostConfig options
(enabled, daily_limit_usd, monthly_limit_usd, warn_at_percent,
allow_override) with their defaults and commented-out model pricing
examples.

Fixes #4373
2026-03-23 15:01:01 -04:00
Argenis
79f0a5ae30
fix(matrix): handle unused Result from backups().disable() (#4386)
Add `let _ =` prefix to explicitly discard the Result from
`client.encryption().backups().disable().await`, suppressing the
`unused_must_use` compiler warning.

Closes #4374
2026-03-23 15:00:58 -04:00
Argenis
5bdeeba213
feat(wati): add audio and voice message transcription (#4391)
* fix(transcription): remove deployment-specific WireGuard references from doc comments

LocalWhisperProvider and LocalWhisperConfig doc comments referenced
WireGuard and specific internal infrastructure. Deployment topology is
operator choice — replace with neutral examples.

* feat(wati): add audio and voice message transcription

* fix(wati): SSRF host validation, early fromMe check, download size cap

Validate that media_url host matches the configured api_url host before
fetching, preventing SSRF with credential leakage.  Move the fromMe
check before the HTTP download to avoid wasting bandwidth on outgoing
messages.  Add MAX_WATI_AUDIO_BYTES (25 MiB) Content-Length pre-check.
Skip empty transcripts in parse_audio_as_message.  Short-circuit
with_transcription() when config.enabled is false.

* fix(wati): remove dead field, enforce streaming size cap, log errors

- Remove unused transcription config field (clippy dead code)
- Use streaming download to enforce size cap without Content-Length
- Log network errors instead of silently swallowing with .ok()?

---------

Co-authored-by: Nim G <theredspoon@users.noreply.github.com>
2026-03-23 14:58:21 -04:00
Argenis
b5447175ff
feat(mattermost): add audio transcription via TranscriptionManager (#4389)
* fix(transcription): remove deployment-specific WireGuard references from doc comments

LocalWhisperProvider and LocalWhisperConfig doc comments referenced
WireGuard and specific internal infrastructure. Deployment topology is
operator choice — replace with neutral examples.

* feat(mattermost): add audio transcription via TranscriptionManager

Add transcription support for Mattermost audio attachments. Routes
audio through TranscriptionManager when configured, with duration
limit enforcement and wiremock-based integration tests.

* fix(mattermost): add download size cap, HTTP status check, warn logging

Replace chained .ok()? calls in try_transcribe_audio_attachment with
explicit error handling that logs warnings on HTTP failure, non-success
status codes, and oversized files.  Add MAX_MATTERMOST_AUDIO_BYTES
(25 MiB) Content-Length pre-check.  Remove mp4 and webm from the
extension-only fallback in is_audio_file().  Short-circuit
with_transcription() when config.enabled is false.

* fix(mattermost): add [Voice] prefix, filter empty, fix config init

- Add [Voice] prefix to transcribed audio matching Slack/Discord
- Filter empty transcription results
- Only store transcription config on successful manager init
- Update test expectation for [Voice] prefix

---------

Co-authored-by: Nim G <theredspoon@users.noreply.github.com>
2026-03-23 14:58:18 -04:00
Argenis
0dc05771ba
feat(lark): add audio message transcription (#4388)
* fix(transcription): remove deployment-specific WireGuard references from doc comments

LocalWhisperProvider and LocalWhisperConfig doc comments referenced
WireGuard and specific internal infrastructure. Deployment topology is
operator choice — replace with neutral examples.

* feat(lark): add audio message transcription

* test(channels): add three missing lark audio transcription tests

- lark_audio_skips_when_manager_none: parse_event_payload_async returns
  empty when transcription_manager is None
- lark_audio_routes_through_transcription_manager: wiremock end-to-end
  test proving file_key → download → whisper → ChannelMessage chain
- lark_audio_token_refresh_on_invalid_token_response: wiremock test
  verifying 401 triggers token invalidation and retry

Adds a #[cfg(test)] api_base_override field to LarkChannel so wiremock
can intercept requests that normally go to hardcoded Lark/Feishu API
base URLs.

* fix(lark): add audio download size cap, event_type guard, skip disabled transcription

Add MAX_LARK_AUDIO_BYTES (25 MiB) Content-Length pre-check before
reading audio response bodies on both the normal and token-refresh
paths.  Add the missing im.message.receive_v1 event_type guard in
parse_event_payload_async so non-message callbacks are rejected before
the audio branch.  Short-circuit with_transcription() when
config.enabled is false.

* fix(lark): address review feedback for audio transcription

- Wire parse_event_payload_async in webhook handler (was dead code)
- Use streaming download with enforced size cap (no Content-Length bypass)
- Fix test: lark_manager_some_when_valid_config asserted is_some with enabled=false
- Fix test: add missing header to lark_audio_skips_when_manager_none payload
- Remove redundant group-mention check in audio arm (shared check covers it)

---------

Co-authored-by: Nim G <theredspoon@users.noreply.github.com>
2026-03-23 14:58:11 -04:00
Argenis
10f9ea3454
fix(security): update blocked_commands_basic test after #4338 (#4399)
* fix(security): update blocked_commands_basic test after allowing python/node

After adding python3 and node to default_allowed_commands in #4338,
the test asserting they are blocked is now wrong. Replace with ruby
and perl which remain correctly blocked.

* fix(security): also fix python3 reference in pipe validation test

The command_with_pipes_validates_all_segments test also referenced
python3 in a blocked assertion. Replace with ruby.
2026-03-23 14:16:42 -04:00
linyibin
3ec532bc29
fix(config): add cost tracking configuration section to template (#4368)
Add [cost] section to dev/config.template.toml with all configuration options and commented per-model pricing examples. Fixes #3679.
2026-03-23 14:14:59 -04:00
Nisit Sirimarnkit
f1688c5910
fix(agent): use Gregorian datetime and prioritize date context in prompts (#4369)
Force explicit Gregorian year/month/day via Datelike/Timelike traits instead of chrono format() which inherits system locale (e.g. Buddhist calendar on Thai systems). Prepend datetime before memory context in user messages. Rename DateTimeSection header to CRITICAL CONTEXT.
2026-03-23 14:14:56 -04:00
Argenis
fd9f140268
feat(tools): add cross-channel poll creation tool (#4396)
* feat(tools): add cross-channel poll creation tool

Adds a poll tool that enables cross-channel poll creation with voting
support. Changes all_tools_with_runtime return type from 3-tuple to
4-tuple to accommodate the new reaction handle.

Original PR #4243 by rareba.

* ci: retrigger CI
2026-03-23 13:58:01 -04:00
Argenis
b2dccf86eb
feat(tools): add Firecrawl fallback for JS-heavy sites (#4395)
* feat(tools): add Firecrawl fallback for JS-heavy and bot-blocked sites

Adds optional Firecrawl API integration as a fallback when standard web
fetching fails due to JavaScript-heavy pages or bot protection. Includes
configurable API key, timeout, and domain allowlist/blocklist.

Original PR #4244 by rareba.

* ci: retrigger CI
2026-03-23 13:57:56 -04:00
Argenis
f0c106a938
fix(update): diagnose arch mismatch in validate_binary before execution (#4379)
When a downloaded binary has the wrong architecture, the previous code
attempted to execute it and surfaced a raw "Exec format error (os error 8)".
Now validate_binary reads the ELF/Mach-O header first, compares the binary
architecture against the host, and reports a clear diagnostic like:
"architecture mismatch: downloaded binary is aarch64 but this host is x86_64".

Closes #4291
2026-03-23 13:36:44 -04:00
Keith_void
e276e66c05
fix(config): resolve macOS test failures from path canonicalization (#4362)
- Prefer HOME env var in default_config_dir() before falling back to UserDirs::new()
- Pre-create temp_default_dir in test so is_temp_directory() can canonicalize /var -> /private/var symlink on macOS
2026-03-23 13:33:19 -04:00
Giulio V
2300f21315
feat(channels): extend /new session reset to all channels (#4361)
Move supports_runtime_model_switch() guard from parse_runtime_command() entry to /model and /models match arms only, so /new is available on every channel.

Closes #4236
2026-03-23 13:33:06 -04:00
Giulio V
2575edb1d2
feat(tools): add LLM task tool for structured JSON-only sub-calls (#4241)
* feat(tools): add LLM task tool for structured JSON-only sub-calls

Add LlmTaskTool — a lightweight tool that runs a single prompt through
an LLM provider with no tool access and optionally validates the
response against a caller-supplied JSON Schema. Ideal for structured
data extraction, classification, and transformation in workflows.

- Parameters: prompt (required), schema (optional JSON Schema),
  model (optional override), temperature (optional override)
- Uses configured default provider/model from root config
- Validates response JSON against schema (required fields, type checks)
- Strips markdown code fences from LLM responses before validation
- Gated by ToolOperation::Act security policy
- Registered in all_tools_with_runtime (always available)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: use non-constant value instead of approximate PI in tests

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: rareba <rareba@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 12:50:22 -04:00
Giulio V
d31f2c2d97
feat(agent): add loop detection guardrail for repetitive tool calls (#4240)
* feat(agent): add loop detection guardrail for repetitive tool calls

Introduces a LoopDetector that monitors a sliding window of recent tool
calls and detects three repetitive patterns:

1. Exact repeat — same tool+args called consecutively (default 3+)
2. Ping-pong — two tools alternating for 4+ cycles
3. No progress — same tool with different args but identical results (5+)

Each pattern escalates through Warning -> Block -> CircuitBreaker.
Configurable via [pacing] section: loop_detection_enabled (default true),
loop_detection_window_size (default 20), loop_detection_max_repeats
(default 3).

Wired into run_tool_call_loop alongside the existing time-gated
identical-output detector. Respects loop_ignore_tools exclusion list.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(agent): fix channel test interaction with loop detector

The max_tool_iterations channel tests use an IterativeToolProvider that
intentionally repeats identical tool calls. The loop detector (enabled by
default) fires its circuit breaker before max_tool_iterations is reached,
causing the test to fail. Disable loop detection in these two tests so
they exercise only the max_tool_iterations boundary.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(agent): address PR #4240 review — loop detector correctness and test precision

Critical fixes:
- Fix result_index/tool_calls misalignment: use enumerate() before
  filter_map() so the index stays aligned with tool_calls even when
  ordered_results contains None entries from skipped tool calls.
- Fix hash_value JSON key-order sensitivity: canonicalise() recursively
  sorts object keys before serialisation so {"a":1,"b":2} and
  {"b":2,"a":1} hash identically.

Tightened test assertions:
- ping_pong_escalates_with_more_cycles: assert Block with 5 cycles
  (was loose Warning|Block|Break match).
- no_progress_escalates_to_block_and_break: assert Break at 7 calls
  (was loose Block|Break match).
- no_progress_not_triggered_when_all_args_identical: assert Warning
  specifically (was accepting Ok as alternative).

New tests:
- ping_pong_detects_alternation_with_varying_args (item 3)
- window_eviction_prevents_stale_pattern_detection (item 4)
- hash_value_is_key_order_independent + nested variant (item 2)
- pacing_config_serde_defaults_match_manual_default (item 5)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: rareba <rareba@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 12:49:47 -04:00
Argenis
9d7f6c5aaf
fix(skills): surface actionable warning when skills are skipped due to script policy (#4383)
When a skill directory contains script files and `skills.allow_scripts`
is false (the default), the skill was silently skipped with only a
tracing::warn that most users never see. The LLM then reports "tool is
not available in this environment" with no guidance on how to fix it.

Now the loader emits a user-visible stderr warning that names the
skipped skill and suggests setting `skills.allow_scripts = true`.

Closes #4292
2026-03-23 12:47:32 -04:00
Argenis
f9081fcfa7
fix(update): use exact target triples in find_asset_url to prevent wrong binary selection (#4377)
The previous substring match (e.g. "aarch64-unknown-linux") could match
both gnu and android release assets. Switch to full triples like
"aarch64-unknown-linux-gnu" so find_asset_url only selects the correct
platform binary.

Closes #4293
2026-03-23 12:41:17 -04:00
Argenis
a4d95dec0e
fix(cost): enable cost tracking by default (#3679) (#4382)
Cost tracking was disabled by default (enabled: false), causing the
/api/cost endpoint to always return zeros unless users explicitly
opted in. Change the default to enabled: true so cost tracking works
out of the box for all models and channels.
2026-03-23 12:38:35 -04:00
Argenis
31508b8ec7
fix(build): disable prometheus on 32-bit ARM targets in installer (#3677) (#4384)
The prometheus crate requires AtomicU64 which is unavailable on 32-bit
ARM (armv7l/armv6l). Detect 32-bit ARM in install.sh and build with
--no-default-features, re-enabling only channel-nostr and
skill-creation (excluding observability-prometheus).
2026-03-23 12:35:09 -04:00
Argenis
3d9069552c
fix(gateway): send error responses for unrecognized WebSocket message types (#3681) (#4381)
Previously, the /ws/chat handler silently ignored messages with
unrecognized types, leaving clients waiting for a response that never
comes. Now sends explicit error messages describing the expected format.
2026-03-23 12:33:23 -04:00
Argenis
3b074041bf
fix(ollama): strip /api/chat suffix from user-provided base URL (#4376)
When users configure the Ollama api_url with the full endpoint path
(e.g. http://host:11434/api/chat), normalize_base_url only stripped
/api but not /api/chat, causing the final request URL to become
/api/chat/api/chat which fails on remote servers.

Closes #4342
2026-03-23 12:19:26 -04:00
Argenis
9a95318b85
fix(security): add python, python3, pip, node to default allowed commands (#4375)
The default_allowed_commands() list was missing common scripting
runtimes. After #3691 added serde defaults to AutonomyConfig, users
who omitted allowed_commands from their config silently fell back to
the restrictive default list, breaking shell tool access to Python.

Closes #4338
2026-03-23 12:19:23 -04:00
Argenis
ccd572b827
fix(matrix): handle unused Result from backups().disable() (#4374)
Add let _ = prefix to suppress unused Result warning on
client.encryption().backups().disable().await call.

Closes #4339
2026-03-23 12:19:10 -04:00
Argenis
41dd23175f
chore(ci): unify release pipeline for full auto-sync (#4283)
- Add tag-push trigger to Release Stable workflow so `git push origin v0.5.9`
  auto-triggers the full pipeline (builds, Docker, crates.io, website,
  Scoop, AUR, Homebrew, tweet) in one shot
- Add Homebrew Core as downstream job (was manual-only, never auto-triggered)
- Add `workflow_call` to pub-homebrew-core.yml so it can be called from
  the stable release workflow
- Skip beta releases on version bump commits (prevents beta/stable race)
- Skip auto crates.io publish when stable tag exists (prevents double-publish)
- Auto-create git tag on manual dispatch so tag always exists for downstream
- Fix cut_release_tag.sh to reference correct workflow name
2026-03-22 20:56:47 -04:00
Argenis
864d754b56
chore: bump version to 0.5.9 (#4282)
Release 0.5.9 includes:
- feat: enable internet access by default (#4270)
- feat: add browser automation skill and VNC setup scripts (#4281)
- feat: add voice message transcription support (#4278)
- feat: add image and file support for Feishu/Lark channel (#4280)
- feat: declarative cron job configuration (#4045)
- feat: add SearXNG search provider support (#4272)
- feat: register skill tools as callable tool specs (#4040)
- feat: named sessions with reconnect and validation (#4275)
- feat: restore time-decay scoring for memory (#4274)
- fix: prevent thinking level prefix leak across turns (#4277)
- fix: link enricher title extraction byte offset bug (#4271)
- fix: WhatsApp Web delivery channel with backend validation (#4273)
2026-03-22 20:23:55 -04:00
Argenis
ccd52f3394
feat: add browser automation skill and VNC setup scripts (#4281)
* feat: add browser automation skill and VNC setup scripts

- Add browser skill template for agent-browser CLI integration
- Add VNC setup scripts for GUI browser access (Xvfb, x11vnc, noVNC)
- Add comprehensive browser setup documentation
- Enables headless browser automation for AI agents

Tested on: Ubuntu 24.04, ZeroClaw 0.5.7, agent-browser 0.21.4

Co-authored-by: OpenClaw Assistant

* fix(docs): fix markdown lint errors and update browser config docs

- SKILL.md: add blank lines around headings (MD022)
- browser-setup.md: wrap bare URLs in angle brackets (MD034)
- browser-setup.md: rename duplicate "Access" heading (MD024)
- Update config examples to reflect browser enabled by default
- Add examples for restricting/disabling browser via config

---------

Co-authored-by: Argenis <theonlyhennygod@users.noreply.github.com>
2026-03-22 19:35:20 -04:00
Argenis
eb01aa451d
feat: add voice message transcription support (#4278)
Closes #4231. Adds voice memo detection and transcription for Slack and Discord channels. Audio files are downloaded, transcribed via the existing transcription module, and passed as text to the LLM.
2026-03-22 19:18:07 -04:00
Argenis
c785b45f2d
feat: add image and file support for Feishu/Lark channel (#4280)
Closes #4235. Adds image and file message type handling in the Lark channel - downloads images/files via Lark API, detects MIME types, and passes content to the model for analysis.
2026-03-22 19:14:43 -04:00
Argenis
ffb8b81f90
fix(agent): prevent thinking level prefix from leaking across turns (#4277)
* feat(agent): add thinking/reasoning level control per message

Users can set reasoning depth via /think:high etc. with resolution
hierarchy (inline > session > config > default). 6 levels from Off
to Max. Adjusts temperature and system prompt.

* fix(agent): prevent thinking level prefix from leaking across interactive turns

system_prompt was mutated in place for the first message's thinking
directive, then used as the "baseline" for restoration after each
interactive turn. This caused the first turn's thinking prefix to
persist across all subsequent turns.

Fix: save the original system_prompt before any thinking modifications
and restore from that saved copy between turns.
2026-03-22 19:09:12 -04:00
Argenis
65f856d710
fix(channels): link enricher title extraction byte offset bug (#4271)
* feat(channels): add automatic link understanding for inbound messages

Auto-detects URLs in inbound messages, fetches content, extracts
title+summary, and enriches the message before the agent sees it.
Includes SSRF protection (rejects private IPs).

* fix(channels): use lowercased string for title extraction to prevent byte offset mismatch

extract_title used byte offsets from the lowercased HTML to index into
the original HTML. Multi-byte characters whose lowercase form has a
different byte length (e.g. İ → i̇) would produce wrong slices or panics.
Fix: extract from the lowercased string directly. Add multibyte test.
2026-03-22 19:09:09 -04:00
Argenis
1682620377
feat(tools): enable internet access by default (#4270)
* feat(tools): enable internet access by default

Enable web_fetch, web_search, http_request, and browser tools by
default so ZeroClaw has internet access out of the box. Security
remains fully toggleable via config (set enabled = false to disable).

- web_fetch: enabled with allowed_domains = ["*"]
- web_search: enabled with DuckDuckGo (free, no API key)
- http_request: enabled with allowed_domains = ["*"]
- browser: enabled with allowed_domains = ["*"], agent_browser backend
- text_browser: remains opt-in (requires external binary)

* fix(tests): update component test for browser enabled by default

Update config_nested_optional_sections_default_when_absent to expect
browser.enabled = true, matching the new default.
2026-03-22 19:07:12 -04:00
Argenis
aa455ae89b
feat: declarative cron job configuration (#4045)
Add support for defining cron jobs directly in the TOML config file via
`[[cron.jobs]]` array entries. Declarative jobs are synced to the SQLite
database at scheduler startup with upsert semantics:

- New declarative jobs are inserted
- Existing declarative jobs are updated to match config
- Stale declarative jobs (removed from config) are deleted
- Imperative jobs (created via CLI/API) are never modified

Each declarative job requires a stable `id` for merge tracking. A new
`source` column (`"imperative"` or `"declarative"`) distinguishes the
two creation paths. Shell jobs require `command`, agent jobs require
`prompt`, validated before any DB writes.
2026-03-22 19:03:00 -04:00
Argenis
a9ffd38912
feat(memory): restore time-decay scoring lost in main→master migration (#4274)
Apply exponential time decay (2^(-age/half_life), 7-day half-life) to
memory entry scores post-recall. Core memories are exempt (evergreen).
Consolidate duplicate half-life constants into a single public constant
in the decay module.

Based on PR #4266 by 5queezer with constant consolidation fix.
2026-03-22 19:01:40 -04:00
Argenis
86a0584513
feat: add SearXNG search provider support (#4272)
Closes #4152. Adds SearXNG as a search provider option with JSON output support, configurable instance URL, env override support, and 7 new tests.
2026-03-22 19:01:35 -04:00
Argenis
abef4c5719
fix(cron): add WhatsApp Web delivery channel with backend validation (#4273)
Apply PR #4258 changes to add whatsapp/whatsapp-web/whatsapp_web match
arm in deliver_announcement, feature-gated behind whatsapp-web.

Added is_web_config() guard to bail early when the WhatsApp config is
for Cloud API mode (no session_path), preventing a confusing runtime
failure with an empty session path.
2026-03-22 18:58:26 -04:00
Argenis
483b2336c4
feat(gateway): add named sessions with reconnect and validation fixes (#4275)
* fix(cron): add WhatsApp Web delivery channel with backend validation

Apply PR #4258 changes to add whatsapp/whatsapp-web/whatsapp_web match
arm in deliver_announcement, feature-gated behind whatsapp-web.

Added is_web_config() guard to bail early when the WhatsApp config is
for Cloud API mode (no session_path), preventing a confusing runtime
failure with an empty session path.

* feat(gateway): add named sessions with human-readable labels

Apply PR #4267 changes with bug fixes:
- Add get_session_name trait method so WS session_start includes the
  stored name on reconnect (not just when ?name= query param is present)
- Rename API now returns 404 for non-existent sessions instead of
  silently succeeding
- Empty ?name= query param on WS connect no longer clears existing name
2026-03-22 18:58:15 -04:00
Argenis
14cda3bc9a
feat: register skill tools as callable tool specs (#4040)
Skill tools defined in [[tools]] sections are now registered as first-class
callable tool specs via the Tool trait, rather than only appearing as XML
in the system prompt. This enables the LLM to invoke skill tools through
native function calling.

- Add SkillShellTool for shell/script kind skill tools
- Add SkillHttpTool for http kind skill tools
- Add skills_to_tools() conversion and register_skill_tools() wiring
- Wire registration into both CLI and process_message agent paths
- Update prompt rendering to mark registered tools as callable
- Update affected tests across skills, agent/prompt, and channels
2026-03-22 18:51:24 -04:00
Argenis
6e8f0fa43c
docs: add ADR for tool shared state ownership contract (#4057)
Define the contract for long-lived shared state in multi-client tool
execution, covering ownership (handle pattern), identity assignment
(daemon-provided ClientId), lifecycle (validation at registration),
isolation (per-client for security state), and reload semantics
(config hash invalidation).
2026-03-22 18:40:34 -04:00
argenis de la rosa
a965b129f8 chore: bump version to 0.5.8
Release trigger bump after recent fixes.
2026-03-22 16:29:45 -04:00
Argenis
c135de41b7
feat(matrix): add allowed_rooms config for room-level gating (#4230) (#4260)
Add an `allowed_rooms` field to MatrixConfig that controls which rooms
the bot will accept messages from and join invites for. When the list
is non-empty, messages from unlisted rooms are silently dropped and
room invites are auto-rejected. When empty (default), all rooms are
allowed, preserving backward compatibility.

- Config: add `allowed_rooms: Vec<String>` with `#[serde(default)]`
- Message handler: replace disabled room_id filter with allowlist check
- Invite handler: auto-accept allowed rooms, auto-reject others
- Support both canonical room IDs and aliases, case-insensitive
2026-03-22 14:41:43 -04:00
Argenis
2d2c2ac9e6
feat(telegram): support forwarded messages with attribution (#4265)
Parse forward_from, forward_from_chat, and forward_sender_name fields
from Telegram message updates. Prepend forwarding attribution to message
content so the LLM has context about the original sender.

Closes #4118
2026-03-22 14:36:31 -04:00
Argenis
5e774bbd70
feat(multimodal): route image messages to dedicated vision provider (#4264)
When vision_provider is configured in [multimodal] config, messages
containing [IMAGE:] markers are automatically routed to the specified
vision-capable provider instead of failing on the default text provider.

Closes #4119
2026-03-22 14:36:29 -04:00
Argenis
33015067eb
feat(tts): add local Piper TTS provider (#4263)
Add a piper TTS provider that communicates with a local Piper/Coqui TTS
server via an OpenAI-compatible HTTP endpoint. This enables fully offline
voice pipelines: Whisper (STT) → LLM → Piper (TTS).

Closes #4116
2026-03-22 14:36:26 -04:00
Argenis
6b10c0b891
fix(approval): merge default auto_approve entries with user config (#4262)
When a user provides a custom `auto_approve` list in their TOML
config (e.g. to add an MCP tool), serde replaces the built-in
defaults instead of merging. This causes default safe tools like
`weather`, `calculator`, and `file_read` to lose auto-approve
status and get silently denied in non-interactive channel runs.

Add `ensure_default_auto_approve()` which merges built-in entries
into the user's list after deserialization, preserving user
additions while guaranteeing defaults are always present. Users
who want to require approval for a default tool can use
`always_ask`, which takes precedence.

Closes #4247
2026-03-22 14:28:09 -04:00
Argenis
bf817e30d2
fix(provider): prevent async runtime panic during model refresh (#4261)
Wrap `fetch_live_models_for_provider` calls in
`tokio::task::spawn_blocking` so the `reqwest::blocking::Client`
is created and dropped on a dedicated thread pool instead of
inside the async Tokio context. This prevents the
"Cannot drop a runtime in a context where blocking is not allowed"
panic when running `models refresh --provider openai`.

Closes #4253
2026-03-22 14:22:47 -04:00
Alix-007
0051a0c296
fix(matrix): enforce configured room scope on inbound events (#4251)
Co-authored-by: Alix-007 <267018309+Alix-007@users.noreply.github.com>
2026-03-22 14:08:13 -04:00
Canberk Özkan
d753de91f1
fix(skills): prevent panic by ensuring UTF-8 char boundary during truncation (#4252)
Fixed issue #4139.

Previously, slicing a string at exactly 64 bytes could land in the middle of a multi-byte UTF-8 character (e.g., Chinese characters), causing a runtime panic.

Changes:
- Replaced direct byte slicing with a safe boundary lookup using .char_indices().
- Ensures truncation always occurs at a valid character boundary at or before the 64-byte limit.
- Maintained existing hyphen-trimming logic.

Co-authored-by: loriscience <loriscience@gmail.com>
2026-03-22 14:08:01 -04:00
Argenis
f6b2f61a01
fix(matrix): disable automatic key backup when no backup key is configured (#4259)
Explicitly call `client.encryption().backups().disable()` when backups
are not enabled, preventing the matrix_sdk_crypto crate from attempting
room key backups on every sync cycle and spamming the logs with
"Trying to backup room keys but no backup key was found" warnings.

Closes #4227
2026-03-22 13:55:45 -04:00
Argenis
70e7910cb9
fix(web): remove unused import blocking release pipeline (#4234)
fix(web): remove unused import blocking release pipeline
2026-03-22 01:35:26 -04:00
argenis de la rosa
a8868768e8 fix(web): remove unused ChevronsUpDown import blocking release pipeline
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 01:20:51 -04:00
Argenis
67293c50df
chore: bump version to 0.5.7 (#4232)
chore: bump version to 0.5.7
2026-03-22 01:14:08 -04:00
argenis de la rosa
1646079d25 chore: bump version to 0.5.7
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 00:49:41 -04:00
Argenis
25b639435f
fix: merge voice-wake feature (PR #4162) with conflict resolution (#4225)
* feat(channels): add voice wake word detection channel

Add VoiceWakeChannel behind the `voice-wake` feature flag that:
- Captures audio from the default microphone via cpal
- Uses energy-based VAD to detect speech activity
- Transcribes speech via the existing transcription API (Whisper)
- Checks for a configurable wake word in the transcription
- On detection, captures the following utterance and dispatches it
  as a ChannelMessage

State machine: Listening -> Triggered -> Capturing -> Processing -> Listening

Config keys (under [channels_config.voice_wake]):
- wake_word (default: "hey zeroclaw")
- silence_timeout_ms (default: 2000)
- energy_threshold (default: 0.01)
- max_capture_secs (default: 30)

Includes tests for config parsing, state machine, RMS energy
computation, and WAV encoding.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(config): fix pre-existing test compilation errors in schema.rs

- Remove #[cfg(unix)] gate on `use tempfile::TempDir` import since
  TempDir is used unconditionally in bootstrap file tests
- Add explicit type annotations on tokio::fs::* calls to resolve
  type inference failures (create_dir_all, write, read_to_string)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(channels): exclude voice-wake from all-features CI check

Add a `ci-all` meta-feature in Cargo.toml that includes every feature
except `voice-wake`, which requires `libasound2-dev` (ALSA) not present
on CI runners. Update the check-all-features CI job to use
`--features ci-all` instead of `--all-features`.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Giulio V <vannini.gv@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 00:49:12 -04:00
Argenis
77779844e5
feat(memory): layered architecture upgrade + remove mem0 backend (#4226)
feat(memory): layered architecture upgrade + remove mem0 backend
2026-03-22 00:47:42 -04:00
Argenis
f658d5806a
fix: honor [autonomy] config section in daemon/channel mode
Fixes #4171
2026-03-22 00:47:32 -04:00
Argenis
7134fe0824
Merge pull request #4223 from zeroclaw-labs/fix/4214-heartbeat-utf8-safety
fix(heartbeat): prevent UTF-8 panic, add memory bounds and path validation
2026-03-22 00:41:47 -04:00
Argenis
263802b3df
Merge pull request #4224 from zeroclaw-labs/fix/4215-thai-i18n-cleanup
fix(i18n): remove extra keys and translate notion in th.toml
2026-03-22 00:41:21 -04:00
Argenis
3c25fddb2a
fix: merge Gmail Pub/Sub push PR #4164 (already integrated via #4200) (#4222)
* feat(channels): add Gmail Pub/Sub push notifications for real-time email

Add GmailPushChannel that replaces IMAP polling with Google's Pub/Sub
push notification system for real-time email-driven automation.

- New channel at src/channels/gmail_push.rs implementing the Channel trait
- Registers Gmail watch subscription (POST /gmail/v1/users/me/watch)
  with automatic renewal before the 7-day expiry
- Handles incoming Pub/Sub notifications at POST /webhook/gmail
- Fetches new messages via Gmail History API (startHistoryId-based)
- Dispatches email messages to the agent with full metadata
- Sends replies via Gmail messages.send API
- Config: gmail_push.enabled, topic, label_filter, oauth_token,
  allowed_senders, webhook_url
- OAuth token encrypted at rest via existing secret store
- Webhook endpoint added to gateway router
- 30+ unit tests covering notification parsing, header extraction,
  body decoding, sender allowlist, and config serialization

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(config): fix pre-existing test compilation errors in schema.rs

- Remove #[cfg(unix)] gate on `use tempfile::TempDir` import since
  TempDir is used unconditionally in bootstrap file tests
- Add explicit type annotations on tokio::fs::* calls to resolve
  type inference failures (create_dir_all, write, read_to_string)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(channels): fix extract_body_text_plain test

Gmail API sends base64url without padding. The decode_body function
converted URL-safe chars back to standard base64 but did not restore
the padding, causing STANDARD decoder to fail and falling back to
snippet. Add padding restoration before decoding.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Giulio V <vannini.gv@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 00:40:42 -04:00
Argenis
a6a46bdd25
fix: add weather tool to default auto_approve list
Fixes #4170
2026-03-22 00:21:33 -04:00
Argenis
235d4d2f1c
fix: replace ILIKE substring matching with full-text search in postgres memory recall()
Fixes #4204
2026-03-22 00:20:11 -04:00
argenis de la rosa
bd1e8c8e1a merge: resolve conflicts with master + remove memory-mem0 from ci-all
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 00:18:09 -04:00
Argenis
f81807bff6
fix: serialize env-dependent codex tests to prevent race (#4210) (#4218)
Add a process-scoped Mutex that all env-var-mutating tests in
openai_codex::tests must hold.  This prevents std::env::set_var /
remove_var calls from racing when Rust's test harness runs them on
parallel threads.

Affected tests:
- resolve_responses_url_prefers_explicit_endpoint_env
- resolve_responses_url_uses_provider_api_url_override
- resolve_reasoning_effort_prefers_configured_override
- resolve_reasoning_effort_uses_legacy_env_when_unconfigured
2026-03-22 00:14:01 -04:00
argenis de la rosa
bb7006313c feat(memory): layered architecture upgrade + remove mem0 backend
Implement 6-phase memory system improvement:
- Multi-stage retrieval pipeline (cache → FTS → vector)
- Namespace isolation with strict filtering
- Importance scoring (category + keyword heuristics)
- Conflict resolution via Jaccard similarity + superseded_by
- Audit trail decorator (AuditedMemory<M>)
- Policy engine (quotas, read-only namespaces, retention rules)
- Deterministic sort tiebreaker on equal scores

Remove mem0 (OpenMemory) backend — all capabilities now covered
natively with better performance (local SQLite vs external REST API).

46 battle tests + 262 existing tests pass. Backward-compatible:
existing databases auto-migrate, existing configs work unchanged.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 00:09:43 -04:00
Argenis
9a49626376
fix: use POSIX-compatible sh -c instead of dash-specific -lc (#4209) (#4217)
* fix: build web dashboard during install.sh (#4207)

* fix: use POSIX-compatible sh -c instead of dash-specific -lc in cron scheduler (#4209)
2026-03-22 00:07:37 -04:00
Argenis
8b978a721f
fix: build web dashboard during install.sh (#4207) (#4216) 2026-03-22 00:02:54 -04:00
argenis de la rosa
75b4c1d4a4 fix(heartbeat): prevent UTF-8 panic, add memory bounds and path validation in session context
- Use char_indices for safe UTF-8 truncation instead of byte slicing
- Replace unbounded Vec with VecDeque rolling window in load_jsonl_messages
- Add path separator validation for channel/to to prevent directory traversal
2026-03-22 00:01:44 -04:00
argenis de la rosa
b2087e6065 fix(i18n): remove extra keys and translate untranslated notion entry in th.toml 2026-03-21 23:59:46 -04:00
Nisit Sirimarnkit
ad8f81ad76
Merge branch 'master' into i18n/thai-tool-descriptions 2026-03-22 10:28:47 +07:00
ninenox
c58e1c1fb3 i18n: add Thai tool descriptions 2026-03-22 10:09:03 +07:00
Martin Minkus
cb0779d761 feat(heartbeat): add load_session_context to inject conversation history
When `load_session_context = true` in `[heartbeat]`, the daemon loads the
last 20 messages from the target user's JSONL session file and prepends them
to the heartbeat task prompt before calling the LLM.

This gives the companion context — who the user is, what was last discussed —
so outreach messages feel like a natural continuation rather than a blank-slate
ping. Defaults to `false` (opt-in, no change to existing behaviour).

Key behaviours:
- Session context is re-read on every heartbeat tick (not cached at startup)
- Skips context injection if only assistant messages are present (prevents
  heartbeat outputs feeding back in a loop)
- Scans sessions directory for matching JSONL files using flexible filename
  matching: {channel}_{to}.jsonl, {channel}_*_{to}.jsonl, or
  {channel}_{to}_*.jsonl — handles varying session key formats
- Injects file mtime as "last message ~Xh ago" so the LLM knows how long
  the user has been silent

Config example:
  [heartbeat]
  enabled = true
  interval_minutes = 120
  load_session_context = true
  target = "telegram"
  to = "your_username"

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 02:44:19 +00:00
Chris Hengge
daca2d9354
fix(web/tools): make section headings collapsible (#4180)
Agent Tools and CLI Tools section headings were static divs with no
way to collapse sections the user is not interested in, making the
page unwieldy with a large tool set.

- Convert both section heading divs to button elements toggling
  agentSectionOpen / cliSectionOpen state (both default open)
- Section content renders conditionally on those booleans
- ChevronsUpDown icon added (already in lucide-react bundle) that
  fades in on hover and indicates collapsed/expanded state
- No change to individual tool card parameter schema expand/collapse

Risk: Low — UI state only, no API or logic change.
Does not change: search/filter behaviour, tool card expand/collapse,
CLI tools table structure.
2026-03-21 22:25:18 -04:00
Chris Hengge
3c1e710c38
fix(web/logs): layout, footer status indicator, and empty-state note (#4203)
Three issues addressed:

Empty page: the logs page shows nothing at idle because the SSE stream
only carries ObserverEvent variants (llm_request, tool_call, error,
agent_start, agent_end). Daemon stdout and RUST_LOG tracing output go
to the terminal/log file and are never forwarded to the broadcast
channel — this is correct behaviour, not a misconfiguration. Added a
dismissible informational banner explaining what appears on the stream
and how to access tracing output (RUST_LOG + terminal).

Layout: flex-1 log entries div was missing min-h-0, which can cause
flex children to refuse to shrink below content size in some browsers.

Connection indicator: moved from the toolbar (where it cluttered the
title and controls) to a compact footer strip below the scroll area,
matching the /agent page pattern exactly.

Also added colour rules for llm_request, agent_start, agent_end,
tool_call_start event types which previously fell through to default
grey.

Risk: Low — UI layout and informational copy only, no backend change.
Does not change: SSE connection logic, event parsing, pause/resume,
type filters, or the underlying broadcast observer.
2026-03-21 22:11:20 -04:00
Chris Hengge
0aefde95f2
fix(web/config): fill viewport and add TOML syntax highlighting (#4201)
Two issues with the config editor:

Layout: the page root had no height constraint and the textarea used
min-h-[500px] resize-y, causing independent scrollbars on both the
page and the editor. Fixed by adopting the Memory/Cron flex column
pattern so the editor fills the remaining viewport height with a single
scroll surface.

Highlighting: plain textarea with no visual structure for TOML.
Added a zero-dependency layered pre-overlay technique — no new npm
packages (per CLAUDE.md anti-pattern rules). A pre element sits
absolute behind a transparent textarea; highlightToml() produces HTML
colour-coding sections, keys, strings, booleans, numbers, datetimes,
and comments via per-line regex. onScroll syncs the overlay. Tab key
inserts two spaces instead of leaving focus.

dangerouslySetInnerHTML used on the pre — content is the user's own
local config, not from the network, risk equivalent to any local editor.

Risk: Low-Medium — no API or backend change. New rendering logic
in editor only.
Does not change: save/load API calls, validation, sensitive field
masking behaviour.
2026-03-21 22:11:18 -04:00
Chris Hengge
a84aa60554
fix(web/cron): contain table scroll within viewport (#4186)
The cron page used a block-flow root with no height constraint, causing
the jobs table to grow taller than the viewport and the page itself to
scroll. This was inconsistent with the Memory page pattern.

- Change page root to flex flex-col h-full matching Memory's layout
- Table wrapper gains flex-1 min-h-0 overflow-auto so it fills
  remaining height and scrolls both axes internally
- Table header already has position:sticky so it pins correctly
  inside the scrolling container with no CSS change needed

Risk: Low — layout only, no logic or API change.
Does not change: job CRUD, modal, catch-up toggle, run history panel.
2026-03-21 22:11:15 -04:00
Chris Hengge
edd4b37325
fix(web/dashboard): rename channels card heading and add internal scroll (#4178)
The card heading used the key dashboard.active_channels ("Active Channels")
even though the card has a toggle between Active and All views, making the
static heading misleading. The channel list div had no height cap, causing
tall channel lists to stretch the card and break 3-column grid alignment.

- Change heading to t("dashboard.channels") — key already present in all
  three locales (zh/en/tr), no i18n changes needed
- Add overflow-y-auto max-h-48 pr-1 to the channel list wrapper so it
  scrolls internally instead of stretching the card
2026-03-21 22:09:00 -04:00
Argenis
c5f0155061
Merge pull request #4193 from zeroclaw-labs/fix/reaction-tool
fix(tools): pass platform channel_id to reaction trait
2026-03-21 21:38:32 -04:00
argenis de la rosa
9ee06ed6fc merge: resolve conflicts with master (image_gen + sessions) 2026-03-21 21:18:46 -04:00
Argenis
ac6b43e9f4
fix: remove unused channel_names field from DiscordHistoryChannel (#4199)
* feat: add discord history logging and search tool with persistent channel cache

* fix: remove unused channel_names field from DiscordHistoryChannel

The channel_names HashMap was declared and initialized but never used.
Channel name caching is handled via discord_memory.get()/store() with
the cache:channel_name: prefix. Remove the dead field.

* style: run cargo fmt on discord_history.rs

---------

Co-authored-by: ninenox <nisit15@hotmail.com>
2026-03-21 21:15:23 -04:00
Argenis
6c5573ad96
Merge pull request #4194 from zeroclaw-labs/fix/session-messaging-tools
fix(security): add enforcement and validation to session tools
2026-03-21 21:15:17 -04:00
Argenis
1d57a0d1e5
fix(web/tools): improve a11y in collapsible section headings (#4197)
* fix(web/tools): make section headings collapsible

Agent Tools and CLI Tools section headings were static divs with no
way to collapse sections the user is not interested in, making the
page unwieldy with a large tool set.

- Convert both section heading divs to button elements toggling
  agentSectionOpen / cliSectionOpen state (both default open)
- Section content renders conditionally on those booleans
- ChevronsUpDown icon added (already in lucide-react bundle) that
  fades in on hover and indicates collapsed/expanded state
- No change to individual tool card parameter schema expand/collapse

Risk: Low — UI state only, no API or logic change.
Does not change: search/filter behaviour, tool card expand/collapse,
CLI tools table structure.

* fix(web/tools): improve a11y and fix invalid HTML in collapsible sections

- Replace <h2> inside <button> with <span role="heading" aria-level={2}>
  to fix invalid HTML (heading elements not permitted in interactive content)
- Add aria-expanded attribute to section toggle buttons for screen readers
- Add aria-controls + id linking buttons to their controlled sections
- Replace ChevronsUpDown with ChevronDown icon — ChevronsUpDown is
  visually symmetric so rotating 180deg has no visible effect; ChevronDown
  rotating to -90deg gives a clear directional cue
- Remove unused ChevronsUpDown import

---------

Co-authored-by: WareWolf-MoonWall <chris.hengge@gmail.com>
2026-03-21 21:02:10 -04:00
Argenis
9780c7d797
fix: restrict free command to Linux-only in security policy (#4198)
* fix: resolve claude-code test flakiness and update security policy

* fix: restrict `free` command to Linux-only in security policy

`free` is not available on macOS or other BSDs. Move it behind
a #[cfg(target_os = "linux")] gate so it is only included in the
default allowed commands on Linux systems.

---------

Co-authored-by: ninenox <nisit15@hotmail.com>
2026-03-21 21:02:05 -04:00
Argenis
35a5451a17
fix(channels): address critical security bugs in Gmail Pub/Sub push (#4200)
* feat(channels): add Gmail Pub/Sub push notifications for real-time email

Add GmailPushChannel that replaces IMAP polling with Google's Pub/Sub
push notification system for real-time email-driven automation.

- New channel at src/channels/gmail_push.rs implementing the Channel trait
- Registers Gmail watch subscription (POST /gmail/v1/users/me/watch)
  with automatic renewal before the 7-day expiry
- Handles incoming Pub/Sub notifications at POST /webhook/gmail
- Fetches new messages via Gmail History API (startHistoryId-based)
- Dispatches email messages to the agent with full metadata
- Sends replies via Gmail messages.send API
- Config: gmail_push.enabled, topic, label_filter, oauth_token,
  allowed_senders, webhook_url
- OAuth token encrypted at rest via existing secret store
- Webhook endpoint added to gateway router
- 30+ unit tests covering notification parsing, header extraction,
  body decoding, sender allowlist, and config serialization

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(config): fix pre-existing test compilation errors in schema.rs

- Remove #[cfg(unix)] gate on `use tempfile::TempDir` import since
  TempDir is used unconditionally in bootstrap file tests
- Add explicit type annotations on tokio::fs::* calls to resolve
  type inference failures (create_dir_all, write, read_to_string)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(channels): fix extract_body_text_plain test

Gmail API sends base64url without padding. The decode_body function
converted URL-safe chars back to standard base64 but did not restore
the padding, causing STANDARD decoder to fail and falling back to
snippet. Add padding restoration before decoding.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(channels): address critical security bugs in Gmail Pub/Sub push

- Add webhook authentication via shared secret (webhook_secret config
  field or GMAIL_PUSH_WEBHOOK_SECRET env var), preventing unauthorized
  message injection through the unauthenticated webhook endpoint
- Add 1MB body size limit on webhook endpoint to prevent memory exhaustion
- Fix race condition in handle_notification: hold history_id lock across
  the read-fetch-update cycle to prevent duplicate message processing
  when concurrent webhook notifications arrive
- Sanitize RFC 2822 headers (To/Subject) to prevent CRLF injection
  attacks that could add arbitrary headers to outgoing emails
- Fix extract_email_from_header panic on malformed angle brackets by
  using rfind('>') and validating bracket ordering
- Add 30s default HTTP client timeout for all Gmail API calls,
  preventing indefinite hangs
- Clone tx sender before message processing loop to avoid holding
  the mutex lock across network calls

---------

Co-authored-by: Giulio V <vannini.gv@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 20:59:56 -04:00
Argenis
8e81d44d54
fix(gateway): address critical security and reliability bugs in Live Canvas (#4196)
* feat(gateway): add Live Canvas (A2UI) tool and real-time web viewer

Add a Live Canvas system that enables the agent to push rendered content
(HTML, SVG, Markdown, text) to a web-visible canvas in real time.

Backend:
- src/tools/canvas.rs: CanvasTool with render/snapshot/clear/eval actions,
  backed by a shared CanvasStore (Arc<RwLock<HashMap>>) with per-canvas
  broadcast channels for real-time updates
- src/gateway/canvas.rs: REST endpoints (GET/POST/DELETE /api/canvas/:id,
  GET /api/canvas/:id/history, GET /api/canvas) and WebSocket endpoint
  (WS /ws/canvas/:id) for real-time frame delivery

Frontend:
- web/src/pages/Canvas.tsx: Canvas viewer page with WebSocket connection,
  iframe sandbox rendering, canvas switcher, frame history panel

Registration:
- CanvasTool registered in all_tools_with_runtime (always available)
- Canvas routes wired into gateway router
- CanvasStore added to AppState
- Canvas page added to App.tsx router and Sidebar navigation
- i18n keys added for en/zh/tr locales

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(config): fix pre-existing test compilation errors in schema.rs

- Remove #[cfg(unix)] gate on `use tempfile::TempDir` import since
  TempDir is used unconditionally in bootstrap file tests
- Add explicit type annotations on tokio::fs::* calls to resolve
  type inference failures (create_dir_all, write, read_to_string)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(gateway): share CanvasStore between tool and REST API

The CanvasTool and gateway AppState each created their own CanvasStore,
so content rendered via the tool never appeared in the REST API.

Create the CanvasStore once in the gateway, pass it to
all_tools_with_runtime via a new optional parameter, and reuse the
same instance in AppState.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(gateway): address critical security and reliability bugs in Live Canvas

- Validate content_type in REST POST endpoint against allowed set,
  preventing injection of "eval" frames via the REST API
- Enforce MAX_CONTENT_SIZE (256KB) limit on REST POST endpoint,
  matching tool-side validation to prevent memory exhaustion
- Add MAX_CANVAS_COUNT (100) limit to prevent unbounded canvas creation
  and memory exhaustion from CanvasStore
- Handle broadcast RecvError::Lagged in WebSocket handler gracefully
  instead of disconnecting the client
- Make MAX_CONTENT_SIZE and ALLOWED_CONTENT_TYPES pub for gateway reuse
- Update CanvasStore::render and subscribe to return Option for
  canvas count enforcement

---------

Co-authored-by: Giulio V <vannini.gv@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: rareba <rareba@users.noreply.github.com>
2026-03-21 20:59:18 -04:00
Argenis
86ad0c6a2b
fix(channels): address critical bugs in voice wake word detection (#4191)
* feat(channels): add voice wake word detection channel

Add VoiceWakeChannel behind the `voice-wake` feature flag that:
- Captures audio from the default microphone via cpal
- Uses energy-based VAD to detect speech activity
- Transcribes speech via the existing transcription API (Whisper)
- Checks for a configurable wake word in the transcription
- On detection, captures the following utterance and dispatches it
  as a ChannelMessage

State machine: Listening -> Triggered -> Capturing -> Processing -> Listening

Config keys (under [channels_config.voice_wake]):
- wake_word (default: "hey zeroclaw")
- silence_timeout_ms (default: 2000)
- energy_threshold (default: 0.01)
- max_capture_secs (default: 30)

Includes tests for config parsing, state machine, RMS energy
computation, and WAV encoding.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(config): fix pre-existing test compilation errors in schema.rs

- Remove #[cfg(unix)] gate on `use tempfile::TempDir` import since
  TempDir is used unconditionally in bootstrap file tests
- Add explicit type annotations on tokio::fs::* calls to resolve
  type inference failures (create_dir_all, write, read_to_string)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(channels): exclude voice-wake from all-features CI check

Add a `ci-all` meta-feature in Cargo.toml that includes every feature
except `voice-wake`, which requires `libasound2-dev` (ALSA) not present
on CI runners. Update the check-all-features CI job to use
`--features ci-all` instead of `--all-features`.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(channels): address critical bugs in voice wake word detection

- Replace std::mem::forget(stream) with dedicated thread that holds the
  cpal stream and shuts down cleanly via oneshot channel, preventing
  microphone resource leaks on task cancellation
- Add config validation: energy_threshold must be positive+finite,
  silence_timeout_ms >= 100ms, max_capture_secs clamped to 300
- Guard WAV encoding against u32 overflow for large audio buffers
- Add hard cap on capture_buf size to prevent unbounded memory growth
- Increase audio channel buffer from 4 to 64 slots to reduce chunk
  drops during transcription API calls
- Remove dead WakeState::Processing variant that was never entered

---------

Co-authored-by: Giulio V <vannini.gv@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 20:43:19 -04:00
Argenis
6ecf89d6a9
fix(ci): skip release and publish workflows on forks (#4190)
When a fork syncs with upstream, GitHub attributes the push to the fork
owner, causing release-beta-on-push and publish-crates-auto to run
under the wrong identity — leading to confusing notifications and
guaranteed failures (missing secrets).

Add repository guards to root jobs so the entire pipeline is skipped
on forks.
2026-03-21 20:42:55 -04:00
argenis de la rosa
691efa4d8c style: fix cargo fmt formatting in reaction tool 2026-03-21 20:38:24 -04:00
argenis de la rosa
d1e3f435b4 style: fix cargo fmt formatting in session tools 2026-03-21 20:38:08 -04:00
Argenis
44c3e264ad
Merge pull request #4192 from zeroclaw-labs/fix/image-gen-tool
fix(tools): harden image_gen security and model validation
2026-03-21 20:37:27 -04:00
argenis de la rosa
f2b6013329 fix(tools): harden image_gen security enforcement and model validation
- Replace manual can_act()/record_action() with enforce_tool_operation()
  to match the codebase convention used by all other tools (notion,
  memory_forget, claude_code, delegate, etc.), producing consistent
  error messages and avoiding logic duplication.

- Add model parameter validation to prevent URL path traversal attacks
  via crafted model identifiers (e.g. "../../evil-endpoint").

- Add tests for model traversal rejection and filename sanitization.
2026-03-21 20:08:51 -04:00
argenis de la rosa
05d3c51a30 fix(security): add security policy enforcement and input validation to session tools
SessionsSendTool was missing security gate enforcement entirely - any agent
could send messages to any session without security policy checks. Similarly,
SessionsHistoryTool had no security enforcement for reading session data.

Changes:
- Add SecurityPolicy field to SessionsHistoryTool (enforces ToolOperation::Read)
- Add SecurityPolicy field to SessionsSendTool (enforces ToolOperation::Act)
- Add session_id validation to reject empty or non-alphanumeric-only IDs
- Pass security policy from all_tools_with_runtime registration
- Add tests for empty session_id, non-alphanumeric session_id validation
2026-03-21 20:04:44 -04:00
argenis de la rosa
2ceda31ce2 fix(tools): pass platform channel_id to reaction trait instead of channel name
The reaction tool was passing the channel adapter name (e.g. "discord",
"slack") as the first argument to Channel::add_reaction() and
Channel::remove_reaction(), but the trait signature expects a
platform-specific channel_id (e.g. Discord channel snowflake, Slack
channel ID like "C0123ABCD"). This would cause all reaction API calls
to fail at the platform level.

Fixes:
- Add required "channel_id" parameter to the tool schema
- Extract and pass channel_id (not channel_name) to trait methods
- Update tool description to mention the new parameter
- Add MockChannel channel_id capture for test verification
- Add test asserting channel_id (not name) reaches the trait
- Update all existing tests to supply channel_id
2026-03-21 20:01:22 -04:00
Argenis
9069bc3c1f
fix(agent): add system prompt budgeting for small-context models (#4185)
For models with small context windows (e.g. glm-4.5-air ~8K tokens),
the system prompt alone can exceed the limit. This adds:

- max_system_prompt_chars config option (default 0 = unlimited)
- compact_context now also compacts the system prompt: skips the
  Channel Capabilities section and shows only tool names
- Truncation with marker when prompt exceeds the budget

Users can set `max_system_prompt_chars = 8000` in [agent] config
to cap the system prompt for small-context models.

Closes #4124
2026-03-21 19:40:21 -04:00
Argenis
9319fe18da
fix(approval): support wildcard * in auto_approve and always_ask (#4184)
auto_approve = ["*"] was doing exact string matching, so only the
literal tool name "*" was matched. Users expecting wildcard semantics
had every tool blocked in supervised mode.

Also adds "prompt exceeds max length" to the context-window error
detection hints (fixes GLM/ZAI error 1261 detection).

Closes #4127
2026-03-21 19:38:11 -04:00
Argenis
cc454a86c8
fix(install): remove pairing code display from installer (#4176)
The gateway pairing code is now shown in the dashboard, so displaying
it in the installer output is redundant and cluttered (showed 3 codes).
2026-03-21 19:06:37 -04:00
Argenis
256e8ccebf
chore: bump version to v0.5.6 (#4174)
Update version across all distribution manifests:
- Cargo.toml / Cargo.lock
- dist/aur/PKGBUILD + .SRCINFO
- dist/scoop/zeroclaw.json
2026-03-21 18:03:38 -04:00
Argenis
72c9e6b6ca
fix(publish): publish aardvark-sys dep before main crate (#4172)
* fix(publish): add aardvark-sys version and publish it before main crate

- Add version = "0.1.0" to aardvark-sys path dependency in Cargo.toml
- Update all three publish workflows to publish aardvark-sys first
- Add aardvark-sys COPY to Dockerfile for workspace builds
- Fixes cargo publish failure: "dependency aardvark-sys does not
  specify a version"

* ci: publish aardvark-sys before main crate in all publish workflows

All three crates.io publish workflows now publish aardvark-sys first,
wait for indexing, then publish the main zeroclawlabs crate.
2026-03-21 16:20:50 -04:00
Argenis
755a129ca2
fix(install): use /dev/tty for sudo in curl|bash Xcode license accept (#4169)
When run via `curl | bash`, stdin is the curl pipe, so sudo cannot
prompt for a password. Redirect sudo's stdin from /dev/tty to reach
the real terminal, allowing the password prompt to work in piped
invocations.
2026-03-21 14:15:21 -04:00
Argenis
8b0d3684c5
fix(install): auto-accept Xcode license instead of bailing out (#4165)
Instead of exiting with a manual remediation step, the installer now
attempts to accept the Xcode/CLT license automatically via
`sudo xcodebuild -license accept`. Falls back to a clear error message
only if sudo fails (e.g. no terminal or password).
2026-03-21 13:57:38 -04:00
Giulio V
cdb5ac1471 fix(tools): fix remove_reaction_success test
The output format used "{action}ed" which produced "removeed" for the
remove action. Use explicit past-tense mapping instead.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 18:49:35 +01:00
Giulio V
67acb1a0bb fix(config): fix pre-existing test compilation errors in schema.rs
- Remove #[cfg(unix)] gate on `use tempfile::TempDir` import since
  TempDir is used unconditionally in bootstrap file tests
- Add explicit type annotations on tokio::fs::* calls to resolve
  type inference failures (create_dir_all, write, read_to_string)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 18:10:05 +01:00
Giulio V
9eac6bafef fix(config): fix pre-existing test compilation errors in schema.rs
- Remove #[cfg(unix)] gate on `use tempfile::TempDir` import since
  TempDir is used unconditionally in bootstrap file tests
- Add explicit type annotations on tokio::fs::* calls to resolve
  type inference failures (create_dir_all, write, read_to_string)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 18:09:48 +01:00
Giulio V
a12f2ff439 fix(config): fix pre-existing test compilation errors in schema.rs
- Remove #[cfg(unix)] gate on `use tempfile::TempDir` import since
  TempDir is used unconditionally in bootstrap file tests
- Add explicit type annotations on tokio::fs::* calls to resolve
  type inference failures (create_dir_all, write, read_to_string)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 18:09:36 +01:00
Argenis
a38a4d132e
fix(hardware): drain stdin in subprocess test to prevent broken pipe flake (#4161)
* fix(hardware): drain stdin in subprocess test to prevent broken pipe flake

The test script did not consume stdin, so SubprocessTool's stdin write
raced against the process exit, causing intermittent EPIPE failures.
Add `cat > /dev/null` to drain stdin before producing output.

* style: format subprocess test
2026-03-21 12:19:53 -04:00
Argenis
48aba73d3a
fix(install): always check Xcode license on macOS, not just with --install-system-deps (#4153)
The Xcode license test-compile was inside install_system_deps(), which
only runs when --install-system-deps is passed. On macOS the default
path skipped this entirely, so users hit `cc` exit code 69 deep in
cargo build. Move the check into the unconditional main flow so it
always fires on Darwin.
2026-03-21 11:29:36 -04:00
Argenis
a1ab1e1a11
fix(install): use test-compile instead of xcrun for Xcode license detection (#4151)
xcrun --show-sdk-path can succeed even when the Xcode/CLT license has
not been accepted, so the previous check was ineffective. Replace it
with an actual test-compilation of a trivial C file, which reliably
triggers the exit-code-69 failure when the license is pending.
2026-03-21 11:03:07 -04:00
Giulio V
f394abf35c feat(tools): add standalone image generation tool via fal.ai
Add ImageGenTool that exposes fal.ai Flux model image generation as a
standalone tool, decoupled from the LinkedIn client. The tool accepts a
text prompt, optional filename/size/model parameters, calls the fal.ai
synchronous API, downloads the result, and saves to workspace/images/.

- New src/tools/image_gen.rs with full Tool trait implementation
- New ImageGenConfig in schema.rs (enabled, default_model, api_key_env)
- Config-gated registration in all_tools_with_runtime
- Security: checks can_act() and record_action() before execution
- Comprehensive unit tests (prompt validation, API key, size enum,
  autonomy blocking, tool spec)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:17:28 +01:00
Giulio V
52e0271bd5 feat(tools): add emoji reaction tool for cross-channel reactions
Add ReactionTool that exposes Channel::add_reaction and
Channel::remove_reaction as an agent-callable tool. Uses a
late-binding ChannelMapHandle (Arc<RwLock<HashMap>>) pattern
so the tool can be constructed during tool registry init and
populated once channels are available in start_channels.

Parameters: channel, message_id, emoji, action (add/remove).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:15:25 +01:00
Giulio V
6c0a48efff feat(tools): add session list, history, and send tools for inter-agent messaging
Add three new tools in src/tools/sessions.rs:
- sessions_list: lists active sessions with channel, message count, last activity
- sessions_history: reads last N messages from a session by ID
- sessions_send: appends a message to a session for inter-agent communication

All tools operate on the SessionBackend trait, using the JSONL SessionStore
by default. Registered unconditionally in all_tools_with_runtime when the
sessions directory is accessible.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:07:18 +01:00
SimianAstronaut7
87b5bca449
feat(config): add configurable pacing controls for slow/local LLM workloads (#3343)
* feat(config): add configurable pacing controls for slow/local LLM workloads (#2963)

Add a new `[pacing]` config section with four opt-in parameters that
let users tune timeout and loop-detection behavior for local LLMs
(Ollama, llama.cpp, vLLM) without disabling safety features entirely:

- `step_timeout_secs`: per-step LLM inference timeout independent of
  the overall message budget, catching hung model responses early.
- `loop_detection_min_elapsed_secs`: time-gated loop detection that
  only activates after a configurable grace period, avoiding false
  positives on long-running browser/research workflows.
- `loop_ignore_tools`: per-tool loop-detection exclusions so tools
  like `browser_screenshot` that structurally resemble loops are not
  counted toward identical-output detection.
- `message_timeout_scale_max`: overrides the hardcoded 4x ceiling in
  the channel message timeout scaling formula.

All parameters are strictly optional with no effect when absent,
preserving full backwards compatibility.

Closes #2963

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(config): add missing pacing fields in tests and call sites

* fix(config): add pacing arg to remaining cost-tracking test call sites

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: argenis de la rosa <theonlyhennygod@gmail.com>
2026-03-21 08:54:08 -04:00
Argenis
be40c0c5a5
Merge pull request #4145 from zeroclaw-labs/feat/gateway-path-prefix
feat(gateway): add path_prefix for reverse-proxy deployments
2026-03-21 08:48:56 -04:00
argenis de la rosa
6527871928 fix: add path_prefix to test AppState in gateway/api.rs 2026-03-21 08:14:28 -04:00
argenis de la rosa
0bda80de9c feat(gateway): add path_prefix for reverse-proxy deployments
Adopted from #3709 by @slayer with minor cleanup.
Supersedes #3709
2026-03-21 08:14:28 -04:00
Argenis
02f57f4d98
Merge pull request #4144 from zeroclaw-labs/feat/claude-code-tool
feat(tools): add ClaudeCodeTool for two-tier agent delegation
2026-03-21 08:14:19 -04:00
Argenis
ef83dd44d7
Merge pull request #4146 from zeroclaw-labs/feat/memory-recall-time-range
feat(memory): add time range filter to recall (since/until)
2026-03-21 08:14:12 -04:00
Argenis
a986b6b912
fix(install): detect un-accepted Xcode license + bump to v0.5.5 (#4147)
* fix(install): detect un-accepted Xcode license before build

Add an xcrun check after verifying Xcode CLT is installed. When the
Xcode/CLT license has not been accepted, cc exits with code 69 and
the build fails with a cryptic linker error. This surfaces a clear
message telling the user to run `sudo xcodebuild -license accept`.

* chore(release): bump version to v0.5.5

Update version across all distribution manifests:
- Cargo.toml and Cargo.lock
- dist/aur/PKGBUILD and .SRCINFO
- dist/scoop/zeroclaw.json
2026-03-21 08:09:27 -04:00
SimianAstronaut7
b6b1186e3b
feat(channel): add per-channel proxy_url support for HTTP/SOCKS5 proxies (#3345)
* feat(channel): add per-channel proxy_url support for HTTP/SOCKS5 proxies

Allow each channel to optionally specify a `proxy_url` in its config,
enabling users behind restrictive networks to route channel traffic
through HTTP or SOCKS5 proxies. When set, the per-channel proxy takes
precedence over the global `[proxy]` config; when absent, the channel
falls back to the existing runtime proxy behavior.

Adds `proxy_url: Option<String>` to all 12 channel config structs
(Telegram, Discord, Slack, Mattermost, Signal, WhatsApp, Wati,
NextcloudTalk, DingTalk, QQ, Lark, Feishu) and introduces
`build_channel_proxy_client`, `build_channel_proxy_client_with_timeouts`,
and `apply_channel_proxy_to_builder` helpers that normalize proxy URLs
and integrate with the existing client cache.

Closes #3262

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(channel): add missing proxy_url fields in test initializers

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: argenis de la rosa <theonlyhennygod@gmail.com>
2026-03-21 07:53:20 -04:00
SimianAstronaut7
00dc0c8670
feat(tool): enrich delegate sub-agent system prompt and add skills_directory config key (#3344)
* feat(tool): enrich delegate sub-agent system prompt and add skills_directory config key (#3046)

Sub-agents configured under [agents.<name>] previously received only the
bare system_prompt string. They now receive a structured system prompt
containing: tools section (allowed tools with parameters and invocation
protocol), skills section (from scoped or default directory), workspace
path, current date/time, safety constraints, and shell policy when shell
is in the effective tool list.

Add optional skills_directory field to DelegateAgentConfig for per-agent
scoped skill loading. When unset, falls back to default workspace
skills/ directory.

Closes #3046

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(tools): add missing fields after rebase

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: argenis de la rosa <theonlyhennygod@gmail.com>
2026-03-21 07:53:02 -04:00
argenis de la rosa
43f2a0a815 fix: add ClaudeCodeConfig to config re-exports and fix formatting 2026-03-21 07:51:36 -04:00
argenis de la rosa
50b5bd4d73 ci: retrigger CI after stuck runners 2026-03-21 07:46:34 -04:00
argenis de la rosa
8c074870a1 fix(memory): replace redundant closures with function references
Clippy flagged `.map(|s| chrono::DateTime::parse_from_rfc3339(s))` as
redundant — use `.map(chrono::DateTime::parse_from_rfc3339)` directly.
2026-03-21 07:46:34 -04:00
argenis de la rosa
61d1841ce3 fix: update gateway mock Memory impls with since/until params
Both test mock implementations of Memory::recall() in gateway/mod.rs
were missing the new since/until parameters.
2026-03-21 07:46:34 -04:00
argenis de la rosa
eb396cf38f feat(memory): add time range filter to recall (since/until)
Adopted from #3705 by @fangxueshun with fixes:
- Added input validation for date strings (RFC 3339)
- Used chrono DateTime comparison instead of string comparison
- Added since < until validation
- Updated mem0 backend
Supersedes #3705
2026-03-21 07:46:34 -04:00
argenis de la rosa
9f1657b9be fix(tools): use kill_on_drop for ClaudeCodeTool subprocess timeout 2026-03-21 07:46:24 -04:00
argenis de la rosa
8fecd4286c fix(tools): use kill_on_drop for ClaudeCodeTool subprocess timeout
Fixes E0382 borrow-after-move error: wait_with_output() consumed the
child handle, making child.kill() in the timeout branch invalid.
Use kill_on_drop(true) with cmd.output() instead.
2026-03-21 07:46:24 -04:00
argenis de la rosa
df21d92da3 feat(tools): add ClaudeCodeTool for two-tier agent delegation
Adopted from #3748 by @ilyasubkhankulov with fixes:
- Removed unused _runtime field
- Fixed subprocess timeout handling
- Excluded unrelated Slack threading and Dockerfile changes

Closes #3748 (superseded)
2026-03-21 07:46:24 -04:00
Argenis
8d65924704
fix(channels): add cost tracking and enforcement to all channels (#4143)
Adds per-channel cost tracking via task-local context in the tool call
loop. Budget enforcement blocks further API calls when limits are
exceeded. Resolves merge conflicts with model-switch retry loop,
reply_target parameter, and autonomy level additions on master.

Supersedes #3758
2026-03-21 07:37:15 -04:00
Argenis
756c3cadff
feat(transcription): add LocalWhisperProvider for self-hosted STT (TDD) (#4141)
Self-hosted Whisper-compatible STT provider that POSTs audio to a
configurable HTTP endpoint (e.g. faster-whisper over WireGuard). Audio
never leaves the platform perimeter.

Implemented via red/green TDD cycles:
  Wave 1 — config schema: LocalWhisperConfig struct, local_whisper field
    on TranscriptionConfig + Default impl, re-export in config/mod.rs
  Wave 2 — from_config validation: url non-empty, url parseable, bearer_token
    non-empty, max_audio_bytes > 0, timeout_secs > 0; returns Result<Self>
  Wave 3 — manager integration: registration with ? propagation (not if let Ok
    — credentials come directly from config, no env-var fallback; present
    section with bad values is a hard error, not a silent skip)
  Wave 4 — transcribe(): resolve_audio_format() extracted from validate_audio()
    so LocalWhisperProvider can resolve MIME without the 25 MB cloud cap;
    size check + format resolution before HTTP send
  Wave 5 — HTTP mock tests: success response, bearer auth header, 503 error

33 tests (20 baseline + 13 new), all passing. Clippy clean.

Co-authored-by: Nim G <theredspoon@users.noreply.github.com>
2026-03-21 07:15:36 -04:00
Argenis
ee870028ff
feat(channel): use Slack native markdown blocks for rich formatting (#4142)
Slack's Block Kit supports a native `markdown` block type that accepts
standard Markdown and handles rendering. This removes the need for a
custom Markdown-to-mrkdwn converter. Messages over 12,000 chars fall
back to plain text.

Co-authored-by: Joe Hoyle <joehoyle@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 07:12:27 -04:00
frido22
83183a39a5
feat(status): show service running state in zeroclaw status (#3751) 2026-03-21 06:49:47 -04:00
shiben
7a941fb753
feat(auth): add import functionality for existing OpenAI Codex auth p… (#3762)
* feat(auth): add import functionality for existing OpenAI Codex auth profiles

Introduces a new command-line option to import an existing `auth.json` file for OpenAI Codex, allowing users to bypass the login flow. The import feature reads and parses the specified JSON file, extracting authentication tokens and storing them in the user's profile. This change enhances user experience by simplifying the authentication process for existing users.

- Added `import` option to `AuthCommands` enum
- Implemented `import_openai_codex_auth_profile` function to handle the import logic
- Updated `handle_auth_command` to process the import option and validate provider compatibility
- Ensured that the import feature is exclusive to the `openai-codex` provider

* feat(auth): extract expiry from JWT in OpenAI Codex import

Enhances the `import_openai_codex_auth_profile` function by extracting the expiration date from the JWT access token. This change allows for more accurate management of token lifetimes by replacing the hardcoded expiration date with a dynamic value derived from the token itself.

- Added `extract_expiry_from_jwt` function to handle JWT expiration extraction
- Updated `TokenSet` to use the extracted expiration date instead of a static value
2026-03-21 06:49:44 -04:00
Argenis
bcdbce0bee
feat(web): add theme system with CSS variables and settings modal (#4133)
- Add ThemeContext with light/dark/system theme support
- Migrate all hardcoded colors to CSS variables
- Add SettingsModal for theme customization
- Add font loader for dynamic font selection
- Add i18n support for Chinese and Turkish locales
- Fix accessibility: add aria-live to pairing error message

Co-authored-by: nanyuantingfeng <nanyuantingfeng@163.com>
2026-03-21 06:22:30 -04:00
Argenis
abb844d7f8
fix(config): add missing WhatsApp Web policy config keys (#4131)
* fix(config): add missing WhatsApp Web policy config keys (mode, dm_policy, group_policy, self_chat_mode)

* fix(onboard): add missing WhatsApp policy fields to wizard struct literals

The new mode, dm_policy, group_policy, and self_chat_mode fields added
to WhatsAppConfig need default values in the onboard wizard's struct
initializers to avoid E0063 compilation errors.
2026-03-21 06:04:21 -04:00
Argenis
48733d5ee2
feat(cron): add Edit button and modal for updating cron jobs (#4132)
- Backend: add PATCH /api/cron/{id} handler (handle_api_cron_patch)
  using update_shell_job_with_approval with approved=false; validates
  job exists (404 on miss), accepts name/schedule/command patch fields
- Router: register PATCH on /api/cron/{id} alongside existing DELETE
- Frontend API: add patchCronJob(id, patch) calling PATCH /api/cron/{id}
- i18n: add cron.edit, cron.edit_modal_title, cron.edit_error,
  cron.saving, cron.save keys to all 3 locales (zh, en, tr)
- UI: Edit (Pencil) button in Actions column opens a pre-populated modal
  with the job's current name, schedule expression, and command;
  submitting PATCHes the job and updates the table row in-place

Co-authored-by: WareWolf-MoonWall <chris.hengge@gmail.com>
2026-03-21 05:50:23 -04:00
Argenis
2d118af78f
fix(channels): wire model_switch callback into channel inference path (#4130)
The channel path in `src/channels/mod.rs` was passing `None` as the
`model_switch_callback` to `run_tool_call_loop()`, which meant model
switching via the `model_switch` tool was silently ignored in channel
mode.

Wire the callback in following the same pattern as the CLI path:
- Pass `Some(model_switch_callback.clone())` instead of `None`
- Wrap the tool call loop in a retry loop
- Handle `ModelSwitchRequested` errors by re-creating the provider
  with the new model and retrying

Fixes #4107
2026-03-21 05:43:21 -04:00
Argenis
8d7e7e994e
fix(memory): use plain OS threads for postgres operations to avoid nested runtime panic (#4129)
Replace `tokio::task::spawn_blocking()` with plain `std:🧵:Builder`
OS threads in all PostgresMemory trait methods. The sync `postgres` crate
(v0.19.x) internally calls `Runtime::block_on()`, which panics when called
from Tokio's blocking pool threads in recent Tokio versions. Plain OS threads
have no runtime context, so the nested `block_on` succeeds.

This matches the pattern already used in `PostgresMemory::initialize_client()`,
which correctly used `std:🧵:Builder` and never exhibited this bug.

A new `run_on_os_thread` helper centralizes the pattern: spawn an OS thread,
run the closure, and bridge the result back via a `tokio::sync::oneshot` channel.

Fixes #4101
2026-03-21 05:33:55 -04:00
Joe Hoyle
d38d706c8e
feat(channel): add Slack Assistants API status indicators (#4105)
Implement start_typing/stop_typing for Slack using the Assistants API
assistant.threads.setStatus method. Tracks thread context from
assistant_thread_started events and inbound messages, then sets
"is thinking..." status during processing. Status auto-clears when
the bot sends a reply via chat.postMessage.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 05:32:31 -04:00
Chris Hengge
523188da08
feat(tools): add WeatherTool with wttr.in integration (#4104)
Implements the Weather integration as a native Rust Tool trait
implementation, consistent with the existing first-party tool
architecture (no WASM/plugin layer required).

- Add src/tools/weather_tool.rs with full WeatherTool impl
  - Fetches from wttr.in ?format=j1 (no API key, global coverage)
  - Supports city names (any language/script), IATA airport codes,
    GPS coordinates, postal/zip codes, domain-based geolocation
  - Metric (°C, km/h, mm) and imperial (°F, mph, in) units
  - Current conditions + 0-3 day forecast with hourly breakdown
  - Graceful error messages for unknown/invalid locations
  - Respects runtime proxy config via apply_runtime_proxy_to_builder
  - 36 unit tests: schema, URL building, param validation, formatting
- Register WeatherTool unconditionally in all_tools_with_runtime
  (no API key needed, no config gate — same pattern as CalculatorTool)
- Flip integrations registry Weather entry from ComingSoon to Available

Closes #<issue>
2026-03-21 05:32:28 -04:00
Baha Abu Nojaim
82f7fbbe0f
feat(providers): add DeepMyst as OpenAI-compatible provider (#4103)
Register DeepMyst (https://deepmyst.com) as an OpenAI-compatible
provider with Bearer auth and DEEPMYST_API_KEY env var support.
Aliases: "deepmyst", "deep-myst".

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 05:32:26 -04:00
Caleb
c1b2fceca5
fix(onboard): make tmux paste safe for text prompts (#4106) 2026-03-21 05:14:37 -04:00
Loc Nguyen Huu
be6e9fca5d
fix(docker): align workspace with Cargo.lock for --locked builds (#4126)
The builder used sed to remove crates/robot-kit from [workspace].members because that path was not copied into the image. Cargo.lock is still generated for the full workspace (including zeroclaw-robot-kit), so the manifest and lockfile disagreed. cargo build --release --locked then tried to rewrite Cargo.lock and failed with "cannot update the lock file ... because --locked was passed" (commonly hit when ZEROCLAW_CARGO_FEATURES includes memory-postgres).

Copy crates/robot-kit/ into the image and drop the sed step so the workspace matches the committed lockfile.

Made-with: Cursor

Co-authored-by: lokinh <locnh@uniultra.xyz>
2026-03-21 05:14:35 -04:00
Greg Lamberson
75c11dfb92
fix(config): prevent test suite from clobbering active_workspace.toml (#4121)
* fix(config): prevent test suite from clobbering active_workspace.toml

Refactor persist_active_workspace_config_dir() to accept the default
config directory as an explicit parameter instead of reading HOME
internally. This eliminates a hidden dependency on process-wide
environment state that caused test-suite runs to overwrite the real
user's active_workspace.toml with a stale temp-directory path.

The temp-directory guard is now unconditional (previously gated behind
cfg(not(test))). It rejects writes only when a temp config_dir targets
a non-temp default location, so test-to-test writes within temp dirs
still succeed.

Closes #4117

* fix: remove needless borrow on default_config_dir parameter

---------

Co-authored-by: lamco-office <office@lamco.io>
2026-03-21 05:14:32 -04:00
tf4fun
48270fbbf3
fix(cron): add qq to supported delivery channel whitelist (#4120)
The channel validation in `validate_announce_delivery` was missing `qq`,
causing API-created cron jobs with QQ delivery to be rejected.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 05:14:30 -04:00
Argenis
18a456b24e
fix(mcp): wire MCP tools into WebSocket chat and gateway /api/tools (#4096)
* fix(mcp): wire MCP tools into WebSocket chat path and gateway /api/tools

Agent::from_config() did not initialize MCP tools because it was
synchronous and MCP connection requires async. The gateway tool
registry built for /api/tools also missed MCP tools for the same
reason.

Changes:
- Make Agent::from_config() async so it can call McpRegistry::connect_all()
- Add MCP tool initialization (both eager and deferred modes) to
  from_config(), following the same pattern used in loop_.rs CLI/webhook paths
- Add MCP tool initialization to the gateway's tool registry so
  /api/tools reflects MCP tools
- Update all three call sites (run(), handle_socket, test) to await

Closes #4042

* fix: merge master and fix formatting

* fix: remove underscore prefix from used bindings (clippy)
2026-03-21 05:13:01 -04:00
ehu shubham shaw
71e89801b5
feat(hardware): add RPi GPIO, Aardvark I2C/SPI/GPIO, and hardware plugin system (#4125)
* feat(hardware): add RPi GPIO, Aardvark I2C/SPI/GPIO, and hardware plugin system

Extends the hardware subsystem with three clusters of functionality,
all feature-gated (hardware / peripheral-rpi) with no impact on default builds.

Raspberry Pi native support:
- src/hardware/rpi.rs: board self-discovery (model, serial, revision),
  sysfs GPIO pin read/write, and ACT LED control
- scripts/99-act-led.rules: udev rule for non-root ACT LED access
- scripts/deploy-rpi.sh, scripts/rpi-config.toml, scripts/zeroclaw.service:
  one-shot deployment helper and systemd service template

Total Phase Aardvark USB adapter (I2C / SPI / GPIO):
- crates/aardvark-sys/: new workspace crate with FFI bindings loaded at
  runtime via libloading; graceful stub fallback when .so is absent or
  arch mismatches (Rosetta 2 detection)
- src/hardware/aardvark.rs: AardvarkTransport implementing Transport trait
- src/hardware/aardvark_tools.rs: agent tools i2c_scan, i2c_read,
  i2c_write, spi_transfer, gpio_aardvark
- src/hardware/datasheet.rs: datasheet search/download for detected devices
- docs/aardvark-integration.md, examples/hardware/aardvark/: guide + examples

Hardware plugin / ToolRegistry system:
- src/hardware/tool_registry.rs: ToolRegistry for hardware module tool sets
- src/hardware/loader.rs, src/hardware/manifest.rs: manifest-driven loader
- src/hardware/subprocess.rs: subprocess execution helper for board I/O
- src/gateway/hardware_context.rs: POST /api/hardware/reload endpoint
- src/hardware/mod.rs: exports all new modules; merge_hardware_tools and
  load_hardware_context_prompt helpers

Integration hooks (minimal surface):
- src/hardware/device.rs: DeviceKind::Aardvark, DeviceRuntime::Aardvark,
  has_aardvark / resolve_aardvark_device on DeviceRegistry
- src/hardware/transport.rs: TransportKind::Aardvark
- src/peripherals/mod.rs: gate create_board_info_tools behind hardware feature
- src/agent/loop_.rs: TOOL_CHOICE_OVERRIDE task-local for Anthropic provider
- src/providers/anthropic.rs: read TOOL_CHOICE_OVERRIDE; add tool_choice field
- Cargo.toml: add aardvark-sys to workspace and as dependency
- firmware/zeroclaw-nucleo/: update Cargo.toml and Cargo.lock

Non-goals:
- No changes to agent orchestration, channels, providers, or security policy
- No new config keys outside existing [hardware] / [peripherals] sections
- No CI workflow changes

Risk: Low. All new paths are feature-gated; aardvark.so loads at runtime
only when present. No schema migrations or persistent state introduced.

Rollback: revert this single commit.

* fix(hardware): resolve clippy and rustfmt CI failures

- struct_excessive_bools: allow on DeviceCapabilities (7 bool fields needed)
- unnecessary_debug_formatting: use .display() instead of {:?} for paths
- stable_sort_primitive: replace .sort() with .sort_unstable() on &str slices

* fix(hardware): add missing serial/uf2/pico modules declared in mod.rs

cargo fmt was exiting with code 1 because mod.rs declared pub mod serial,
uf2, pico_flash, pico_code but those files were missing from the branch.
Also apply auto-formatting to loader.rs.

* fix(hardware): apply rustfmt 1.92.0 formatting (matches CI toolchain)

* docs(scripts): add RPi deployment and interaction guide

* push

* feat(firmware): add initial Pico firmware and serial device handling

- Introduced main.py for ZeroClaw Pico firmware with a placeholder for MicroPython implementation.
- Added binary UF2 file for Pico deployment.
- Implemented serial device enumeration and validation in the hardware module, enhancing security by restricting allowed serial paths.
- Updated related modules to integrate new serial device functionality.

---------

Co-authored-by: ehushubhamshaw <eshaw1@wpi.edu>
2026-03-21 04:17:01 -04:00
Argenis
46f6e79557
fix(gateway): improve error message for Docker bridge connectivity (#4095)
When the gateway security guard blocks a public bind address, the error
message now mentions the Docker use case and provides clear instructions
for connecting from Docker containers.

Closes #4086
2026-03-21 00:16:01 -04:00
Argenis
c301b1d4d0
fix(approval): auto-approve read-only tools in non-interactive mode (#4094)
* fix(approval): auto-approve read-only tools in non-interactive mode

Add web_search_tool, web_fetch, calculator, glob_search, content_search,
and image_info to the default auto_approve list. These are read-only tools
with no side effects that were being silently denied in channel mode
(Telegram, Slack, etc.) because the non-interactive ApprovalManager
auto-denies any tool not in auto_approve when autonomy != full.

Closes #4083

* fix: remove duplicate default_otp_challenge_max_attempts function
2026-03-20 23:57:43 -04:00
Argenis
981a93d942
fix(config): remove duplicate default_otp_challenge_max_attempts function (#4098)
The function was defined twice in schema.rs after merging #3921, causing
compilation failures on all downstream branches.
2026-03-20 23:57:27 -04:00
Argenis
34f0b38e42
fix(config): remove duplicate default_otp_challenge_max_attempts function (#4097)
PR #3921 accidentally introduced a duplicate definition of
default_otp_challenge_max_attempts() in config/schema.rs, causing
compilation to fail on master (E0428: name defined multiple times).
2026-03-20 18:49:15 -04:00
khhjoe
00209dd899
feat(memory): add mem0 (OpenMemory) backend integration (#3965)
* feat(memory): add mem0 (OpenMemory) backend integration

- Implement Mem0Memory struct with full Memory trait
- Add history() audit trail, recall_filtered() with time/metadata filters
- Add store_procedural() for conversation trace extraction
- Add ProceduralMessage type to Memory trait with default no-op
- Feature-gated behind `memory-mem0` flag
- 9 unit tests covering edge cases

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: apply cargo fmt

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(memory): add extraction_prompt config, deploy scripts, and timing instrumentation

- Add `extraction_prompt` field to `Mem0Config` for custom LLM fact
  extraction prompts (e.g. Cantonese/Chinese content), with
  `MEM0_EXTRACTION_PROMPT` env var fallback
- Pass `custom_instructions` in mem0 store requests so the server
  uses the client-supplied prompt over its default
- Add timing instrumentation to channel message pipeline
  (mem_recall_ms, elapsed_before_llm_ms, llm_call_ms, total_ms)
- Add `deploy/mem0/` with self-hosted mem0 + reranker GPU server
  scripts, fully configurable via environment variables
- Update config reference docs (EN, zh-CN, VI) with `[memory.mem0]`
  subsection

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

# Conflicts:
#	src/channels/mod.rs

* chore: remove accidentally staged worktree from index

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:22:44 -04:00
caoy
9e8a478254
fix(gemini): use default chat() for prompt-guided tool calling and add vision support (#3932)
* fix(gemini): use default chat() for prompt-guided tool calling and add multimodal vision support

The Gemini provider's chat() override bypassed the default trait
implementation that injects tool definitions into the system prompt for
providers without native tool calling. This caused the agent loop to see
tool definitions in context but never actually invoke them, resulting in
hallucinated tool calls (e.g. claiming "Stored" without calling
memory_store).

Remove the broken chat() override so the default prompt-guided fallback
in the Provider trait handles tool injection correctly. Add an explicit
capabilities() declaration (native_tool_calling: false, vision: true).

Also add multimodal support: convert Part from a plain struct to an
untagged enum with Text and Inline variants, and add build_parts() to
extract [IMAGE:data:...] markers as Gemini inline_data parts.

Includes 14 new tests covering capabilities, Part serialization,
build_parts edge cases, and role-mapping behavior. Removes unused
ChatResponse import.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test(gemini): move capabilities tests to component level and add tool conversion test

Move the 3 capabilities tests (native_tool_calling, vision,
supports_native_tools) from the inline module to
tests/component/gemini_capabilities.rs since they exercise the public
Provider trait contract through the factory. Add a new
convert_tools_returns_prompt_guided test verifying the agent loop will
receive PromptGuided payload for Gemini.

Private internals tests (Part serialization, build_parts, role mapping)
remain inline since those types are not publicly exported.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* style(gemini): fix cargo fmt formatting

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(gemini): add prompt_caching field to capabilities declaration

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: myclaw <myclaw@myclaws-MacBook-Air.local>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 18:22:41 -04:00
Anton Markelov
96f25ac701
fix(prompt): respect autonomy level in SafetySection (Agent/gateway WS path) (#3952) (#4037)
The `SafetySection` in `SystemPromptBuilder` always hardcoded
"Do not run destructive commands without asking" and "Do not bypass
oversight or approval mechanisms" regardless of the configured
autonomy level. This caused the gateway WebSocket path (web interface)
to instruct the LLM to simulate approval dialogs even when
`autonomy.level = "full"`.

PRs #3955/#3970/#3975 fixed the channel dispatch path
(`build_system_prompt_with_mode_and_autonomy`) but missed the
`Agent::from_config` → `SystemPromptBuilder` path used by
`gateway/ws.rs`.

Changes:
- Add `autonomy_level` field to `PromptContext`
- Rewrite `SafetySection::build()` to conditionally include/exclude
  approval instructions based on autonomy level, matching the logic
  already present in `build_system_prompt_with_mode_and_autonomy`
- Add `autonomy_level` field to `Agent` struct and `AgentBuilder`
- Pass `config.autonomy.level` through `Agent::from_config`
- Add tests for full/supervised autonomy safety section behavior

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:22:35 -04:00
Jacobinwwey
fb5c8cb620
feat(tools): route web_search providers with alias fallback (#4038) 2026-03-20 18:22:32 -04:00
ifengqi
9f5543e046
fix(qq): respond to WebSocket Ping frames to prevent connection timeout (#4041)
The QQ channel WebSocket loop did not handle incoming Ping frames,
causing the server to consider the connection dead and drop it. Add a
Ping handler that replies with Pong, keeping the connection alive.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 18:22:30 -04:00
luikore
05c9b8180b
Make lark / feishu render markdown (#3866)
Co-authored-by: Luikore <masked>
2026-03-20 18:22:29 -04:00
Thorbjørn Lindeijer
f96a0471b5
fix(providers): clamp unsupported temperatures in Claude Code provider (#3961)
The Claude Code CLI only supports temperatures 0.7 and 1.0, but
internal subsystems (memory consolidation, context summarizer) use
lower values like 0.1 and 0.2. Previously the provider rejected these
with a hard error, triggering retries and WARN-level log noise.

Clamp to the nearest supported value instead, since the CLI ignores
temperature anyway.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:22:26 -04:00
Artem Chernenko
072f5f1170
fix(transcription): honor configured default provider (#3883)
Co-authored-by: Artem Chernenko <12207348+turboazot@users.noreply.github.com>
2026-03-20 18:22:25 -04:00
Darren.Zeng
28f94ae48c
style: enhance .editorconfig with comprehensive file type settings (#3872)
Expand the minimal .editorconfig to include comprehensive settings for
all file types used in the project:

- Add root = true declaration
- Add standard settings: end_of_line, charset, trim_trailing_whitespace,
  insert_final_newline
- Add Rust-specific settings (indent_size = 4, max_line_length = 100)
  to match rustfmt.toml
- Add Markdown settings (preserve trailing whitespace for hard breaks)
- Add TOML, YAML, Python, Shell script, and JSON settings

This ensures consistent editor behavior across all contributors and
matches the project's formatting standards.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-20 18:22:22 -04:00
RoomWithOutRoof
8a217a77f9
fix(config): add challenge_max_attempts field to OtpConfig (#3921)
* fix(docker): default CMD to daemon instead of gateway

- Change default Docker CMD from gateway to daemon in both dev and release stages
- gateway only starts the HTTP/WebSocket server — channel listeners (Matrix, Telegram, Discord, etc.) are never spawned
- daemon starts the full runtime: gateway + channels + heartbeat + scheduler
- Users who configure channels in config.toml and run the default image get no response because the channel sync loops never start

* fix(config): add challenge_max_attempts field to OtpConfig

Add missing challenge_max_attempts field to support OTP challenge
attempt limiting. This field allows users to configure the maximum
number of OTP challenge attempts before lockout.

Fixes #3919

---------

Co-authored-by: Jah-yee <jah.yee@outlook.com>
Co-authored-by: Jah-yee <jahyee@sparklab.ai>
2026-03-20 18:22:19 -04:00
Chris Hengge
79a7f08b04
fix(web): anchor memory table to viewport with dual scrollbars (#4027)
The /memory data grid grew unboundedly with table rows, pushing the
horizontal scrollbar to the very bottom of a tall page and making it
inaccessible without scrolling all the way down first.

- Layout: change outer shell from min-h-screen to h-screen +
  overflow-hidden, and add min-h-0 to <main> so flex-1 overflow-y-auto
  actually clamps at the viewport boundary instead of growing infinitely.
- Memory page: switch root div to flex-col h-full so it fills the
  bounded main area; give the glass-card table wrapper flex-1 min-h-0
  overflow-auto so it consumes remaining space and exposes both
  scrollbars without any page-level scrolling required.
- index.css: pin .table-electric thead th with position:sticky / top:0
  and a matching opaque background so column headers stay visible
  during vertical scroll inside the bounded card.

The result behaves like a bounded iframe: the table fills the available
screen, rows scroll vertically, wide columns scroll horizontally, and
both scrollbars are always reachable.
2026-03-20 18:22:11 -04:00
Argenis
de12055364
feat(slack): implement reaction support for Slack channel (#4091)
* feat(slack): implement reaction support with sanitized error responses

Add add_reaction() and remove_reaction() for Slack channel, with
unicode-to-Slack emoji mapping, idempotent error handling, and
sanitized API error responses matching the pattern used by
chat.postMessage.

Based on #4089 by @joehoyle, with sanitize_api_error() applied to
reaction error paths for consistency with existing Slack methods.

Supersedes #4089

* chore(deps): bump rustls-webpki to 0.103.10 (RUSTSEC-2026-0049)
2026-03-20 18:18:45 -04:00
Argenis
65c34966bb
Merge pull request #4092 from zeroclaw-labs/docs/aur-ssh-key
docs: remove architecture diagram from all READMEs
2026-03-20 18:02:32 -04:00
Will Sarg
4a2be7c2e5
feat(verifiable_intent): add native verifiable intent lifecycle module (#2938)
* feat(verifiable_intent): add native verifiable intent lifecycle module

Implements a Rust-native Verifiable Intent (VI) subsystem for ZeroClaw,
providing full credential lifecycle support for commerce agent authorization
using SD-JWT layered credentials.

New module: src/verifiable_intent/
- error.rs: ViError/ViErrorKind (25+ variants), implements std::error::Error
- types.rs: JWK, Cnf, Entity, Constraint (8 variants), Immediate/Autonomous
  mandate structs, Fulfillment, Layer1/Layer2/CredentialChain
- crypto.rs: base64url helpers, SD hash, JWS sign/verify, EC P-256 key
  generation/loading, disclosure creation, SD-JWT serialize/parse
- verification.rs: StrictnessMode, ChainVerificationResult,
  ConstraintCheckResult, verify_timestamps, verify_sd_hash_binding,
  verify_l3_cross_reference, verify_checkout_hash_binding, check_constraints
- issuance.rs: create_layer2_immediate, create_layer2_autonomous,
  create_layer3_payment, create_layer3_checkout

New tool: src/tools/verifiable_intent.rs
- VerifiableIntentTool implementing Tool trait (name: vi_verify)
- Operations: verify_binding, evaluate_constraints, verify_timestamps
- Gated behind verifiable_intent.enabled config flag

Wiring:
- src/lib.rs: pub mod verifiable_intent
- src/main.rs: mod verifiable_intent (binary re-declaration)
- src/config/schema.rs: VerifiableIntentConfig struct, field on Config
- src/config/mod.rs: re-exports VerifiableIntentConfig
- src/onboard/wizard.rs: default field in Config literals
- src/tools/mod.rs: conditional tool registration

Uses only existing deps: ring (ECDSA P-256), sha2, base64, serde_json,
chrono, anyhow. No new dependencies added.

Validation: cargo fmt clean, cargo clippy -D warnings clean,
cargo test --lib -- verifiable_intent passes (44 tests)

* chore(verifiable_intent): add Apache 2.0 attribution for VI spec reference

The src/verifiable_intent/ module is a Rust-native reimplementation based
on the Verifiable Intent open specification and reference implementation by
genereda (https://github.com/genereda/verifiable-intent), Apache 2.0.

- Add attribution section to src/verifiable_intent/mod.rs doc comment
- Add third-party attribution entry to NOTICE per Apache 2.0 section 4(d)

* fix(verifiable_intent): correct VI attribution URL and author

Replace hallucinated github.com/genereda/verifiable-intent with the
actual remote: github.com/agent-intent/verifiable-intent

* fix(verifiable_intent): remove unused pub re-exports to fix clippy

Remove unused re-exports of ViError, ViErrorKind, types::*,
ChainVerificationResult, and ConstraintCheckResult from the module
root. Only StrictnessMode is used externally.

---------

Co-authored-by: argenis de la rosa <theonlyhennygod@gmail.com>
2026-03-20 17:52:55 -04:00
argenis de la rosa
2bd141aa07 docs: remove architecture diagram section from all READMEs
Remove the "How it works (short)" ASCII diagram section from
all 31 README files (English + 30 translations).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 17:45:35 -04:00
Argenis
cc470601de
docs(i18n): expand language hubs and add six new locales (#2934)
Expand README/docs navigation to include Korean, Tagalog, German, Arabic, Hindi, and Bengali locale entries. Add canonical locale hub and summary files for each new language under docs/i18n/.

Update i18n index/coverage metadata to reflect hub-level support and keep language discovery consistent across root docs entry points.
2026-03-20 17:40:09 -04:00
Argenis
707ee02d76
chore: bump version to 0.5.4 (#4090) 2026-03-20 16:06:52 -04:00
Argenis
a47a9ee269
fix(skills): improve ClawhHub skill installer with zip crate and URL parsing (#4088)
Replace the shell-based unzip extraction with the zip crate for
cross-platform support. Use reqwest::Url for proper URL parsing,
add www.clawhub.ai and clawhub: shorthand support, fix the download
API URL, add ZIP path traversal protection, size limits, rate-limit
handling, and SKILL.toml fallback generation.

Supersedes #4043
Closes #4022
2026-03-20 15:46:52 -04:00
Argenis
8bb61fe368
fix(cron): persist delivery for api-created cron jobs (#4087)
Resolves merge conflicts from PR #4064. Uses typed DeliveryConfig in
CronAddBody and passes delivery directly to add_shell_job_with_approval
and add_agent_job instead of post-creation patching. Preserves master's
richer API fields (session_target, model, allowed_tools, delete_after_run).
2026-03-20 15:42:00 -04:00
avianion
38a8e910d0
feat(providers): add Avian as OpenAI-compatible provider (#4076)
* feat(providers): add Avian as a named provider

Add Avian (https://avian.io) as a first-class OpenAI-compatible provider
with bearer auth via AVIAN_API_KEY. Registers the provider in the factory,
credential resolver, provider list, onboard wizard, and docs.

Models: deepseek/deepseek-v3.2, moonshotai/kimi-k2.5, z-ai/glm-5,
minimax/minimax-m2.5.

* style: fix rustfmt formatting in wizard.rs curated models

Collapse short GLM-5 tuple onto single line to satisfy cargo fmt.

* fix: add none-backend test and sync localized docs

- Add memory_backend parameter to scaffold_workspace so it can
  conditionally skip MEMORY.md creation and adjust AGENTS.md guidance
  when memory.backend = "none"
- Add test scaffold_none_backend_disables_memory_guidance_and_skips_memory_md
- Sync Avian provider entry to all 6 localized providers-reference.md
  files (el, fr, ja, ru, vi, zh-CN)
- Bump providers-reference.md date to March 9, 2026

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test(onboard): add explicit Avian assertions in wizard helper tests

Add targeted assertions for the Avian provider branches to prevent
silent regressions, as requested in CodeRabbit review feedback:

- default_model_for_provider("avian") => "deepseek/deepseek-v3.2"
- curated_models_for_provider("avian") includes all 4 catalog entries
- supports_live_model_fetch("avian") => true
- models_endpoint_for_provider("avian") => Avian API URL
- provider_env_var("avian") => "AVIAN_API_KEY"

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* style: fix rustfmt formatting in wizard.rs scaffold_workspace

Break scaffold_workspace function signature and .await.unwrap() chains
across multiple lines to comply with rustfmt max line width.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Argenis <theonlyhennygod@gmail.com>
2026-03-20 15:31:59 -04:00
Eddie's AI Agent
916ad490bd
fix: remove BSD stat fallback from Dockerfiles (#3847) (#4077)
Containers always run Linux, so only GNU stat (-c%s) is needed.
The BSD fallback (stat -f%z) caused shell arithmetic errors under
podman when the fallback syntax was evaluated.

Co-authored-by: SpaceLobster <spacelobster@SpaceLobsters-Mac-mini.local>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Argenis <theonlyhennygod@gmail.com>
2026-03-20 15:31:56 -04:00
Eddie's AI Agent
2dee42d6e4
fix(daemon): add 8MB stack size for ARM64 Linux targets (#4078)
ARM64 Linux (musl and Android) targets were using the default 2MB stack,
which is insufficient for the 126 JsonSchema derives and causes silent
daemon crashes due to stack overflow. x86_64 and Windows already had 8MB
overrides.

Closes #3537

Co-authored-by: SpaceLobster <spacelobster@SpaceLobsters-Mac-mini.local>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Argenis <theonlyhennygod@gmail.com>
2026-03-20 15:28:40 -04:00
dependabot[bot]
6dbc1d7c9c
chore(deps): bump the rust-all group with 2 updates (#4047)
Bumps the rust-all group with 2 updates: [opentelemetry-otlp](https://github.com/open-telemetry/opentelemetry-rust) and [extism](https://github.com/extism/extism).


Updates `opentelemetry-otlp` from 0.31.0 to 0.31.1
- [Release notes](https://github.com/open-telemetry/opentelemetry-rust/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-rust/blob/main/docs/release_0.30.md)
- [Commits](https://github.com/open-telemetry/opentelemetry-rust/compare/v0.31.0...opentelemetry-otlp-0.31.1)

Updates `extism` from 1.13.0 to 1.20.0
- [Release notes](https://github.com/extism/extism/releases)
- [Commits](https://github.com/extism/extism/compare/v1.13.0...v1.20.0)

---
updated-dependencies:
- dependency-name: opentelemetry-otlp
  dependency-version: 0.31.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-all
- dependency-name: extism
  dependency-version: 1.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-all
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-20 15:16:08 -04:00
Anatolii Fesiuk
2bc2ddfbae
feat(tool): add myself and list_projects actions to jira tool (#4061)
* Sync jira tool description between .rs and en.toml

Replace multi-line operational guide in en.toml with the same one-liner
already in jira_tool.rs description(), matching the pattern used by all
other tools where both sources are in sync.

* Add myself action to jira tool for credential verification

* Add tests for myself action in jira tool

* Review and fix list_projects action added to jira tool

- Fix doc comment: update action count from four to five and add missing
  myself entry
- Remove redundant statuses_url variable (was identical to url)

The list_projects action fetches all projects with their issue types,
statuses, and assignable users by combining /rest/api/3/project,
per-project /statuses, and /user/assignable/multiProjectSearch endpoints.

* Remove hardcoded project-specific statuses from shape_projects

Replace fixed known_order list (which included project-specific statuses
like 'Collecting Intel', 'Design', 'Verification') with a simple
alphabetical sort. Any Jira project can use arbitrary status names so
hardcoding an order is not applicable universally.

* Fix list_projects: bounded concurrency, error surfacing, and output shape

- Use tokio::task::JoinSet with STATUS_CONCURRENCY=5 to fetch per-project
  statuses concurrently instead of sequentially, bounding API blast radius
- Surface user fetch errors: non-2xx and JSON parse failures now bail
  instead of silently falling back to empty vec
- Surface per-project status JSON parse errors instead of swallowing them
  with unwrap_or_else
- Move users to top-level output {projects, users} so they are not
  duplicated across every project entry

* fix(tool): apply rustfmt formatting to jira_tool.rs
2026-03-20 15:11:53 -04:00
Moksh Gupta
9fadf50375
Feat/add pinggy tunnel (#4060)
* feat(tunnel): add Pinggy tunnel support with configuration options

* feat(pinggy): update Pinggy tunnel configuration to remove domain field and improve SSH command handling

* feat(pinggy): add encryption and decryption for Pinggy tunnel token in config

* feat(pinggy): enhance region configuration for Pinggy tunnel with detailed options and validation

* feat(pinggy): enhance region validation and streamline output handling in Pinggy tunnel

* fix(pinggy): resolve clippy and fmt warnings

---------

Co-authored-by: moksh gupta <moksh.gupta@linktoany.com>
2026-03-20 15:11:50 -04:00
tf4fun
a047a0d9b8
feat(channel): enhance QQ channel with rich media and cron delivery (#4059)
Add full rich media send/receive support using unified [TYPE:target] markers
(aligned with Telegram). Register QQ as a cron announcement delivery channel.

- Media upload with SHA256-based caching and TTL
- Attachment download to workspace with all types supported
- Voice: prefer voice_wav_url (WAV), inject QQ ASR transcription
- File uploads include file_name for proper display in QQ client
- msg_seq generation and reply rate-limit tracking
- QQ delivery instructions in system prompt
- Register QQ in cron scheduler and tool description

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 15:11:47 -04:00
Argenis
43be8e5075
fix: preserve Slack session context when thread_replies=false (#4084)
* fix: preserve session context across Slack messages when thread_replies=false

When thread_replies=false, inbound_thread_ts() was falling back to each
message's own ts, giving every message a unique conversation key and
breaking multi-turn context. Now top-level messages get thread_ts=None
when threading is disabled, so all messages from the same user in the
same channel share one session.

Closes #4052

* chore: ignore RUSTSEC-2024-0384 (unmaintained instant crate via nostr)
2026-03-20 15:00:31 -04:00
Argenis
ea8fe95b19
fix: normalize 5-field cron weekday numbers to standard crontab semantics (#4082)
* fix: normalize 5-field cron weekday numbers to match standard crontab

The cron crate uses 1=Sun,2=Mon,...,7=Sat while standard crontab uses
0/7=Sun,1=Mon,...,6=Sat. This caused '1-5' to mean Sun-Thu instead of
Mon-Fri. Add a normalization step when converting 5-field expressions
to 6-field so user-facing semantics match standard crontab behavior.

Closes #4049

* chore: ignore RUSTSEC-2024-0384 (unmaintained instant crate via nostr)
2026-03-20 15:00:28 -04:00
Argenis
ce8f2133fb
fix(provider): replace overall timeout with per-read timeout for Codex streams (#4081)
* fix(provider): replace overall timeout with per-read timeout for Codex streams

The 120-second overall HTTP timeout was killing SSE streams mid-flight
when GPT-5.4 reasoning responses exceeded that duration. Replace with
a 300-second per-read timeout that only fires when no data arrives,
allowing long-running streams to complete while still detecting stalled
connections.

Closes #3786

* chore(deps): bump aws-lc-rs to fix RUSTSEC-2026-0044/0048

Update aws-lc-rs 1.16.1 → 1.16.2 (aws-lc-sys 0.38.0 → 0.39.0) to
resolve security advisory for X.509 Name Constraints Bypass.
2026-03-20 14:40:27 -04:00
Argenis
19d9c6f32c
Merge pull request #4075 from zeroclaw-labs/feat/testing-agent-loop
chore: bump version to 0.5.3
2026-03-20 13:34:04 -04:00
argenis de la rosa
0bff8d18fd chore: bump version to 0.5.3
Update version across all distribution manifests:
- Cargo.toml + Cargo.lock
- dist/scoop/zeroclaw.json
- dist/aur/PKGBUILD + .SRCINFO (catch up from 0.4.3)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 12:56:19 -04:00
Argenis
6f5b029033
fix(skills): support ClawHub registry URLs in skills install (#4069)
`zeroclaw skills install https://clawhub.ai/owner/skill` previously
failed because is_git_source() treated all https:// URLs as git repos.
ClawHub is a web registry, not a git host.

- Add is_clawhub_source() to detect clawhub.ai URLs
- Add clawhub_slug() to extract the skill name from the URL path
- Add install_clawhub_skill_source() to download via the ClawHub
  download API and extract the ZIP into the skills directory
- Exclude clawhub.ai URLs from git source detection
- Security audit runs on downloaded skills as with git installs

Closes #4022
2026-03-20 12:19:14 -04:00
Argenis
83ee103abb
fix: add interrupt_on_new_message support for Matrix channel (#4070)
Add the missing interrupt_on_new_message field to MatrixConfig and wire
it through InterruptOnNewMessageConfig so Matrix behaves consistently
with Telegram, Slack, Discord, and Mattermost.

Closes #4058
2026-03-20 12:17:16 -04:00
Argenis
d39ba69156
fix(providers): bail immediately on unrecoverable context window overflow (#4068)
When a request exceeds a model's context window and there is no
conversation history to truncate (e.g. system prompt alone is too
large), bail immediately with an actionable error message instead of
wasting all retry attempts on the same unrecoverable error.

Previously, the retry loop would attempt truncation, find nothing to
drop (only system + one user message), then fall through to the normal
retry logic which classified context window errors as retryable. This
caused 3 identical failing API calls for a single "hello" message.

The fix adds an early exit in all three chat methods (chat_with_history,
chat_with_tools, chat) when truncate_for_context returns 0 dropped
messages, matching the existing behavior in chat_with_system.

Fixes #4044
2026-03-20 12:10:24 -04:00
Argenis
22cdb5e2e2
fix(whatsapp): remove duplicate variable declaration causing unused warning (#4066)
* feat(config): add google workspace operation allowlists

* docs(superpowers): link google workspace operation inventory sources

* docs(superpowers): verify starter operation examples

* fix(google_workspace): remove duplicate credential/audit blocks, fix trim in allowlist check, add duplicate-methods test

- Remove the duplicated credentials_path, default_account, and audit_log
  blocks that were copy-pasted into execute() — they were idempotent but
  misleading and would double-append --account args on every call.
- Trim stored service/resource/method values in is_operation_allowed() to
  match the trim applied during Config::validate(), preventing a mismatch
  where a config entry with surrounding whitespace would pass validation but
  never match at runtime.
- Add google_workspace_allowed_operations_reject_duplicate_methods_within_entry
  test to cover the duplicate-method validation path that was implemented but
  untested.

* fix(google_workspace): close sub_resource bypass, trim allowed_services at runtime, mark spec implemented

- HIGH: extract and validate sub_resource before the allowlist check;
  is_operation_allowed() now accepts Option<&str> for sub_resource and
  returns false (fail-closed) when allowed_operations is non-empty and
  a sub_resource is present — prevents nested gws calls such as
  `drive/files/permissions/list` from slipping past a 3-segment policy
- MEDIUM: runtime allowed_services check now uses s.trim() == service,
  matching the trim() applied during config validation
- LOW: spec status updated to Implemented; stale "does not currently
  support method-level allowlists" line removed
- Added test: operation_allowlist_rejects_sub_resource_when_operations_configured

* docs(google_workspace): document sub_resource limitation and add config-reference entries

Spec updates (superpowers/specs):
- Semantics section: note that sub_resource calls are denied fail-closed when
  allowed_operations is configured
- Mental model: show both 3-segment and 4-segment gws command shapes; explain
  that 4-segment commands are unsupported with allowed_operations in this version
- Runtime enforcement: correct the validation order to match the implementation
  (sub_resource extracted before allowlist check, budget charged last)
- New section: Sub-Resource Limitation — documents impact, operator workaround,
  and confirms the deny is intentional for this slice
- Follow-On Work: add sub_resource config model extension as item 1

Config reference updates (all three locales):
- Add [google_workspace] section with top-level keys, [[allowed_operations]]
  sub-table, sub-resource limitation note, and TOML example

* fix(docs): add classroom and events to allowed_services list in all config-reference locales

* feat(google_workspace): extend allowed_operations to support sub_resource for 4-segment gws commands

All Gmail operations use gws gmail users <sub_resource> <method>, not the flat
3-segment shape. Without sub_resource support in allowed_operations, Gmail could
not be scoped at all, making the email-assistant use case impossible.

Config model:
- Add optional sub_resource field to GoogleWorkspaceAllowedOperation
- An entry without sub_resource matches 3-segment calls (Drive, Calendar, etc.)
- An entry with sub_resource matches only calls with that exact sub_resource value
- Duplicate detection updated to (service, resource, sub_resource) key

Runtime:
- Remove blanket sub_resource deny; is_operation_allowed now matches on all four
  dimensions including the optional sub_resource

Tests:
- Add operation_allowlist_matches_gmail_sub_resource_shape
- Add operation_allowlist_matches_drive_3_segment_shape
- Add rejects_operation_with_unlisted_sub_resource
- Add google_workspace_allowed_operations_allow_same_resource_different_sub_resource
- Add google_workspace_allowed_operations_reject_invalid_sub_resource_characters
- Add google_workspace_allowed_operations_deserialize_without_sub_resource
- Update all existing tests to use correct gws command shapes

Docs:
- Spec: correct Gmail examples throughout; remove Sub-Resource Limitation section;
  update data model, validation rules, example use case, and follow-on work
- Config-reference (en, vi, zh-CN): add sub_resource field to allowed_operations
  table; update Gmail examples to correct 4-segment shapes

Platform:
- email-assistant SKILL.md: update allowed_operations paths to gmail/users/* shape

* fix(google_workspace): add classroom and events to service parameter schema description

* fix(google_workspace): cross-validate allowed_operations service against allowed_services

When allowed_services is explicitly configured, each allowed_operations entry's
service must appear in that list. An entry that can never match at runtime is a
misconfigured policy: it looks valid but silently produces a narrower scope than
the operator intended. Validation now rejects it with a clear error message.

Scope: only applies when allowed_services is non-empty. When it is empty, the tool
uses a built-in default list defined in the tool layer; the validator cannot
enumerate that list without duplicating the constant, so the cross-check is skipped.

Also:
- Update allowed_operations field doc-comment from 3-part (service, resource, method)
  to 4-part (service, resource, sub_resource, method) model
- Soften Gmail sub_resource "required" language in config-reference (en, vi, zh-CN)
  from a validation requirement to a runtime matching requirement — the validator
  does not and should not hardcode API shape knowledge for individual services
- Add tests: rejects operation service not in allowed_services; skips cross-check
  when allowed_services is empty

* fix(google_workspace): cross-validate allowed_operations.service against effective service set

When allowed_services is empty the validator was silently skipping the
service cross-check, allowing impossible configs like an unlisted service
in allowed_operations to pass validation and only fail at runtime.

Move DEFAULT_GWS_SERVICES from the tool layer (google_workspace.rs) into
schema.rs so the validator can use it unconditionally. When allowed_services
is explicitly set, validate against that set; when empty, fall back to
DEFAULT_GWS_SERVICES. Remove the now-incorrect "skips cross-check when empty"
test and add two replacement tests: one confirming a valid default service
passes, one confirming an unknown service is rejected even with empty
allowed_services.

* fix(google_workspace): update test assertion for new error message wording

* docs(google_workspace): fix stale 3-segment gmail example in TDD plan

* fix(google_workspace): address adversarial review round 4 findings

- Error message for denied operations now includes sub_resource when
  present, so gmail/users/messages/send and gmail/users/drafts/send
  produce distinct, debuggable errors.
- Audit log now records sub_resource, completing the trail for 4-segment
  Gmail operations.
- Normalize (trim) allowed_services and allowed_operations fields at
  construction time in new(). Runtime comparisons now use plain equality
  instead of .trim() on every call, removing the latent defect where a
  future code path could forget to trim and silently fail to match.
- Unify runtime character validation with schema validation: sub_resource
  and service/resource/method checks now both require lowercase alphanumeric
  plus underscore and hyphen, matching the validator's character set.
- Add positional_cmd_args() test helper and tests verifying 3-segment
  (Drive) and 4-segment (Gmail) argument ordering.
- Add test confirming page_limit without page_all passes validation.
- Add test confirming whitespace in config values is normalized at
  construction, not deferred to comparison time.
- Fix spec Runtime Enforcement section to reflect actual code order.

* fix(google_workspace): wire production helpers to close test coverage gaps

- Remove #[cfg(test)] from positional_cmd_args; execute() now calls the
  same function the arg-ordering tests exercise, so a drift in the real
  command-building path is caught by the existing tests.
- Extract build_pagination_args(page_all, page_limit) as a production
  method used by execute(). Replace the brittle page_limit_without_page_all
  test (which relied on environment-specific execution failure wording)
  with four direct assertions on build_pagination_args covering all
  page_all/page_limit combinations.

* fix(whatsapp): remove duplicate variable declaration causing unused warning

Remove duplicate `let transcription_config = self.transcription.clone()`
(line 626 shadowed by identical line 628). The duplicate caused a
compiler warning during --features whatsapp-web builds.

Note: the reported "hang" at 526/528 crates is expected behavior for
release builds with lto="fat" + codegen-units=1 — the final link step
is slow but does complete.

Closes #4034

---------

Co-authored-by: Nim G <theredspoon@users.noreply.github.com>
2026-03-20 12:07:55 -04:00
Argenis
206d19af11
fix(api): respect job_type and delivery in POST /api/cron (#4063) (#4065) 2026-03-20 12:03:46 -04:00
Nim G
bbd2556861
feat(tool): google_workspace operation-level allowlist (#4010)
* feat(config): add google workspace operation allowlists

* docs(superpowers): link google workspace operation inventory sources

* docs(superpowers): verify starter operation examples

* fix(google_workspace): remove duplicate credential/audit blocks, fix trim in allowlist check, add duplicate-methods test

- Remove the duplicated credentials_path, default_account, and audit_log
  blocks that were copy-pasted into execute() — they were idempotent but
  misleading and would double-append --account args on every call.
- Trim stored service/resource/method values in is_operation_allowed() to
  match the trim applied during Config::validate(), preventing a mismatch
  where a config entry with surrounding whitespace would pass validation but
  never match at runtime.
- Add google_workspace_allowed_operations_reject_duplicate_methods_within_entry
  test to cover the duplicate-method validation path that was implemented but
  untested.

* fix(google_workspace): close sub_resource bypass, trim allowed_services at runtime, mark spec implemented

- HIGH: extract and validate sub_resource before the allowlist check;
  is_operation_allowed() now accepts Option<&str> for sub_resource and
  returns false (fail-closed) when allowed_operations is non-empty and
  a sub_resource is present — prevents nested gws calls such as
  `drive/files/permissions/list` from slipping past a 3-segment policy
- MEDIUM: runtime allowed_services check now uses s.trim() == service,
  matching the trim() applied during config validation
- LOW: spec status updated to Implemented; stale "does not currently
  support method-level allowlists" line removed
- Added test: operation_allowlist_rejects_sub_resource_when_operations_configured

* docs(google_workspace): document sub_resource limitation and add config-reference entries

Spec updates (superpowers/specs):
- Semantics section: note that sub_resource calls are denied fail-closed when
  allowed_operations is configured
- Mental model: show both 3-segment and 4-segment gws command shapes; explain
  that 4-segment commands are unsupported with allowed_operations in this version
- Runtime enforcement: correct the validation order to match the implementation
  (sub_resource extracted before allowlist check, budget charged last)
- New section: Sub-Resource Limitation — documents impact, operator workaround,
  and confirms the deny is intentional for this slice
- Follow-On Work: add sub_resource config model extension as item 1

Config reference updates (all three locales):
- Add [google_workspace] section with top-level keys, [[allowed_operations]]
  sub-table, sub-resource limitation note, and TOML example

* fix(docs): add classroom and events to allowed_services list in all config-reference locales

* feat(google_workspace): extend allowed_operations to support sub_resource for 4-segment gws commands

All Gmail operations use gws gmail users <sub_resource> <method>, not the flat
3-segment shape. Without sub_resource support in allowed_operations, Gmail could
not be scoped at all, making the email-assistant use case impossible.

Config model:
- Add optional sub_resource field to GoogleWorkspaceAllowedOperation
- An entry without sub_resource matches 3-segment calls (Drive, Calendar, etc.)
- An entry with sub_resource matches only calls with that exact sub_resource value
- Duplicate detection updated to (service, resource, sub_resource) key

Runtime:
- Remove blanket sub_resource deny; is_operation_allowed now matches on all four
  dimensions including the optional sub_resource

Tests:
- Add operation_allowlist_matches_gmail_sub_resource_shape
- Add operation_allowlist_matches_drive_3_segment_shape
- Add rejects_operation_with_unlisted_sub_resource
- Add google_workspace_allowed_operations_allow_same_resource_different_sub_resource
- Add google_workspace_allowed_operations_reject_invalid_sub_resource_characters
- Add google_workspace_allowed_operations_deserialize_without_sub_resource
- Update all existing tests to use correct gws command shapes

Docs:
- Spec: correct Gmail examples throughout; remove Sub-Resource Limitation section;
  update data model, validation rules, example use case, and follow-on work
- Config-reference (en, vi, zh-CN): add sub_resource field to allowed_operations
  table; update Gmail examples to correct 4-segment shapes

Platform:
- email-assistant SKILL.md: update allowed_operations paths to gmail/users/* shape

* fix(google_workspace): add classroom and events to service parameter schema description

* fix(google_workspace): cross-validate allowed_operations service against allowed_services

When allowed_services is explicitly configured, each allowed_operations entry's
service must appear in that list. An entry that can never match at runtime is a
misconfigured policy: it looks valid but silently produces a narrower scope than
the operator intended. Validation now rejects it with a clear error message.

Scope: only applies when allowed_services is non-empty. When it is empty, the tool
uses a built-in default list defined in the tool layer; the validator cannot
enumerate that list without duplicating the constant, so the cross-check is skipped.

Also:
- Update allowed_operations field doc-comment from 3-part (service, resource, method)
  to 4-part (service, resource, sub_resource, method) model
- Soften Gmail sub_resource "required" language in config-reference (en, vi, zh-CN)
  from a validation requirement to a runtime matching requirement — the validator
  does not and should not hardcode API shape knowledge for individual services
- Add tests: rejects operation service not in allowed_services; skips cross-check
  when allowed_services is empty

* fix(google_workspace): cross-validate allowed_operations.service against effective service set

When allowed_services is empty the validator was silently skipping the
service cross-check, allowing impossible configs like an unlisted service
in allowed_operations to pass validation and only fail at runtime.

Move DEFAULT_GWS_SERVICES from the tool layer (google_workspace.rs) into
schema.rs so the validator can use it unconditionally. When allowed_services
is explicitly set, validate against that set; when empty, fall back to
DEFAULT_GWS_SERVICES. Remove the now-incorrect "skips cross-check when empty"
test and add two replacement tests: one confirming a valid default service
passes, one confirming an unknown service is rejected even with empty
allowed_services.

* fix(google_workspace): update test assertion for new error message wording

* docs(google_workspace): fix stale 3-segment gmail example in TDD plan

* fix(google_workspace): address adversarial review round 4 findings

- Error message for denied operations now includes sub_resource when
  present, so gmail/users/messages/send and gmail/users/drafts/send
  produce distinct, debuggable errors.
- Audit log now records sub_resource, completing the trail for 4-segment
  Gmail operations.
- Normalize (trim) allowed_services and allowed_operations fields at
  construction time in new(). Runtime comparisons now use plain equality
  instead of .trim() on every call, removing the latent defect where a
  future code path could forget to trim and silently fail to match.
- Unify runtime character validation with schema validation: sub_resource
  and service/resource/method checks now both require lowercase alphanumeric
  plus underscore and hyphen, matching the validator's character set.
- Add positional_cmd_args() test helper and tests verifying 3-segment
  (Drive) and 4-segment (Gmail) argument ordering.
- Add test confirming page_limit without page_all passes validation.
- Add test confirming whitespace in config values is normalized at
  construction, not deferred to comparison time.
- Fix spec Runtime Enforcement section to reflect actual code order.

* fix(google_workspace): wire production helpers to close test coverage gaps

- Remove #[cfg(test)] from positional_cmd_args; execute() now calls the
  same function the arg-ordering tests exercise, so a drift in the real
  command-building path is caught by the existing tests.
- Extract build_pagination_args(page_all, page_limit) as a production
  method used by execute(). Replace the brittle page_limit_without_page_all
  test (which relied on environment-specific execution failure wording)
  with four direct assertions on build_pagination_args covering all
  page_all/page_limit combinations.

---------

Co-authored-by: argenis de la rosa <theonlyhennygod@gmail.com>
2026-03-20 11:46:22 -04:00
ryankr
2a1b32f8bf
feat(gateway): make request timeout configurable via env var (#4055)
Add `ZEROCLAW_GATEWAY_TIMEOUT_SECS` environment variable to override the
hardcoded 30-second gateway request timeout at runtime.

Agentic workloads with tool use (web search, MCP tools, sub-agent
delegation) regularly exceed 30 seconds, causing HTTP 408 timeouts at the
gateway layer — even though provider_timeout_secs allows longer LLM calls.

The default remains 30s for backward compatibility.

Co-authored-by: Claude Code (claude-opus-4-6) <noreply@anthropic.com>
2026-03-20 11:24:13 -04:00
Tomas Ward
505024d290
fix(provider): complete Anthropic OAuth setup-token authentication (#4053)
Setup tokens (sk-ant-oat01-*) from Claude Pro/Max subscriptions require
specific headers and a system prompt to authenticate successfully.
Without these, the API returns 400 Bad Request.

Changes to apply_auth():
- Add claude-code-20250219 and interleaved-thinking-2025-05-14 beta
  headers alongside existing oauth-2025-04-20
- Add anthropic-dangerous-direct-browser-access: true header

New apply_oauth_system_prompt() method:
- Prepends required "You are Claude Code" identity to system prompt
- Handles String, Blocks, and None system prompt variants

Changes to chat_with_system() and chat():
- Inject OAuth system prompt when using setup tokens
- Use NativeChatRequest/NativeChatResponse for proper SystemPrompt
  enum support in chat_with_system

Test updates:
- Updated apply_auth test to verify new beta headers and
  browser-access header

Tested with real OAuth token via `zeroclaw agent -m` — confirmed
working end-to-end.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 11:24:10 -04:00
ryankr
a0c12b5a28
fix(agent): force sequential execution when tool_search is in batch (#4054)
tool_search activates deferred MCP tools into ActivatedToolSet at runtime.
When tool_search runs in parallel with the tools it activates, a race
condition occurs where tool lookups happen before activation completes,
resulting in "Unknown tool" errors.

Force sequential execution in should_execute_tools_in_parallel() whenever
tool_search is present in the tool call batch.

Co-authored-by: Claude Code (claude-opus-4-6) <noreply@anthropic.com>
2026-03-20 11:24:07 -04:00
Argenis
b4a2afb04a
feat(tools): add text browser tool for headless environments (#4031)
* feat(tools): add text browser tool for headless environments (#3879)

* fix(tools): remove redundant match arm in text_browser clippy lint

* ci: trigger fresh workflow run
2026-03-20 01:59:43 -04:00
Argenis
8c2122017b
feat(ci): add ARM cross-compilation targets for SBCs (#4033)
Add armv7-unknown-linux-gnueabihf and arm-unknown-linux-gnueabihf targets
to the release build matrix for Raspberry Pi Zero, Orange Pi, and similar
ARM single-board computers. Disable observability-prometheus on 32-bit
targets (requires AtomicU64). Update install.sh to map armv6l to the
correct ARM binary.
2026-03-20 01:59:32 -04:00
Argenis
4f5644cf46
fix(skills): preserve TOML [[tools]] in Compact prompt injection mode (#4032)
In Compact (MetadataOnly) mode, skill tools were omitted from the system
prompt alongside instructions. This meant the LLM had no visibility into
TOML-defined tools when running in Compact mode, defeating the primary
advantage of TOML skills over MD skills (structured tool metadata).

Now Compact mode skips only instructions (loaded on demand via
read_skill) while still inlining tool definitions so the LLM knows
which skill tools are available.

Closes #3702
2026-03-20 01:55:34 -04:00
Argenis
7d958c33ef
feat(ci): add armv7-unknown-linux-gnueabihf release target (#4029)
Add pre-built armv7 (32-bit ARM hard-float) binary to all release
workflows: stable, beta, and cross-platform manual build. Uses
gcc-arm-linux-gnueabihf cross-compiler on ubuntu-22.04 for glibc 2.35
compatibility.

The install script already maps armv7l/armv6l to this target, so
users on Raspberry Pi and similar devices will be able to install
directly via the install script once binaries are published.

Closes #3759
2026-03-20 01:36:15 -04:00
sagit
89df0ab89e
feat(providers): add Bailian (Aliyun) provider support (#3158)
* feat: add Bailian (Aliyun) provider support

- Add bailian provider with coding.dashscope.aliyuncs.com endpoint
- Set User-Agent to 'openclaw' for compatibility with Bailian Coding Plan
- Support aliases: bailian, aliyun-bailian, aliyun
- Enable vision support for multimodal models

This allows users to use Alibaba Cloud's Bailian (百炼) Coding Plan API keys
with zeroclaw, matching the configuration used in OpenClaw.

* fix: address PR review comments for bailian provider

- Use is_bailian_alias() in factory match arm (consistency with other providers)
- Add bailian to canonical_china_provider_name() for onboarding routing
- Add BAILIAN_API_KEY env var resolution with DASHSCOPE_API_KEY fallback
- Add test coverage for bailian aliases in canonical_china_provider_name test

* fix: format bailian provider code

---------

Co-authored-by: Sagit-chu <sagit@example.com>
2026-03-20 01:26:16 -04:00
Chris Hengge
e4439a5c95
feat(web): add Active/All filter toggle to dashboard Channels card (#4026)
- Rename 'Active Channels' card heading to 'Channels'
- Add showAllChannels state (default: active-only view)
- Pill toggle button switches between 'Active' (green) and 'All' (blue)
  views; button label reflects the *current* view so clicking switches to
  the other mode
- When active-only and all channels are inactive, show
  'No active channels' hint instead of an empty list
- Add i18n keys dashboard.channels, dashboard.filter_active,
  dashboard.filter_all, dashboard.no_active_channels to en, zh, tr
  locales
- No backend changes; no new dependencies
2026-03-20 01:20:38 -04:00
Argenis
15d84b2622
fix(copilot): support vision via multi-part content messages (#4021)
* fix(copilot): support vision via multi-part content messages

The Copilot provider sent image markers as plain text in the content
field. The API expects OpenAI-style multi-part content arrays with
separate text and image_url parts for vision input.

Add ApiContent enum (untagged) that serializes as either a plain string
or an array of ContentPart objects. User messages containing [IMAGE:]
markers are converted to multi-part content using the shared
multimodal::parse_image_markers() helper, matching the pattern used by
the OpenRouter and Compatible providers. Non-user messages and messages
without images serialize as plain strings.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(copilot): route chat_with_system through multimodal parser and add tests

Fix chat_with_system user message bypassing to_api_content(), which left
[IMAGE:] markers as plain text on that code path. Add unit tests for
to_api_content() covering image-marker, plain-text, and non-user roles.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* style: fix clippy wildcard match warning in copilot test

* style: apply rustfmt formatting

* style: fix formatting in channels/mod.rs

* ci: re-trigger CI

* fix(test): update conversation history key in new-session test

The conversation_history_key function now includes reply_target in the
key format. Update test assertions to use the correct key format
(telegram_chat-refresh_alice instead of telegram_alice).

---------

Co-authored-by: Tim Stewart <timstewartj@gmail.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-20 00:07:00 -04:00
Argenis
9b14ddab79
fix(ollama): default to prompt-guided tool calling for local models (#4024)
* fix(ollama): default to prompt-guided tool calling for local models

Ollama's /api/chat native tool-calling parameter is silently ignored by
many local models (llama3, qwen3, phi4, etc.), causing them to emit
tool-call JSON as plain text instead of structured tool calls. When
native_tool_calling was true, the XML tool-use instructions were
suppressed from the system prompt, leaving models with no guidance on
the expected tool protocol.

Default to prompt-guided (XML) tool calling so all Ollama models receive
tool-use instructions in the system prompt and the existing text-based
parser in the agent loop can extract tool calls reliably.

Also fixes a minor rustfmt issue in channels/mod.rs from #2891.

Fixes #3999
Fixes #3982

* fix(channels): update test keys for reply_target in history key

The conversation_history_key now includes reply_target (from #2891),
but the refreshes_available_skills_after_new_session test still used
the old key format "telegram_alice" instead of
"telegram_chat-refresh_alice".
2026-03-19 23:42:03 -04:00
Argenis
0c73dc9427
Merge pull request #4025 from zeroclaw-labs/chore/version-bump-0.5.2
chore: bump version to 0.5.2
2026-03-19 23:41:28 -04:00
argenis de la rosa
19ac6ec2a5 chore: bump version to 0.5.2
Update version in Cargo.toml, Cargo.lock, and Scoop manifest.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 23:35:01 -04:00
Argenis
fda06ed157
Merge pull request #4023 from zeroclaw-labs/docs/architecture-diagram
docs(readme): overhaul all 31 READMEs to match OpenClaw-level depth
2026-03-19 23:33:15 -04:00
argenis de la rosa
169733f8de docs(readme): suppress MD001/MD024 lint in translated Prerequisites sections
The Prerequisites section uses #### headings inside <details> blocks,
which triggers MD001 (heading increment skip) and MD024 (duplicate
heading text). The English README is excluded from the docs quality
gate; add markdownlint-disable/enable comments to match.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 23:22:14 -04:00
argenis de la rosa
eaf23e63a4 docs(readme): overhaul all 31 READMEs to match OpenClaw-level depth
Restructure the English README and all 30 translated READMEs to match
OpenClaw's comprehensive structure while preserving ZeroClaw branding.

Key changes across all files:
- Replace outdated bootstrap.sh references with install.sh
- Add missing sections: Security defaults (DM access), Everything we
  built so far, How it works (ASCII architecture diagram), CLI commands,
  Agent workspace + skills, Channel configuration examples, Subscription
  Auth (OAuth), Migrating from OpenClaw
- Fix comparison image path to docs/assets/zeroclaw-comparison.jpeg
- Update doc links to current paths (docs/reference/api/*, docs/ops/*)
- Standardize social badges (X, Facebook, Discord, Instagram, TikTok,
  RedNote, Reddit) and contributors badge across all locales
- Update benchmark table (binary size ~8.8 MB)
- Full structural parity: all 31 files are 792 lines with identical
  section ordering

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 23:09:07 -04:00
Tim
ecbef64a7c
fix(channels): include reply_target in conversation history key (#2891)
conversation_history_key() now includes reply_target to isolate
conversation histories across distinct Discord/Slack/Mattermost
channels for the same sender. Previously all channels produced
the same key {channel}_{sender}, causing cross-channel context bleed.

New key format: {channel}_{reply_target}_{sender} (without thread)
or {channel}_{reply_target}_{thread_ts}_{sender} (with thread).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-19 22:58:06 -04:00
guoraymon
633d711faa
fix(agent): prevent memory context duplication by reordering operations (#2649)
Swap auto_save and load_context order to avoid retrieving the just-stored
user message in memory recall.

Before: load_context → auto_save (could retrieve own message)
After: auto_save → load_context (query first, store after)

This fixes the issue where "[Memory context]\n- user_msg: <current>\n<current>"
would appear, causing the user's input to be duplicated.
2026-03-19 22:54:28 -04:00
Argenis
37594fd520
fix(tool): include descriptions in deferred MCP tools system prompt (#4018)
Add tool descriptions alongside names in the deferred tools section so
the LLM can better identify which tool to activate via tool_search.

Original author: @mark-linyb
2026-03-19 22:35:55 -04:00
Octopus
64ecb76773
feat: upgrade MiniMax default model to M2.7 (#3865)
Add MiniMax-M2.7 and M2.7-highspeed to model selection lists. Set M2.7 as the new default for MiniMax, Novita, and Ollama cloud providers. Retain all previous models (M2.5, M2.1, M2) as alternatives.
2026-03-19 22:33:29 -04:00
Eddie's AI Agent
128b33e717
fix(channel): remove dead AtomicU32 fallback in channels mod (#3521)
The conditional cfg branches for AtomicU32 (32-bit fallback) and
AtomicU64 (64-bit) became dead code after portable_atomic::AtomicU64
was adopted in bd757996. The AtomicU32 branch would fail to compile
on 32-bit targets because the import was removed but the usage remained.

Use portable_atomic::AtomicU64 unconditionally, which works on all
targets.

Fixes #3452

Co-authored-by: SpaceLobster <spacelobster@SpaceLobsters-Mac-mini.local>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 22:33:05 -04:00
Eddie's AI Agent
aa6e3024d4
fix(channel): use uppercase IMAGE tag in Matrix channel for multimodal handling (#3523)
Closes #3486

Co-authored-by: SpaceLobster <spacelobster@SpaceLobsters-Mac-mini.local>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 22:32:48 -04:00
Eddie's AI Agent
bc7f797603
fix(channel): align Matrix reply channel key with dispatch key (#3522)
The Matrix channel was setting `channel: format!("matrix:{}", room_id)`
on incoming messages, but the reply router looks up channels by name
using `channels_by_name.get(&msg.channel)` where the key is just
"matrix". This mismatch caused replies to silently drop.

Align with how all other channels (telegram, discord, slack, etc.)
set the channel field to just the channel name.

Closes #3477

Co-authored-by: SpaceLobster <spacelobster@SpaceLobsters-Mac-mini.local>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 22:32:44 -04:00
Eddie's AI Agent
2d4a1b1ad7
fix(packaging): ensure Homebrew var directory exists on first start (#3524)
* fix(packaging): ensure Homebrew var directory exists on first start

When zeroclaw is installed via Homebrew, the service plist references
/opt/homebrew/var/zeroclaw (or /usr/local/var/zeroclaw on Intel) for
runtime data, but this directory was never created. This caused
`brew services start zeroclaw` to fail on first use.

The fix detects Homebrew installations by checking if the binary lives
under a Homebrew prefix (Cellar path or symlinked bin/ with Cellar
sibling). When detected:

- install_macos() creates the var directory and sets
  ZEROCLAW_CONFIG_DIR + WorkingDirectory in the generated plist
- start() defensively ensures the var directory exists before
  invoking launchctl

Closes #3464

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style(service): fix cargo fmt formatting in Homebrew var dir tests

Collapse multi-line assert_eq! macros to single-line form as
required by cargo fmt.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: SpaceLobster <spacelobster@SpaceLobsters-Mac-mini.local>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 22:32:13 -04:00
Darren.Zeng
c7e8f3d235
docs(service): add SAFETY comments to unsafe libc::getuid() calls (#3869)
Add proper SAFETY documentation comments to the two unsafe blocks using
libc::getuid() in src/service/mod.rs:

1. In is_root() function: documents why getuid() is safe to call
2. In is_root_matches_system_uid() test: documents the test's purpose

This addresses the best practices audit finding about unsafe code without
safety comments. While we could use the nix crate's safe wrapper, adding
safety comments is a minimal change that satisfies the audit requirement
without introducing new dependencies.

As noted in refactor-candidates.md, the nix crate alternative would also
be acceptable, but this change follows the principle of minimal intervention
for documentation-only improvements.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-19 22:12:02 -04:00
Darren.Zeng
ff5c1c6e9b
style: enhance rustfmt.toml with additional stable formatting options (#3870)
Expand rustfmt.toml configuration beyond just 'edition = \"2021\"' to
include additional stable formatting options that improve code consistency:

- max_width = 100: consistent line length
- tab_spaces = 4, hard_tabs = false: standard indentation
- use_field_init_shorthand = true: cleaner struct initialization
- use_try_shorthand = true: cleaner try operator usage
- reorder_imports = true, reorder_modules = true: consistent ordering
- match_arm_leading_pipes = \"Never\": cleaner match syntax

These options are all available on stable Rust and follow common Rust
formatting conventions. This addresses the finding in refactor-candidates.md
about the minimal rustfmt.toml configuration.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-19 22:12:00 -04:00
linyibin
b3e3a0a335
fix(config): handle tilde expansion in non-TTY environments (cron) (#3849)
When HOME environment variable is not set (common in cron jobs or
other non-TTY environments), `shellexpand::tilde` returns the literal
`~` unexpanded. This caused SOUL.md, IDENTITY.md, and other workspace
files to not be loaded because the workspace_dir path was invalid.

This fix adds `expand_tilde_path()` helper that falls back to
`directories::UserDirs` when shellexpand fails to expand tilde.
If both methods fail, a warning is logged advising users to use
absolute paths or set HOME explicitly in cron environments.

Closes #3819
2026-03-19 22:10:59 -04:00
linyibin
4d89f27f21
fix(docker): remove conflicting .dockerignore entries (closes #3836) (#3844)
The Dockerfile requires firmware/ and crates/robot-kit/ for the build:
- crates/robot-kit/Cargo.toml is needed for workspace manifest parsing
- firmware/ is copied as part of the build context

These entries in .dockerignore caused COPY commands to fail with
"file not found" errors, resulting in 100% Docker build failure.

Made-with: Cursor
2026-03-19 22:10:56 -04:00
dependabot[bot]
8d8d010196
chore(deps): bump indicatif from 0.17.11 to 0.18.4 (#3857)
Bumps [indicatif](https://github.com/console-rs/indicatif) from 0.17.11 to 0.18.4.
- [Release notes](https://github.com/console-rs/indicatif/releases)
- [Commits](https://github.com/console-rs/indicatif/compare/0.17.11...0.18.4)

---
updated-dependencies:
- dependency-name: indicatif
  dependency-version: 0.18.4
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-19 22:10:09 -04:00
dependabot[bot]
ff9904c740
chore(deps): bump tokio-tungstenite from 0.28.0 to 0.29.0 (#3858)
Bumps [tokio-tungstenite](https://github.com/snapview/tokio-tungstenite) from 0.28.0 to 0.29.0.
- [Changelog](https://github.com/snapview/tokio-tungstenite/blob/master/CHANGELOG.md)
- [Commits](https://github.com/snapview/tokio-tungstenite/compare/v0.28.0...v0.29.0)

---
updated-dependencies:
- dependency-name: tokio-tungstenite
  dependency-version: 0.29.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-19 22:10:06 -04:00
Argenis
e411e80acb
fix(provider): disable native tool calling for Venice (#4016)
Venice's API accepts the OpenAI-compatible tool format without error
but models ignore the tool specs and hallucinate tool usage in prose
instead. Disable native tool calling so Venice uses prompt-guided
tools, which work reliably.

Add without_native_tools() builder method to OpenAiCompatibleProvider
for providers that support system messages but not native function
calling.

Closes #4007
2026-03-19 21:48:38 -04:00
Argenis
073c8cccbc
fix(web): add clipboard fallback for HTTP contexts (#4015)
The copy button in the web dashboard silently failed when served over
HTTP because navigator.clipboard requires a secure context (HTTPS).
Add a textarea-based fallback using document.execCommand('copy') and
proper error handling for the clipboard promise.

Closes #4008
2026-03-19 21:48:35 -04:00
Argenis
58be05a6e0
fix(channel): clear persisted JSONL session on /new command (#4014)
The /new command only cleared in-memory conversation history but left
the JSONL session file on disk. On daemon restart, stale history was
rehydrated, negating the user's session reset. This caused context
pollution and degraded tool calling reliability.

Add delete_session() to SessionStore and call it from the /new handler
so both in-memory and persisted state are cleared.

Closes #4009
2026-03-19 21:48:33 -04:00
Argenis
c794d54821
feat(tools): add calculator tool with arithmetic and statistical functions (#4012)
Provides 25 functions (add, subtract, divide, multiply, pow, sqrt, abs,
modulo, round, log, ln, exp, factorial, sum, average, median, mode, min,
max, range, variance, stdev, percentile, count, percentage_change, clamp)
as a single always-enabled tool to avoid LLM miscalculations and reduce
token waste on numeric tasks.

Co-authored-by: Anatolii <anatolii@Anatoliis-MacBook.local>
2026-03-19 21:40:27 -04:00
Argenis
5f0f88de3d
fix(channel): add interruption_scope_id for thread-aware cancellation scoping (#4017)
Add interruption_scope_id to ChannelMessage for thread-aware cancellation. Slack genuine thread replies and Matrix threads get scoped keys, preventing cross-thread cancellation. All other channels preserve existing behavior.

Supersedes #3900. Depends on #3891.
2026-03-19 21:34:04 -04:00
RoomWithOutRoof
776e5947ef
fix(docker): default CMD to daemon instead of gateway (#3897)
Change default Docker CMD from gateway to daemon in both dev and release stages. Gateway only starts the HTTP/WebSocket server — channel listeners are never spawned. Daemon starts the full runtime: gateway + channels + heartbeat + scheduler.

Closes #3893
2026-03-19 21:08:53 -04:00
Darren.Zeng
e2183c89a3
dev: add Justfile for convenient development commands (#3874)
Add a Justfile providing convenient shortcuts for common development
tasks. Just is a modern command runner that serves as a better Make
alternative for project-specific commands.

Commands provided:
- just fmt / just fmt-check - Format code
- just lint - Run clippy
- just test / just test-lib - Run tests
- just ci - Run full CI quality gate locally
- just build / just build-debug - Build the project
- just dev [args] - Run zeroclaw in development mode
- just doc - Generate and open documentation
- just audit / just deny - Security and license checks
- just fmt-toml - Format TOML files with taplo

This complements the existing shell scripts in dev/ and scripts/
by providing a more discoverable command interface.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-19 21:08:16 -04:00
Darren.Zeng
29dc1172c0
style: add taplo.toml for TOML file formatting consistency (#3873)
Add Taplo configuration file to ensure consistent formatting of TOML
files across the project. Taplo is a TOML formatter and linter that
helps maintain consistent style in configuration files.

Configuration includes:
- 2-space indentation to match project style
- Comment alignment for better readability
- Trailing newline enforcement
- Sorting rules for dependencies and features

This complements rustfmt.toml and .editorconfig to provide complete
formatting coverage for all file types in the project.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-19 21:08:08 -04:00
Darren.Zeng
e79e1b88b7
dev: add .gitattributes for consistent line endings and file handling (#3875)
Add comprehensive .gitattributes file to ensure consistent line endings
and proper file handling across different operating systems and editors.

Key features:
- Automatic line ending normalization (LF for most files)
- Language detection hints for GitHub Linguist
- Binary file declarations to prevent text processing
- CRLF handling for Windows-specific files (.ps1, .sln)
- Mark Cargo.lock as generated to hide diff noise in PRs

This helps prevent issues with:
- Mixed line endings in the repository
- Incorrect language statistics on GitHub
- Binary files being corrupted by text processing
- Unnecessary merge conflicts due to line ending differences

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-19 21:08:02 -04:00
Reaster
f886ce47e9
fix(docker): default CMD to daemon instead of gateway (#3893)
The `gateway` command only starts the HTTP/WebSocket server without
channel listeners. Users configuring channels (Matrix, Telegram, etc.)
in config.toml get no response because the channel sync loops are
never spawned. The `daemon` command starts the full runtime including
gateway, channels, heartbeat, and scheduler.

Co-authored-by: reaster <reaster@courrier.dev>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 21:07:53 -04:00
Nim G
6a30e24e7b
feat(channel): add interrupt_on_new_message support for Discord (#3918)
* feat(channel): add /stop command to cancel in-flight tasks

Adds an explicit /stop slash command that allows users on any non-CLI
channel (Matrix, Telegram, Discord, Slack, etc.) to cancel an agent
task that is currently running.

Changes:
- is_stop_command(): new helper that detects /stop (case-insensitive,
  optional @botname suffix), not gated on channel type
- /stop fast path in run_message_dispatch_loop: intercepts /stop before
  semaphore acquisition so the target task is never replaced in the store;
  fires CancellationToken on the running task; sends reply via tokio::spawn
  using the established two-step channel lookup pattern
- register_in_flight separated from interrupt_enabled: all non-CLI tasks
  now enter the in_flight_by_sender store, enabling /stop to reach them;
  auto-cancel-on-new-message remains gated on interrupt_enabled (Telegram/
  Slack only) — this is a deliberate broadening, not a side effect

Deferred to follow-up (feat/matrix-interrupt-on-new-message):
- interrupt_on_new_message config field for Matrix
- thread-aware interruption_scope_key (requires per-channel thread_ts
  semantics analysis; Slack always sets thread_ts, Matrix only for replies)

Supersedes #2855

Tests: 7 new unit tests for is_stop_command; all 4075 tests pass.

* feat(channel): add interrupt_on_new_message support for Discord

---------

Co-authored-by: argenis de la rosa <theonlyhennygod@gmail.com>
2026-03-19 19:33:37 -04:00
Argenis
83587eea4a
Merge pull request #3917 from theredspoon/feat/mattermost-interrupt-on-new-message
feat(channel): add interrupt_on_new_message support for Mattermost
2026-03-19 19:09:16 -04:00
Argenis
226b2282f5
Fix delegate agent timeout config regression (#4004)
* feat(delegate): make delegate timeout configurable via config.toml

Add configurable timeout options for delegate tool:
- timeout_secs: for non-agentic sub-agent calls (default: 120s)
- agentic_timeout_secs: for agentic sub-agent runs (default: 300s)

Previously these were hardcoded constants (DELEGATE_TIMEOUT_SECS
and DELEGATE_AGENTIC_TIMEOUT_SECS). Users can now customize them
in config.toml under [[delegate.agents]] section.

Fixes #3898

* feat(config): make delegate tool timeouts configurable via config.toml

This change makes the hardcoded 120s/300s delegate tool timeouts
configurable through the config file:

- Add [delegate] section to Config with timeout_secs and agentic_timeout_secs
- Add DelegateToolConfig struct for global default timeout values
- Add DEFAULT_DELEGATE_TIMEOUT_SECS (120) and DEFAULT_DELEGATE_AGENTIC_TIMEOUT_SECS (300) constants
- Remove hardcoded constants from delegate.rs
- Update tests to use constant values instead of magic numbers
- Update examples/config.example.toml with documentation

Closes #3898

* fix: keep delegate timeout fields as Option<u64> with global fallback

- Change DelegateAgentConfig.timeout_secs and agentic_timeout_secs from
  u64 to Option<u64> so per-agent overrides are truly optional
- Implement manual Default for DelegateToolConfig with correct values
  (120s and 300s) instead of derive(Default)
- Add DelegateToolConfig to DelegateTool struct and wire through
  constructors so agent timeouts fall back to global [delegate] config
- Add validation for delegate timeout values in Config::validate()
- Fix example config to use [agents.name] table syntax matching the
  HashMap<String, DelegateAgentConfig> schema
- Add missing timeout fields to all DelegateAgentConfig struct literals
  across codebase (doctor, swarm, model_routing_config, tools/mod)

* chore: trigger CI

* chore: retrigger CI

* fix: cargo fmt line wrapping in config/mod.rs

* fix: import timeout constants in delegate tests

* style: cargo fmt

---------

Co-authored-by: vincent067 <vincent067@outlook.com>
2026-03-19 18:54:33 -04:00
argenis de la rosa
7bf5f3edde fix: add missing mattermost field to test InterruptOnNewMessageConfig 2026-03-19 18:53:28 -04:00
Argenis
191192a104
add configurable allow_scripts audit option (#4001)
Co-authored-by: wangyingtao.10 <wangyingtao.10@jd.com>
2026-03-19 18:31:31 -04:00
argenis de la rosa
8b942853c4 merge: resolve conflicts with master after #3891 merge
Keep both the PR's Mattermost interrupt_on_new_message additions
and master's new fields (pending_new_sessions, prompt_config,
autonomy_level) from the /stop command PR (#3891).
2026-03-19 18:29:36 -04:00
Argenis
95473d83b5
Merge pull request #4006 from zeroclaw-labs/readme-updates
docs: add OpenClaw migration commands to all translated READMEs
2026-03-19 18:29:04 -04:00
Argenis
b5668acf2f
Merge pull request #3891 from theredspoon/feat/stop-command
feat(channel): add /stop command to cancel in-flight tasks
2026-03-19 18:24:04 -04:00
Argenis
2128c9db5b
Fix Jira tool panics and dedup bug (#4003)
* feat: add Jira tool with get_ticket, search_tickets, and comment_ticket

Implements a new `jira` tool following the existing zeroclaw tool
conventions (Tool trait, SecurityPolicy, config-gated registration).

- get_ticket: configurable detail level (basic/basic_search/full/changelog)
  with response shaping; always in the default allowed_actions list
- search_tickets: JQL-based search with cursor pagination (nextPageToken);
  always returns basic_search shape; gated by allowed_actions
- comment_ticket: posts ADF comments with inline markdown-like syntax —
  @email mentions resolved to Jira accountId, **bold**, bullet lists,
  newlines; gated by allowed_actions and SecurityPolicy Act operation

Config: [jira] section with base_url, email, api_token (encrypted at
rest, falls back to JIRA_API_TOKEN env var), allowed_actions (default:
["get_ticket"]), and timeout_secs. Validated on load.

Tool description in tool_descriptions/en.toml documents all three
actions and the full comment syntax for the AI system prompt.

* fix: address jira tool code review findings

High priority:
- Validate issue_key against ^[A-Z][A-Z0-9]+-\d+$ before URL interpolation
  to prevent path traversal in get_ticket and comment_ticket

Medium priority:
- Add email guard in tool registration (mod.rs) to skip with a warning
  instead of registering a broken tool when jira.email is empty
- Shape comment_ticket response to return only id, author, created —
  avoids exposing internal Jira metadata to the AI
- Replace O(n²) comment matching in shape_basic with a HashMap lookup
  keyed by comment ID for O(1) access
- Add api_token validation in Config::validate() checking both the
  config field and JIRA_API_TOKEN env var when jira.enabled = true

Low priority:
- Make shape_basic_search private (was accidentally pub)
- Extend clean_email to strip leading punctuation (( and [) so that
  @(john@co.com) resolves correctly; fix suffix computation via pointer
  arithmetic to handle the shifted offset
- Clarify tool_descriptions/en.toml: @prefix is required for mentions,
  bare emails without @ are treated as plain text
- Handle unmatched ** in parse_inline: emit as literal text instead of
  silently producing a bold node with no closing marker

* fix(jira): allow lowercase project keys in issue_key validation

Relax validate_issue_key to accept both PROJ-123 and proj-123, since
some Jira instances use lowercase custom project keys. Path traversal
protection is preserved via alphanumeric + digit-number requirement.

* feat(tools): add tool honesty instructions to system prompt

Prevent AI from fabricating tool results by injecting a CRITICAL:
Tool Honesty section into both channel and CLI/agent system prompts.

Rules: never fabricate or guess tool results, report errors as-is,
and ask the user when unsure if a tool call succeeded.

* style: sort JiraConfig import alphabetically in config/mod.rs

* style(jira): fix strict clippy lints in jira_tool

- Derive Default for LevelOfDetails instead of manual impl
- Use char arrays in trim_start_matches/trim_end_matches
- Allow cast_possible_truncation on search_tickets (usize->u32 bounded by max_results)
- Remove needless borrow on &email

* fix(ci): adapt to upstream autonomy_level additions in channels/mod.rs

- Add missing autonomy_level argument to build_system_prompt_with_mode call in test
- Add missing autonomy_level field in ChannelRuntimeContext test initializer
- Allow large_futures in load_or_init test (Config struct growth from JiraConfig)

* fix(ci): resolve duplicate and missing autonomy_level in test initializers

* fix(ci): use TelegramRecordingChannel in telegram-specific test

The test process_channel_message_executes_tool_calls_instead_of_sending_raw_json
sent messages on channel "telegram" but registered RecordingChannel (name:
"test-channel"), causing the channel lookup to return None and no messages to
be sent.

* fix(jira): prevent panics on short dates, fix dedup bug, normalize base_url

- Add date_prefix() helper to safely slice date strings instead of
  panicking on empty or short strings from the Jira API.
- Replace Vec::dedup() with HashSet-based retain in extract_emails()
  to correctly deduplicate non-adjacent duplicates.
- Strip trailing slashes from base_url during construction to prevent
  double-slash URLs.
- Add tests for date_prefix and non-adjacent email dedup.

---------

Co-authored-by: Anatolii <anatolii@Anatoliis-MacBook.local>
Co-authored-by: Anatolii <anatolii.fesiuk@gmail.com>
2026-03-19 18:14:34 -04:00
argenis de la rosa
8d3d14f1e4 docs(readme): add OpenClaw migration commands to all translated READMEs
Every translated README now includes the migrate section:
  zeroclaw migrate openclaw --dry-run
  zeroclaw migrate openclaw

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 18:09:46 -04:00
Argenis
632d513c2e
fix(agent): preserve native tool-call text in draft updates (#4005)
Preserve assistant text from native tool-call turns in draft updates. Falls back to response_text when parsed_text is empty and native tool calls are present. Relays text through on_delta for draft-capable channels like Telegram.

Supersedes #3976. Closes #3974
2026-03-19 18:07:25 -04:00
Argenis
ade588b4ec
feat(security): inject security policy summary into LLM system prompt (#4002)
Inject a human-readable summary of the active SecurityPolicy into the system prompt Safety section. LLM sees allowed commands, forbidden paths, autonomy level, and rate limits.

Supersedes #3968. Closes #2404
2026-03-19 17:54:12 -04:00
Dmitrii Mukhutdinov
f7636ab81c
fix(observability): handle missing OtelObserver match arms and add all-features CI check (#3981)
Add missing CacheHit/CacheMiss match arms to OtelObserver::record_event. Add check-all-features CI job to prevent --all-features compile regressions.
2026-03-19 17:48:35 -04:00
Martin
d76e4e5a86
feat(channels): add TTS voice reply support to Telegram channel (#3942)
Adds text-to-speech output to the Telegram channel, mirroring the
existing WhatsApp Web voice-chat implementation. When a user sends a
voice note (transcribed via STT), the channel enters voice-chat mode
and subsequent agent replies are synthesised into a Telegram voice note
via the configured TTS provider, in addition to the normal text reply.
Sending a text message exits voice-chat mode.

Implementation details:
- Add `tts_config`, `voice_chats`, and `pending_voice` fields to
  `TelegramChannel`
- Add `with_tts()` builder method, gated on `config.enabled`
- Track voice-chat state: enter on successful STT transcription, exit
  on incoming text message
- `synthesize_and_send_voice()` static method: synthesises audio via
  `TtsManager` and uploads to Telegram using `sendVoice` multipart API
- 10-second debounce in `send()` ensures only the final substantive
  reply in a tool chain gets a voice note (skips JSON, code blocks,
  URLs, short status messages)
- Wire `.with_tts(config.tts.clone())` into both Telegram construction
  sites in the channel factory

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 17:35:22 -04:00
Argenis
d9cea87fae
Merge pull request #3998 from zeroclaw-labs/fix/images-2
fix(docs): absolute banner URLs + web dashboard logo update
2026-03-19 16:47:09 -04:00
argenis de la rosa
6213bcab07 fix(docs): use absolute URLs for banner in all READMEs + update web dashboard logo
- Replace relative docs/assets/zeroclaw-banner.png paths with absolute
  raw.githubusercontent.com URLs in all 31 README files so the banner
  renders correctly regardless of where the README is viewed
- Switch web dashboard favicon and logos from logo.png to zeroclaw-trans.png
- Add zeroclaw-trans.png and zeroclaw-banner.png assets
- Update build.rs to track new dashboard asset
- Fix missing autonomy_level in new test + Box::pin large future

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 16:34:32 -04:00
argenis de la rosa
fe9f58f917 fix(docs): use absolute URLs for banner in all READMEs + update web dashboard logo
- Replace relative docs/assets/zeroclaw-banner.png paths with absolute
  raw.githubusercontent.com URLs in all 31 README files so the banner
  renders correctly regardless of where the README is viewed
- Switch web dashboard favicon and logos from logo.png to zeroclaw-trans.png
- Add zeroclaw-trans.png and zeroclaw-banner.png assets
- Update build.rs to track new dashboard asset

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 16:31:21 -04:00
Argenis
04c7ce4488
Merge pull request #3955 from Alix-007/issue-3952-full-autonomy-channel-prompt
fix(prompt): respect autonomy level in channel prompts
2026-03-19 16:12:13 -04:00
Argenis
5eea95ef2a
Merge pull request #3899 from Alix-007/issue-3842-openrouter-timeout
fix(openrouter): respect provider_timeout_secs on slow responses
2026-03-19 16:06:57 -04:00
argenis de la rosa
af1c37c2fb fix: pass autonomy_level through to prompt builder in wrapper function
build_system_prompt_with_mode was discarding the autonomy_level
parameter, passing None to build_system_prompt_with_mode_and_autonomy.
This caused full-autonomy prompts to still include "ask before acting"
instructions. Convert the level to an AutonomyConfig and pass it through.
2026-03-19 15:56:37 -04:00
argenis de la rosa
e3e4aef21c fix: box-pin large future in config init test to satisfy clippy
Config::load_or_init() produces a future >16KB, triggering
clippy::large_futures. Wrap with Box::pin() as recommended.
2026-03-19 15:44:41 -04:00
argenis de la rosa
a48e335be9 fix: box-pin large future in config init test to satisfy clippy
Config::load_or_init() produces a future >16KB, triggering
clippy::large_futures. Wrap with Box::pin() as recommended.
2026-03-19 15:44:19 -04:00
argenis de la rosa
fba15520dc fix: add missing autonomy_level field to test ChannelRuntimeContext
The full_autonomy_prompt test was missing the autonomy_level field
added to ChannelRuntimeContext by a recently merged PR.
2026-03-19 15:32:23 -04:00
argenis de la rosa
7504da1117 fix: add missing autonomy_level arg to test after merge with master
The refresh-skills test was missing the autonomy_level parameter
added to build_system_prompt_with_mode and ChannelRuntimeContext
by a recently merged PR.
2026-03-19 15:31:18 -04:00
argenis de la rosa
6292cdfe1c Merge origin/master into issue-3952-full-autonomy-channel-prompt
Resolve conflict in src/channels/mod.rs Safety section. Keeps the
PR's AutonomyConfig-based prompt construction (build_system_prompt_with_mode_and_autonomy)
while incorporating master's granular safety rules (conditional
destructive-command and ask-before-acting lines based on autonomy level).
Also fixes missing autonomy_level arg in refresh-skills test and removes
duplicate autonomy.level args from auto-merged call sites.
2026-03-19 15:27:43 -04:00
argenis de la rosa
693661b564 Merge origin/master into issue-3842-openrouter-timeout
Resolve merge conflicts keeping the PR's changes:
- timeout_secs parameter in OpenRouterProvider::new()
- read_response_body + parse_response_body pattern
- OPENROUTER_CONNECT_TIMEOUT_SECS and DEFAULT_OPENROUTER_TIMEOUT_SECS constants
- Update master's new tests to use two-arg new() signature
2026-03-19 15:19:32 -04:00
Argenis
4daec8c0df
Merge pull request #3288 from Alix-007/fix-2400-block-config-self-mutation
fix(security): block agent writes to runtime config state
2026-03-19 15:16:48 -04:00
Argenis
3cf609cb38
Merge pull request #3959 from Alix-007/issue-3706-read-skill
feat(skills): add read_skill for compact mode
2026-03-19 15:16:42 -04:00
Argenis
e1b7d29f1b
Merge pull request #3940 from Alix-007/issue-3845-refresh-skills-on-new
channel: refresh available skills after /new
2026-03-19 15:16:35 -04:00
Argenis
fef69a4128
Merge pull request #3787 from Alix-007/issue-3774-path-normalization
fix(tools): normalize workspace-prefixed paths
2026-03-19 15:16:17 -04:00
Argenis
643b683c39
Merge pull request #3954 from Alix-007/issue-2901-zai-tool-stream
fix(zai): enable tool_stream for tool-capable requests
2026-03-19 15:15:59 -04:00
Argenis
74c93b0ebc
Merge pull request #3943 from Alix-007/issue-3902-claude-code-test-race
test(claude_code): isolate echo script per test run
2026-03-19 15:15:52 -04:00
Argenis
a7bf69d279
Merge pull request #3356 from Alix-007/fix/config-load-initialized-state
fix(config): report existing configs as initialized on load
2026-03-19 15:15:47 -04:00
Argenis
f68af9a4c7
Merge pull request #3994 from zeroclaw-labs/fix/images
fix(docs): update banner image and add Instagram to all READMEs
2026-03-19 15:14:02 -04:00
Argenis
cca3d66955
fix: add Node.js build dependency to Homebrew formula template (#3996)
The Homebrew publish workflow downloads a source tarball but never
ensures Node.js is available during the build. Without it, build.rs
cannot run npm to compile the web frontend, so Homebrew-installed
ZeroClaw ships without the web dashboard.

Add `depends_on "node" => :build` to the formula by inserting it
after the existing `depends_on "rust" => :build` line. This lets
build.rs detect npm and automatically run `npm ci && npm run build`
to produce the web/dist assets.

Fixes #3991
2026-03-19 15:13:56 -04:00
Argenis
95bf229225
fix(config): enable compact_context by default (#3995)
* fix: change compact_context default to true

Local LLMs with limited context windows immediately run out of context
when compact_context defaults to false. The system prompt alone can
consume 25K+ tokens, exceeding even 55K context windows with history.

Setting compact_context=true by default limits system prompt injection
to 6000 chars and RAG results to 2 chunks, making the agent usable
with smaller models out of the box.

Fixes #3987

* docs: update compact_context default to true in config reference

Update all locale variants (en, zh-CN, vi) to reflect the new default.

* test: update tests to expect compact_context default of true

Update assertions in schema.rs unit tests and config_persistence.rs
component tests to match the new default value.
2026-03-19 15:13:14 -04:00
argenis de la rosa
ebe19147f2 fix(docs): update banner image and add Instagram badge to all READMEs
- Replace zeroclaw.png (broken/outdated) with zeroclaw-banner.png
  across all 30 translated README files
- Add Instagram social badge (@therealzeroclaw) to all translations

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 14:57:28 -04:00
Argenis
e387f58579
Merge pull request #3951 from Alix-007/issue-3946-release-memory-postgres
build(release): include memory-postgres in published artifacts
2026-03-19 14:42:15 -04:00
Argenis
fa06798926
fix(cron): persist allowed_tools for agent jobs (#3993)
Persist allowed_tools in cron_jobs table, threading it through CLI add/update and cron_add/cron_update tool APIs. Add regression coverage for store, tool, and CLI roundtrip paths.

Fixups over original PR #3929: add allowed_tools to all_overdue_jobs SELECT (merge gap), resolve merge conflicts.

Closes #3920
Supersedes #3929
2026-03-19 14:37:55 -04:00
Alix-007
a4cd4b287e
feat(slack): add thread_replies channel option (#3930)
Add a thread_replies option to Slack channel config (default true). When false, replies go to channel root instead of the originating thread.

Closes #3888
2026-03-19 14:32:02 -04:00
argenis de la rosa
3ce7f2345e merge: resolve conflicts with master, include channel-lark in RELEASE_CARGO_FEATURES
Add channel-lark (merged to master separately) to RELEASE_CARGO_FEATURES
env var. Keep the DRY env-var approach and remove stale Docker build-args.
2026-03-19 14:24:30 -04:00
Argenis
eb9dfc04b4
fix(anthropic): always apply cache_control to system prompts (#3990)
* fix: always use Blocks format for system prompts with cache_control

System prompts under 3KB were wrapped in SystemPrompt::String which
cannot carry cache_control headers, resulting in 0% cache hit rate
on Haiku 4.5. Always use SystemPrompt::Blocks with ephemeral
cache_control regardless of prompt size.

Fixes #3977

* fix: lower conversation caching threshold from >4 to >1 messages

The previous threshold of >4 non-system messages was too restrictive,
delaying cache benefits until 5+ turns. Lower to >1 so caching kicks
in after the first user+assistant exchange.

Fixes #3977

* test: update anthropic cache tests for new thresholds and Blocks format

- convert_messages_small_system_prompt now expects Blocks with
  cache_control instead of String variant
- should_cache_conversation tests updated for >1 threshold
- backward_compatibility test replaced with blocks-system test
2026-03-19 14:21:45 -04:00
Argenis
9cc74a2698
fix(security): wire sandbox into shell command execution (#3989)
* fix: add sandbox field to ShellTool struct

Add `sandbox: Arc<dyn Sandbox>` field to `ShellTool` and a
`new_with_sandbox()` constructor so callers can inject the configured
sandbox backend. The existing `new()` constructor defaults to
`NoopSandbox` for backward compatibility.

Ref: #3983

* fix: apply sandbox wrapping in ShellTool::execute()

Call `self.sandbox.wrap_command()` on the underlying std::process::Command
(via `as_std_mut()`) after building the shell command and before clearing
the environment. This ensures every shell command passes through the
configured sandbox backend before execution.

Ref: #3983

* fix: wire up sandbox creation at ShellTool callsites

In `all_tools_with_runtime()`, create a sandbox from
`root_config.security` via `create_sandbox()` and pass it to
`ShellTool::new_with_sandbox()`. The `default_tools_with_runtime()`
path retains `ShellTool::new()` which defaults to `NoopSandbox`.

Ref: #3983

* test: add sandbox integration tests for ShellTool

Verify that ShellTool can be constructed with a sandbox via
`new_with_sandbox()`, that NoopSandbox leaves commands unmodified,
and that command execution works end-to-end with a sandbox attached.

Ref: #3983
2026-03-19 14:21:42 -04:00
Argenis
133dc46b41
fix(web): restore accidentally deleted logo file (#3988)
* fix: restore accidentally deleted logo file

The logo.png was removed in commit 48bdbde2 but is still referenced
by the web UI components. Restore it from git history.

Fixes #3984

* fix: copy logo to web/dist for rust-embed

The Rust binary embeds files from web/dist/ via rust-embed, so the
logo must also be present there to be served without a rebuild.

Fixes #3984
2026-03-19 14:21:15 -04:00
Argenis
ad03605cad
Merge pull request #3949 from Alix-007/issue-3817-cron-delivery-context
fix: default cron delivery to the active channel context
2026-03-19 14:20:59 -04:00
Argenis
ae1acf9b9c
Merge pull request #3950 from Alix-007/issue-3466-homebrew-service-workspace
fix(onboard): warn when Homebrew services use another workspace
2026-03-19 14:20:56 -04:00
Alix-007
cc91f22e9b
fix(skills): narrow shell shebang detection (#3944)
Co-authored-by: Alix-007 <267018309+Alix-007@users.noreply.github.com>
2026-03-19 14:10:51 -04:00
Martin
030f5fe288
fix(install): fix guided installer in LXC/container environments (#3947)
Replace subshell-based /dev/stdin probing in guided_input_stream with a
file-descriptor approach (guided_open_input) that works reliably in LXC
containers accessed over SSH.

The previous implementation probed /dev/stdin and /proc/self/fd/0 via
subshells before falling back to /dev/tty. In LXC containers these
probes fail even when FD 0 is perfectly usable, causing the guided
installer to exit with "requires an interactive terminal".

The fix:
- When stdin is a terminal (-t 0), assign GUIDED_FD=0 directly without
  any subshell probing — trusting the kernel's own tty check
- Otherwise, open /dev/tty as an explicit fd (exec {GUIDED_FD}</dev/tty)
- guided_read uses `read -u "$GUIDED_FD"` instead of `< "$file_path"`
- Add echo after silent reads (password prompts) for correct line handling

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 14:10:48 -04:00
Giulio V
c47bbcc972
fix(cron): add startup catch-up and drop login shell flag (#3948)
* fix(cron): add startup catch-up and drop login shell flag

Problems:
1. When ZeroClaw started after downtime (late boot, daemon restart),
   overdue jobs were picked up via `due_jobs()` but limited by
   `max_tasks` per poll cycle — with many overdue jobs, catch-up
   could take many cycles.
2. Cron shell jobs used `sh -lc` (login shell), which loads the
   full user profile on every execution — slow and may cause
   unexpected side effects.

Fixes:
- Add `all_overdue_jobs()` store query without `max_tasks` limit
- Add `catch_up_overdue_jobs()` startup phase that runs ALL overdue
  jobs once before entering the normal polling loop
- Extract `build_cron_shell_command()` helper using `sh -c` (non-login)
- Add structured tracing for catch-up progress
- Add tests for all new functions

* feat(cron): make catch-up configurable via API and control panel

Add `catch_up_on_startup` boolean to `[cron]` config (default: true).
When enabled, the scheduler runs all overdue jobs at startup before
entering the normal polling loop. Users can toggle this from:

- The Cron page toggle switch in the control panel
- PATCH /api/cron/settings { "catch_up_on_startup": false }
- The `[cron]` section of the TOML config editor

Also adds GET /api/cron/settings endpoint to read cron subsystem
settings without parsing the full config.

* fix(config): add catch_up_on_startup to CronConfig test constructors

The CI Lint job failed because the `cron_config_serde_roundtrip` test
constructs CronConfig directly and was missing the new field.
2026-03-19 14:10:37 -04:00
Argenis
72fbb22059
Merge pull request #3985 from zeroclaw-labs/fix/aur-ssh-publish
fix(ci): harden AUR SSH key setup and add diagnostics
2026-03-19 13:44:01 -04:00
argenis de la rosa
cbb3d9ae92 fix(ci): harden AUR SSH key setup and add diagnostics (#3952)
The AUR publish step fails with "Permission denied (publickey)".
Root cause is likely key formatting (Windows line endings from
GitHub secrets UI) or missing public key registration on AUR.

Changes:
- Normalize line endings (strip \r) when writing SSH key
- Set correct permissions on ~/.ssh (700) and ~/.ssh/config (600)
- Validate key with ssh-keygen before attempting clone
- Add SSH connectivity test for clearer error diagnostics

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 13:28:58 -04:00
Argenis
8d1eebad4d
Merge pull request #3980 from zeroclaw-labs/version-bump-0.5.1
chore: bump version to 0.5.1
2026-03-19 09:56:36 -04:00
argenis de la rosa
0fdd1ad490 chore: bump version to 0.5.1
Release highlights:
- Autonomy enforcement in gateway and channel paths (#3952)
- conversational_ai startup warning for unimplemented config (#3958)
- Heartbeat default interval 30→5min (#3938)
- Provider timeout and error handling improvements (#3973, #3978)
- Docker/CI postgres and Lark feature fixes (#3971, #3933)
- Tool path resolution fix (#3937)
- OTP config fix (#3936)
- README: Instagram badge + banner image (#3979)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 09:45:32 -04:00
Argenis
86bc60fcd1
Merge pull request #3979 from zeroclaw-labs/readme
docs: add Instagram badge and banner to README
2026-03-19 09:42:00 -04:00
argenis de la rosa
4837e1fe73 docs(readme): add Instagram social badge and switch to banner image
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 09:30:54 -04:00
Argenis
985977ae0c
fix(providers): exempt tool schema errors from non-retryable classification (#3978)
* fix: exempt tool schema validation errors from non-retryable classification

Groq returns 400 "tool call validation failed" which was classified as
non-retryable by is_non_retryable(), preventing the provider-level
fallback in compatible.rs from executing. Add is_tool_schema_error()
to detect these errors and return false from is_non_retryable(), allowing
the retry loop to pass control back to the provider's built-in fallback.

Fixes #3757

* test: add unit tests for tool schema error detection in reliable.rs

Verify is_tool_schema_error detects Groq-style validation failures and
that is_non_retryable returns false for tool schema 400s while still
returning true for other 400 errors like invalid API key.

* fix: escape format braces in test string literals for cargo check

The anyhow::anyhow! macro interprets curly braces as format
placeholders. Use explicit format argument to pass JSON-containing
strings in tests.
2026-03-19 09:25:49 -04:00
Argenis
72b10f12dd
Merge pull request #3975 from zeroclaw-labs/agent-loop
fix: enforce autonomy level in gateway/channel paths + conversational_ai warning
2026-03-19 09:20:21 -04:00
Argenis
3239f5ea07
fix(ci): include channel-lark feature in precompiled release binaries (#3933) (#3972)
Add channel-lark to the cargo --features flag in all release and
cross-platform build workflows, and to the Docker build-args.  This
gives users Feishu/Lark channel support out of the box without needing
to compile from source.

The channel-lark feature depends only on dep:prost (pure Rust protobuf),
so it is safe to enable on all platforms (Linux, macOS, Windows, Android).
2026-03-19 09:15:10 -04:00
Argenis
3353729b01
fix(openrouter): respect provider_timeout_secs and improve error messages (#3973)
* fix(openrouter): wire provider_timeout_secs through factory

Apply the configured provider_timeout_secs to OpenRouterProvider
in the provider factory, matching the pattern used for compatible
providers.

* fix(openrouter): add timeout_secs field to OpenRouterProvider

Add a configurable timeout_secs field (default 120s) and a
with_timeout_secs() builder method so the HTTP client timeout
can be overridden via provider config instead of being hardcoded.

* refactor(openrouter): improve response decode error messages

Read the response body as text first, then parse with
serde_json::from_str so that decode failures include a truncated
snippet of the raw body for easier debugging.

* test(openrouter): add timeout_secs configuration tests

Verify that the default timeout is 120s and that with_timeout_secs
correctly overrides it.

* style: run rustfmt on openrouter.rs
2026-03-19 09:12:14 -04:00
argenis de la rosa
b6c2930a70 fix(agent): enforce autonomy level in gateway and channel paths (#3952)
- Channel tool filtering (`non_cli_excluded_tools`) now respects
  `autonomy.level = "full"` — full-autonomy agents keep all tools
  available regardless of channel.
- Gateway `process_message` now creates and passes an `ApprovalManager`
  to `agent_turn`, so `ReadOnly`/`Supervised` policies are enforced
  instead of silently skipped.
- Gateway also applies `non_cli_excluded_tools` filtering with the same
  full-autonomy bypass.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 08:56:45 -04:00
argenis de la rosa
181cafff70 fix(config): warn when conversational_ai.enabled is set (#3958)
The conversational_ai config section is parsed but not yet consumed by
any runtime code. Emit a startup warning so users know the setting is
ignored, and update the doc comment to mark it as reserved for future use.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 08:56:38 -04:00
Argenis
d87f387111
fix(docker): add memory-postgres feature to Docker and CI builds (#3971)
The GHCR image v0.5.0 fails to start when users configure the postgres
memory backend because the binary was compiled without the
memory-postgres cargo feature. Add it to all build configurations:
Dockerfiles (default ARG), release workflows (cargo build --features),
and Docker push steps (ZEROCLAW_CARGO_FEATURES build-arg).

Fixes #3946
2026-03-19 08:51:20 -04:00
Argenis
7068079028
fix: make channel system prompt respect autonomy.level = full (#3952) (#3970)
When autonomy.level is set to "full", the channel/web system prompt no
longer includes instructions telling the model to ask for permission
before executing tools. Previously these safety lines were hardcoded
regardless of autonomy config, causing the LLM to simulate approval
dialogs in channel and web-interface modes even though the
ApprovalManager correctly allowed execution.

The fix adds an autonomy_level parameter to build_system_prompt_with_mode
and conditionally omits the "ask before acting" instructions when the
level is Full. Core safety rules (no data exfiltration, prefer trash)
are always included.
2026-03-19 08:48:38 -04:00
Argenis
a9b511e6ec
fix: omit experimental conversational_ai section from default config (#3969)
The [conversational_ai] config section was serialized into every
freshly-generated config.toml despite the feature being experimental
and not yet wired into the agent runtime. This confused new users who
found an undocumented section in their config.

Add skip_serializing_if = "ConversationalAiConfig::is_disabled" so the
section is only written when a user has explicitly enabled it. Existing
configs that already contain the section continue to deserialize
correctly via #[serde(default)].

Fixes #3958
2026-03-19 08:48:33 -04:00
Argenis
65cb4fe099
feat(heartbeat): default interval 30→5min + prune heartbeat from auto-save (#3938)
Lower the default heartbeat interval to 5 minutes to match the renewable
partial wake-lock cadence. Add `[heartbeat task` to the memory auto-save
skip filter so heartbeat prompts (both Phase 1 decision and Phase 2 task
execution) do not pollute persistent conversation memory.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 08:17:08 -04:00
Alix-007
1bbc159e0e style(zai): satisfy rustfmt in tool_stream request 2026-03-19 19:15:58 +08:00
Alix-007
0d28cca843 build(release): drop stale docker feature args 2026-03-19 19:14:07 +08:00
Alix-007
b1d20d38f9 feat(skills): add read_skill for compact mode 2026-03-19 17:53:40 +08:00
Alix-007
2bad6678ec fix(prompt): respect autonomy level in channel prompts 2026-03-19 16:54:51 +08:00
Alix-007
b6fe054915 fix(zai): send tool_stream for tool-capable requests 2026-03-19 16:32:06 +08:00
Alix-007
7ddd2aace3 build(release): ship postgres-capable release artifacts 2026-03-19 15:37:45 +08:00
Alix-007
c7b3b762e0 fix(onboard): warn when Homebrew service uses another workspace 2026-03-19 15:30:40 +08:00
Alix-007
4b00e8ba75 fix(cron): default channel delivery to active reply target 2026-03-19 15:11:47 +08:00
Alix-007
dd462a2b04 test(claude_code): isolate echo script per test run 2026-03-19 13:47:08 +08:00
Alix-007
2d68b880c2 Fix /new regression test lint scope 2026-03-19 12:19:31 +08:00
Alix-007
3a672a2ede Refresh skills after new channel sessions 2026-03-19 12:07:08 +08:00
Argenis
2e48cbf7c3
fix(tools): use resolve_tool_path for consistent path resolution (#3937)
Replace workspace_dir.join(path) with resolve_tool_path(path) in
file_write, file_edit, and pdf_read tools to correctly handle absolute
paths within the workspace directory, preventing path doubling.

Closes #3774
2026-03-18 23:51:35 -04:00
Argenis
e4910705d1
fix(config): add missing challenge_max_attempts field to OtpConfig (#3919) (#3936)
The OtpConfig struct uses deny_unknown_fields but was missing the
challenge_max_attempts field, causing zeroclaw config schema to fail
with a TOML parse error when the field appeared in config files.

Add challenge_max_attempts as an Option<u32>-style field with a default
of 3 and a validation check ensuring it is greater than 0.
2026-03-18 23:48:53 -04:00
Argenis
1b664143c2
fix: move misplaced include key from [lib] to [package] in Cargo.toml (#3935)
The `include` array was placed after `[lib]` without a section header,
causing Cargo to parse it as `lib.include` — an invalid manifest key.
This triggered a warning during builds and caused lockfile mismatch
errors when building with --locked in Docker (Dockerfile.debian).

Move the `include` key to the `[package]` section where it belongs and
regenerate Cargo.lock to stay in sync.

Fixes #3925
2026-03-18 23:48:50 -04:00
Argenis
950f996812
Merge pull request #3926 from zeroclaw-labs/fix/pairing-code-terminal-display
fix(gateway): move pairing code below dashboard URL in terminal
2026-03-18 20:34:08 -04:00
argenis de la rosa
b74c5cfda8 fix(gateway): move pairing code below dashboard URL in terminal banner
Repositions the one-time pairing code display to appear directly below
the dashboard URL for cleaner terminal output, and removes the duplicate
display that was showing at the bottom of the route list.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 19:50:26 -04:00
Argenis
02688eb124
feat(skills): autonomous skill creation from multi-step tasks (#3916)
Add SkillCreator module that persists successful multi-step task
executions as reusable SKILL.toml definitions under the workspace
skills directory.

- SkillCreationConfig in [skills.skill_creation] (disabled by default)
- Slug validation, TOML generation, embedding-based deduplication
- LRU eviction when max_skills limit is reached
- Agent loop integration post-success
- Gated behind `skill-creation` compile-time feature flag

Closes #3825.
2026-03-18 17:15:02 -04:00
Argenis
2c92cf913b
fix: ensure SOUL.md and IDENTITY.md exist in non-tty sessions (#3915)
When the workspace is created outside of `zeroclaw onboard` (e.g., via
cron, daemon, or `< /dev/null`), SOUL.md and IDENTITY.md were never
scaffolded, causing the agent to activate without identity files.

Added `ensure_bootstrap_files()` in `Config::load_or_init()` that
idempotently creates default SOUL.md and IDENTITY.md if missing.

Closes #3819.
2026-03-18 17:12:44 -04:00
Argenis
3c117d2d7b
feat(delegate): make sub-agent timeouts configurable via config.toml (#3909)
Add `timeout_secs` and `agentic_timeout_secs` fields to
`DelegateAgentConfig` so users can tune per-agent timeouts instead
of relying on the hardcoded 120s / 300s defaults.

Validation rejects values of 0 or above 3600s, matching the pattern
used by MCP timeout validation.

Closes #3898
2026-03-18 17:07:03 -04:00
Argenis
1f7c3c99e4
feat(i18n): externalize tool descriptions for translation (#3912)
Add a locale-aware tool description system that loads translations from
TOML files in tool_descriptions/. This enables non-English users to see
tool descriptions in their language.

- Add src/i18n.rs module with ToolDescriptions loader, locale detection
  (ZEROCLAW_LOCALE, LANG, LC_ALL env vars), and English fallback chain
- Add locale config field to Config struct for explicit locale override
- Create tool_descriptions/en.toml with all 47 tool descriptions
- Create tool_descriptions/zh-CN.toml with Chinese translations
- Integrate with ToolsSection::build() and build_tool_instructions()
  to resolve descriptions from locale files before hardcoded fallback
- Add PromptContext.tool_descriptions field for prompt-time resolution
- Add AgentBuilder.tool_descriptions() setter for Agent construction
- Include tool_descriptions/ in Cargo.toml package include list
- Add 8 unit tests covering locale loading, fallback chains, env
  detection, and config override

Closes #3901
2026-03-18 17:01:39 -04:00
Argenis
92940a3d16
Merge pull request #3904 from zeroclaw-labs/fix/install-stale-build-cache
fix(install): clean stale build cache on upgrade
2026-03-18 15:49:10 -04:00
Argenis
d77c616905
fix: reset tool call dedup cache each iteration to prevent loops (#3910)
The seen_tool_signatures HashSet was initialized outside the iteration loop, causing cross-iteration deduplication of legitimate tool calls. This triggered a self-correction spiral where the agent repeatedly attempted skipped calls until hitting max_iterations.

Moving the HashSet inside the loop ensures deduplication only applies within a single iteration, as originally intended.

Fixes #3798
2026-03-18 15:45:10 -04:00
Argenis
ac12470c27
fix(channels): respect ack_reactions config for Telegram channel (#3834) (#3913)
The Telegram channel was ignoring the ack_reactions setting because it
sent setMessageReaction API calls directly in its polling loop, bypassing
the top-level channels_config.ack_reactions check.

- Add optional ack_reactions field to TelegramConfig so it can be set
  under [channels_config.telegram] without "unknown key" warnings
- Add ack_reactions field and with_ack_reactions() builder to
  TelegramChannel, defaulting to true
- Guard try_add_ack_reaction_nonblocking() behind self.ack_reactions
- Wire channel-level override with fallback to top-level default
- Add config deserialization and channel behavior tests
2026-03-18 15:40:31 -04:00
Nim G
a322e01b5f feat(channel): add interrupt_on_new_message support for Mattermost 2026-03-18 16:40:25 -03:00
Argenis
c5a1148ae9
fix: ensure install.sh creates config.toml and workspace files (#3852) (#3906)
When running install.sh with --docker --skip-build --prefer-prebuilt
(especially with podman via ZEROCLAW_CONTAINER_CLI), the script would
skip creating config.toml and workspace scaffold files because these
were only generated by the onboard wizard, which requires an interactive
terminal or explicit API key.

Add ensure_default_config_and_workspace() that creates a minimal
config.toml (with provider, workspace_dir, and optional api_key/model)
and seeds the workspace directory structure (sessions/, memory/, state/,
cron/, skills/ subdirectories plus IDENTITY.md, USER.md, MEMORY.md,
AGENTS.md, and SOUL.md) when they don't already exist.

This function is called:
- At the end of run_docker_bootstrap(), so config and workspace files
  exist on the host volume regardless of whether onboard ran inside the
  container.
- After the [3/3] Finalizing setup onboard block in the native install
  path, covering --skip-build, --prefer-prebuilt, --skip-onboard, and
  cases where the binary wasn't found.

The function is idempotent: it only writes files that don't already
exist, so it never overwrites config or workspace files created by a
successful onboard run.

Also makes the container onboard failure non-fatal (|| true) so that
the fallback config generation always runs.

Fixes #3852
2026-03-18 15:15:47 -04:00
Argenis
440ad6e5b5
fix: handle double-serialized schedule in cron_add and cron_update (#3860) (#3905)
When LLMs pass the schedule parameter as a JSON string instead of a JSON
object, serde fails with "invalid type: string, expected internally
tagged enum Schedule". Add a deserialize_maybe_stringified helper that
detects stringified JSON values and parses the inner string before
deserializing, providing backward compatibility for both object and
string representations.

Fixes #3860
2026-03-18 15:15:22 -04:00
Argenis
2e41cb56f6
fix: enable vision support for llamacpp provider (#3907)
The llamacpp provider was instantiated with vision disabled by default, causing image transfers from Telegram to fail. Use new_with_vision() with vision enabled, matching the behavior of other compatible providers.

Fixes #3802
2026-03-18 15:14:57 -04:00
Argenis
2227fadb66
fix(tools): include tool_search instruction in deferred tools system prompt (#3826) (#3914)
The deferred MCP tools section in the system prompt only listed tool
names inside <available-deferred-tools> tags without any instruction
telling the LLM to call tool_search to activate them. In daemon and
Telegram mode, where conversations are shorter and less guided, the
LLM never discovered it should call tool_search, so deferred tools
were effectively unavailable.

Add a "## Deferred Tools" heading with explicit instructions that
the LLM MUST call tool_search before using any listed tool. This
ensures the LLM knows to activate deferred tools in all modes
(CLI, daemon, Telegram) consistently.

Also add tests covering:
- Instruction presence in the deferred section
- Multiple-server deferred tool search
- Cross-server keyword search ranking
- Activation persistence across multiple tool_search calls
- Idempotent re-activation
2026-03-18 15:13:58 -04:00
Argenis
162efbb49c
fix(providers): recover from context window errors by truncating history (#3908)
When a provider returns a context-size-exceeded error, truncate the
oldest non-system messages from conversation history and retry instead
of immediately bailing out. This enables local models with small
context windows (llamafile, llama.cpp) to work by automatically
fitting the conversation within available context.

Closes #3894
2026-03-18 14:54:56 -04:00
argenis de la rosa
3c8b6d219a fix(test): use PID-scoped script path to prevent ETXTBSY in CI
The echo_provider() test helper writes a fake_claude.sh script to
a shared temp directory. When lib and bin test binaries run in
parallel (separate processes, separate OnceLock statics), one
process can overwrite the script while the other is executing it,
causing "Text file busy" (ETXTBSY). Scope the filename with PID
to isolate each test process.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 14:33:04 -04:00
Vasanth
58b98c59a8
feat(agent): add runtime model switching via model_switch tool (#3853)
Add support for switching AI models at runtime during a conversation.
The model_switch tool allows users to:
- Get current model state
- List available providers
- List models for a provider
- Switch to a different model

The switch takes effect immediately for the current conversation by
recreating the provider with the new model after tool execution.

Risk: Medium - internal state changes and provider recreation
2026-03-18 14:17:52 -04:00
argenis de la rosa
d72e9379f7 fix(install): clean stale build cache on upgrade
When upgrading an existing installation, stale build artifacts in
target/release/build/ can cause compilation failures (e.g.
libsqlite3-sys bindgen.rs not found). Run cargo clean --release
before building when an upgrade is detected.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 14:15:59 -04:00
Alix-007
e3e9db5210 fix(openrouter): respect provider timeout config 2026-03-19 01:36:57 +08:00
Nim G
ad8a209bd7 feat(channel): add /stop command to cancel in-flight tasks
Adds an explicit /stop slash command that allows users on any non-CLI
channel (Matrix, Telegram, Discord, Slack, etc.) to cancel an agent
task that is currently running.

Changes:
- is_stop_command(): new helper that detects /stop (case-insensitive,
  optional @botname suffix), not gated on channel type
- /stop fast path in run_message_dispatch_loop: intercepts /stop before
  semaphore acquisition so the target task is never replaced in the store;
  fires CancellationToken on the running task; sends reply via tokio::spawn
  using the established two-step channel lookup pattern
- register_in_flight separated from interrupt_enabled: all non-CLI tasks
  now enter the in_flight_by_sender store, enabling /stop to reach them;
  auto-cancel-on-new-message remains gated on interrupt_enabled (Telegram/
  Slack only) — this is a deliberate broadening, not a side effect

Deferred to follow-up (feat/matrix-interrupt-on-new-message):
- interrupt_on_new_message config field for Matrix
- thread-aware interruption_scope_key (requires per-channel thread_ts
  semantics analysis; Slack always sets thread_ts, Matrix only for replies)

Supersedes #2855

Tests: 7 new unit tests for is_stop_command; all 4075 tests pass.
2026-03-18 12:32:20 -04:00
Nim G
571ccd67cb feat(channel): add /stop command to cancel in-flight tasks
Adds an explicit /stop slash command that allows users on any non-CLI
channel (Matrix, Telegram, Discord, Slack, etc.) to cancel an agent
task that is currently running.

Changes:
- is_stop_command(): new helper that detects /stop (case-insensitive,
  optional @botname suffix), not gated on channel type
- /stop fast path in run_message_dispatch_loop: intercepts /stop before
  semaphore acquisition so the target task is never replaced in the store;
  fires CancellationToken on the running task; sends reply via tokio::spawn
  using the established two-step channel lookup pattern
- register_in_flight separated from interrupt_enabled: all non-CLI tasks
  now enter the in_flight_by_sender store, enabling /stop to reach them;
  auto-cancel-on-new-message remains gated on interrupt_enabled (Telegram/
  Slack only) — this is a deliberate broadening, not a side effect

Deferred to follow-up (feat/matrix-interrupt-on-new-message):
- interrupt_on_new_message config field for Matrix
- thread-aware interruption_scope_key (requires per-channel thread_ts
  semantics analysis; Slack always sets thread_ts, Matrix only for replies)

Supersedes #2855

Tests: 7 new unit tests for is_stop_command; all 4075 tests pass.
2026-03-18 13:29:40 -03:00
Argenis
959b933841
fix(providers): preserve conversation context in Claude Code CLI (#3885)
* fix(providers): preserve conversation context in Claude Code CLI provider

Override chat_with_history to format full multi-turn conversation
history into a single prompt for the claude CLI, instead of only
forwarding the last user message.

Closes #3878

* fix(providers): fix ETXTBSY race in claude_code tests

Use OnceLock to initialize the fake_claude.sh test script exactly
once, preventing "Text file busy" errors when parallel tests
concurrently write and execute the same script file.
2026-03-18 11:13:42 -04:00
Argenis
caf7c7194f
fix(cron): prevent one-shot jobs from re-executing indefinitely (#3886)
Handle Schedule::At jobs in reschedule_after_run by disabling them
instead of rescheduling to a past timestamp. Also add a fallback in
persist_job_result to disable one-shot jobs if removal fails.

Closes #3868
2026-03-18 11:03:44 -04:00
Argenis
ee7d542da6
fix: pass route-specific api_key through channel provider creation (#3881)
When using Channel mode with dynamic classification and routing, the
route-specific `api_key` from `[[model_routes]]` was silently dropped.
The system always fell back to the global `api_key`, causing 401 errors
when routing to `custom:` providers that require distinct credentials.

Root cause: `ChannelRouteSelection` only stored provider + model, and
`get_or_create_provider` always used `ctx.api_key` (the global key).

Changes:
- Add `api_key` field to `ChannelRouteSelection` so the matched route's
  credential survives through to provider creation.
- Update `get_or_create_provider` to accept and prefer a route-specific
  `api_key` over the global key.
- Use a composite cache key (provider name + api_key hash) to prevent
  cache poisoning when multiple routes target the same provider with
  different credentials.
- Wire the route api_key through query classification matching and the
  `/model` (SetModel) command path.

Fixes #3838
2026-03-18 10:06:06 -04:00
Argenis
d51ec4b43f
fix(docker): remove COPY commands for dockerignored paths (#3880)
The Dockerfile and Dockerfile.debian COPY `firmware/`, `crates/robot-kit/`,
and `crates/robot-kit/Cargo.toml`, but `.dockerignore` excludes both
`firmware/` and `crates/robot-kit/`, causing COPY failures during build.

Since these are hardware-only paths not needed for the Docker runtime:
- Remove COPY commands for `firmware/` and `crates/robot-kit/`
- Remove dummy `crates/robot-kit/src` creation in dep-caching steps
- Use sed to strip `crates/robot-kit` from workspace members in the
  copied Cargo.toml so Cargo doesn't look for the missing manifest

Fixes #3836
2026-03-18 10:06:03 -04:00
Alix-007
d81eeefe52 fix(tools): normalize workspace-prefixed paths 2026-03-18 10:35:25 +08:00
Argenis
3d92b2a652
Merge pull request #3833 from zeroclaw-labs/fix/pairing-code-display
fix(web): display pairing code in dashboard
2026-03-17 22:16:50 -04:00
argenis de la rosa
3255051426 fix(web): display pairing code in dashboard instead of terminal-only
Fetch the current pairing code from GET /admin/paircode (localhost-only)
and display it in both the initial PairingDialog and the /pairing
management page. Users no longer need to check the terminal to find
the 6-digit code — it appears directly in the web UI.

Falls back gracefully when the admin endpoint is unreachable (e.g.
non-localhost access), showing the original "check your terminal" prompt.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 22:01:03 -04:00
Argenis
dcaf330848
Merge pull request #3828 from zeroclaw-labs/fix/readme
fix(readme): update social links across all locales
2026-03-17 19:15:29 -04:00
argenis de la rosa
7f8de5cb17 fix(readme): update Facebook group URL and add Discord, TikTok, RedNote badges
Update Facebook group link from /groups/zeroclaw to /groups/zeroclawlabs
across all 31 README locale files. Add Discord, TikTok, and RedNote
social badges to the badge section of all READMEs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 19:02:53 -04:00
Argenis
1341cfb296
Merge pull request #3827 from zeroclaw-labs/feat/plugin-wasm
feat(plugins): add WASM plugin system with Extism runtime
2026-03-17 18:51:41 -04:00
argenis de la rosa
9da620a5aa fix(ci): add cargo-audit ignore for wasmtime vulns from extism
cargo-audit uses .cargo/audit.toml (not deny.toml) for its ignore
list. These 3 wasmtime advisories are transitive via extism 1.13.0
with no upstream fix available. Plugin system is feature-gated.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 18:38:02 -04:00
argenis de la rosa
d016e6b1a0 fix(ci): ignore wasmtime vulns from extism 1.13.0 (no upstream fix)
RUSTSEC-2026-0006, RUSTSEC-2026-0020, RUSTSEC-2026-0021 are all in
wasmtime 37.x pinned by extism. No newer extism release available.
Plugin system is behind a feature flag to limit exposure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 18:35:08 -04:00
argenis de la rosa
9b6360ad71 fix(ci): ignore unmaintained transitive deps from extism and indicatif
Add cargo-deny ignore entries for RUSTSEC-2024-0388 (derivative),
RUSTSEC-2025-0057 (fxhash), and RUSTSEC-2025-0119 (number_prefix).
All are transitive dependencies we cannot directly control.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 18:33:03 -04:00
argenis de la rosa
dc50ca9171 fix(plugins): update lockfile and fix ws.rs formatting
Sync Cargo.lock with new Extism/WASM plugin dependencies and apply
rustfmt line-wrap fix in gateway WebSocket handler.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 18:30:41 -04:00
argenis de la rosa
67edd2bc60 fix(plugins): integrate WASM tools into registry, add gateway routes and tests
- Wire WASM plugin tools into all_tools_with_runtime() behind
  cfg(feature = "plugins-wasm"), discovering and registering tool-capable
  plugins from the configured plugins directory at startup.
- Add /api/plugins gateway endpoint (cfg-gated) for listing plugin status.
- Add mod plugins declaration to main.rs binary crate so crate::plugins
  resolves when the feature is enabled.
- Add unit tests for PluginHost: empty dir, manifest discovery, capability
  filtering, lookup, and removal.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 18:10:24 -04:00
argenis de la rosa
dcf66175e4 feat(plugins): add example weather plugin and manifest
Add a standalone example plugin demonstrating the WASM plugin interface:
- example-plugin/Cargo.toml: cdylib crate targeting wasm32-wasip1
- example-plugin/src/lib.rs: mock weather tool using extism-pdk
- example-plugin/manifest.toml: plugin manifest declaring tool capability

This crate is intentionally NOT added to the workspace members since it
targets wasm32-wasip1 and would break the main build.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 18:09:54 -04:00
argenis de la rosa
b3bb79d805 feat(plugins): add PluginHost, WasmTool, and WasmChannel bridges
Implement the core plugin infrastructure:
- PluginHost: discovers plugins from the workspace plugins directory,
  loads manifest.toml files, supports install/remove/list/info operations
- WasmTool: bridges WASM plugins to the Tool trait (execute stub pending
  Extism runtime wiring)
- WasmChannel: bridges WASM plugins to the Channel trait (send/listen
  stubs pending Extism runtime wiring)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 18:09:54 -04:00
argenis de la rosa
c857b64bb4 feat(plugins): add Extism dependency, feature flag, and plugin module skeleton
Introduce the WASM plugin system foundation:
- Add extism 1.9 as an optional dependency behind `plugins-wasm` feature
- Create `src/plugins/` module with manifest types, error types, and stub host
- Add `Plugin` CLI subcommands (list, install, remove, info) behind cfg gate
- Add `PluginsConfig` to the config schema with sensible defaults

All plugin code is behind `#[cfg(feature = "plugins-wasm")]` so the default
build is unaffected.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 18:09:54 -04:00
Alix-007
f87c7442b9 chore(pr): restore merge-base docs file for #3356 2026-03-17 12:11:35 +08:00
Alix-007
0a191fc02c chore(pr): drop unrelated docs delta from #3356 2026-03-17 12:08:20 +08:00
Argenis
bb99d2b57a
Merge branch 'master' into fix-2400-block-config-self-mutation 2026-03-16 09:21:57 -04:00
李龙 0668001470
81256dbf42 test(config): fix helper lint and swarms fixture 2026-03-16 17:56:30 +08:00
李龙 0668001470
eb9b26cea0 test(config): centralize backward-compat fixtures 2026-03-16 17:45:20 +08:00
李龙 0668001470
6211824f01 fix(security): block runtime config state edits 2026-03-16 17:21:22 +08:00
李龙 0668001470
b4decb40c6 Merge upstream/master into fix/config-load-initialized-state 2026-03-16 13:18:30 +08:00
李龙 0668001470
2b30f060fe test(config): move initialized log regression away from merge hotspot 2026-03-16 11:06:18 +08:00
李龙 0668001470
f994979380 fix(config): avoid clippy used_underscore_binding 2026-03-16 09:13:18 +08:00
Alix-007
04ea5093d4 fix(config): log existing config as initialized 2026-03-13 02:41:39 +08:00
407 changed files with 94019 additions and 10723 deletions

12
.cargo/audit.toml Normal file
View File

@ -0,0 +1,12 @@
# cargo-audit configuration
# https://rustsec.org/
[advisories]
ignore = [
# wasmtime vulns via extism 1.13.0 — no upstream fix; plugins feature-gated
"RUSTSEC-2026-0006", # wasmtime f64.copysign segfault on x86-64
"RUSTSEC-2026-0020", # WASI guest-controlled resource exhaustion
"RUSTSEC-2026-0021", # WASI http fields panic
# instant crate unmaintained — transitive dep via nostr; no upstream fix
"RUSTSEC-2024-0384",
]

View File

@ -2,7 +2,7 @@
rustflags = ["-C", "link-arg=-static"] rustflags = ["-C", "link-arg=-static"]
[target.aarch64-unknown-linux-musl] [target.aarch64-unknown-linux-musl]
rustflags = ["-C", "link-arg=-static"] rustflags = ["-C", "link-arg=-static", "-C", "link-arg=-Wl,-z,stack-size=8388608"]
# Android targets (NDK toolchain) # Android targets (NDK toolchain)
[target.armv7-linux-androideabi] [target.armv7-linux-androideabi]
@ -10,3 +10,4 @@ linker = "armv7a-linux-androideabi21-clang"
[target.aarch64-linux-android] [target.aarch64-linux-android]
linker = "aarch64-linux-android21-clang" linker = "aarch64-linux-android21-clang"
rustflags = ["-C", "link-arg=-Wl,-z,stack-size=8388608"]

View File

@ -65,10 +65,6 @@ LICENSE
coverage coverage
lcov.info lcov.info
# Firmware and hardware crates (not needed for Docker runtime)
firmware/
crates/robot-kit/
# Application and script directories (not needed for Docker runtime) # Application and script directories (not needed for Docker runtime)
apps/ apps/
python/ python/

View File

@ -1,3 +1,44 @@
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
# All files
[*] [*]
indent_style = space indent_style = space
indent_size = 2 indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
# Rust files - match rustfmt.toml
[*.rs]
indent_size = 4
max_line_length = 100
# Markdown files
[*.md]
trim_trailing_whitespace = false
max_line_length = 80
# TOML files
[*.toml]
indent_size = 2
# YAML files
[*.{yml,yaml}]
indent_size = 2
# Python files
[*.py]
indent_size = 4
max_line_length = 100
# Shell scripts
[*.{sh,bash}]
indent_size = 2
# JSON files
[*.json]
indent_size = 2

View File

@ -118,3 +118,7 @@ PROVIDER=openrouter
# Optional: Brave Search (requires API key from https://brave.com/search/api) # Optional: Brave Search (requires API key from https://brave.com/search/api)
# WEB_SEARCH_PROVIDER=brave # WEB_SEARCH_PROVIDER=brave
# BRAVE_API_KEY=your-brave-search-api-key # BRAVE_API_KEY=your-brave-search-api-key
#
# Optional: SearXNG (self-hosted, requires instance URL)
# WEB_SEARCH_PROVIDER=searxng
# SEARXNG_INSTANCE_URL=https://searx.example.com

60
.gitattributes vendored
View File

@ -1 +1,61 @@
# Git attributes for ZeroClaw
# https://git-scm.com/docs/gitattributes
# Auto detect text files and perform LF normalization
* text=auto * text=auto
# Source code
*.rs text eol=lf linguist-language=Rust
*.toml text eol=lf linguist-language=TOML
*.py text eol=lf linguist-language=Python
*.js text eol=lf linguist-language=JavaScript
*.ts text eol=lf linguist-language=TypeScript
*.html text eol=lf linguist-language=HTML
*.css text eol=lf linguist-language=CSS
*.scss text eol=lf linguist-language=SCSS
*.json text eol=lf linguist-language=JSON
*.yaml text eol=lf linguist-language=YAML
*.yml text eol=lf linguist-language=YAML
*.md text eol=lf linguist-language=Markdown
*.sh text eol=lf linguist-language=Shell
*.bash text eol=lf linguist-language=Shell
*.ps1 text eol=crlf linguist-language=PowerShell
# Documentation
*.txt text eol=lf
LICENSE* text eol=lf
# Configuration files
.editorconfig text eol=lf
.gitattributes text eol=lf
.gitignore text eol=lf
.dockerignore text eol=lf
# Rust-specific
Cargo.lock text eol=lf linguist-generated
Cargo.toml text eol=lf
# Declare files that will always have CRLF line endings on checkout
*.sln text eol=crlf
# Denote all files that are truly binary and should not be modified
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.ico binary
*.svg text
*.wasm binary
*.woff binary
*.woff2 binary
*.ttf binary
*.eot binary
*.mp3 binary
*.mp4 binary
*.webm binary
*.zip binary
*.tar binary
*.gz binary
*.bz2 binary
*.7z binary
*.db binary

301
.github/labeler.yml vendored
View File

@ -36,6 +36,145 @@
- any-glob-to-any-file: - any-glob-to-any-file:
- "src/channels/**" - "src/channels/**"
"channel:bluesky":
- changed-files:
- any-glob-to-any-file:
- "src/channels/bluesky.rs"
"channel:clawdtalk":
- changed-files:
- any-glob-to-any-file:
- "src/channels/clawdtalk.rs"
"channel:cli":
- changed-files:
- any-glob-to-any-file:
- "src/channels/cli.rs"
"channel:dingtalk":
- changed-files:
- any-glob-to-any-file:
- "src/channels/dingtalk.rs"
"channel:discord":
- changed-files:
- any-glob-to-any-file:
- "src/channels/discord.rs"
- "src/channels/discord_history.rs"
"channel:email":
- changed-files:
- any-glob-to-any-file:
- "src/channels/email_channel.rs"
- "src/channels/gmail_push.rs"
"channel:imessage":
- changed-files:
- any-glob-to-any-file:
- "src/channels/imessage.rs"
"channel:irc":
- changed-files:
- any-glob-to-any-file:
- "src/channels/irc.rs"
"channel:lark":
- changed-files:
- any-glob-to-any-file:
- "src/channels/lark.rs"
"channel:linq":
- changed-files:
- any-glob-to-any-file:
- "src/channels/linq.rs"
"channel:matrix":
- changed-files:
- any-glob-to-any-file:
- "src/channels/matrix.rs"
"channel:mattermost":
- changed-files:
- any-glob-to-any-file:
- "src/channels/mattermost.rs"
"channel:mochat":
- changed-files:
- any-glob-to-any-file:
- "src/channels/mochat.rs"
"channel:mqtt":
- changed-files:
- any-glob-to-any-file:
- "src/channels/mqtt.rs"
"channel:nextcloud-talk":
- changed-files:
- any-glob-to-any-file:
- "src/channels/nextcloud_talk.rs"
"channel:nostr":
- changed-files:
- any-glob-to-any-file:
- "src/channels/nostr.rs"
"channel:notion":
- changed-files:
- any-glob-to-any-file:
- "src/channels/notion.rs"
"channel:qq":
- changed-files:
- any-glob-to-any-file:
- "src/channels/qq.rs"
"channel:reddit":
- changed-files:
- any-glob-to-any-file:
- "src/channels/reddit.rs"
"channel:signal":
- changed-files:
- any-glob-to-any-file:
- "src/channels/signal.rs"
"channel:slack":
- changed-files:
- any-glob-to-any-file:
- "src/channels/slack.rs"
"channel:telegram":
- changed-files:
- any-glob-to-any-file:
- "src/channels/telegram.rs"
"channel:twitter":
- changed-files:
- any-glob-to-any-file:
- "src/channels/twitter.rs"
"channel:wati":
- changed-files:
- any-glob-to-any-file:
- "src/channels/wati.rs"
"channel:webhook":
- changed-files:
- any-glob-to-any-file:
- "src/channels/webhook.rs"
"channel:wecom":
- changed-files:
- any-glob-to-any-file:
- "src/channels/wecom.rs"
"channel:whatsapp":
- changed-files:
- any-glob-to-any-file:
- "src/channels/whatsapp.rs"
- "src/channels/whatsapp_storage.rs"
- "src/channels/whatsapp_web.rs"
"gateway": "gateway":
- changed-files: - changed-files:
- any-glob-to-any-file: - any-glob-to-any-file:
@ -101,6 +240,73 @@
- any-glob-to-any-file: - any-glob-to-any-file:
- "src/providers/**" - "src/providers/**"
"provider:anthropic":
- changed-files:
- any-glob-to-any-file:
- "src/providers/anthropic.rs"
"provider:azure-openai":
- changed-files:
- any-glob-to-any-file:
- "src/providers/azure_openai.rs"
"provider:bedrock":
- changed-files:
- any-glob-to-any-file:
- "src/providers/bedrock.rs"
"provider:claude-code":
- changed-files:
- any-glob-to-any-file:
- "src/providers/claude_code.rs"
"provider:compatible":
- changed-files:
- any-glob-to-any-file:
- "src/providers/compatible.rs"
"provider:copilot":
- changed-files:
- any-glob-to-any-file:
- "src/providers/copilot.rs"
"provider:gemini":
- changed-files:
- any-glob-to-any-file:
- "src/providers/gemini.rs"
- "src/providers/gemini_cli.rs"
"provider:glm":
- changed-files:
- any-glob-to-any-file:
- "src/providers/glm.rs"
"provider:kilocli":
- changed-files:
- any-glob-to-any-file:
- "src/providers/kilocli.rs"
"provider:ollama":
- changed-files:
- any-glob-to-any-file:
- "src/providers/ollama.rs"
"provider:openai":
- changed-files:
- any-glob-to-any-file:
- "src/providers/openai.rs"
- "src/providers/openai_codex.rs"
"provider:openrouter":
- changed-files:
- any-glob-to-any-file:
- "src/providers/openrouter.rs"
"provider:telnyx":
- changed-files:
- any-glob-to-any-file:
- "src/providers/telnyx.rs"
"service": "service":
- changed-files: - changed-files:
- any-glob-to-any-file: - any-glob-to-any-file:
@ -121,6 +327,101 @@
- any-glob-to-any-file: - any-glob-to-any-file:
- "src/tools/**" - "src/tools/**"
"tool:browser":
- changed-files:
- any-glob-to-any-file:
- "src/tools/browser.rs"
- "src/tools/browser_delegate.rs"
- "src/tools/browser_open.rs"
- "src/tools/text_browser.rs"
- "src/tools/screenshot.rs"
"tool:composio":
- changed-files:
- any-glob-to-any-file:
- "src/tools/composio.rs"
"tool:cron":
- changed-files:
- any-glob-to-any-file:
- "src/tools/cron_add.rs"
- "src/tools/cron_list.rs"
- "src/tools/cron_remove.rs"
- "src/tools/cron_run.rs"
- "src/tools/cron_runs.rs"
- "src/tools/cron_update.rs"
"tool:file":
- changed-files:
- any-glob-to-any-file:
- "src/tools/file_edit.rs"
- "src/tools/file_read.rs"
- "src/tools/file_write.rs"
- "src/tools/glob_search.rs"
- "src/tools/content_search.rs"
"tool:google-workspace":
- changed-files:
- any-glob-to-any-file:
- "src/tools/google_workspace.rs"
"tool:mcp":
- changed-files:
- any-glob-to-any-file:
- "src/tools/mcp_client.rs"
- "src/tools/mcp_deferred.rs"
- "src/tools/mcp_protocol.rs"
- "src/tools/mcp_tool.rs"
- "src/tools/mcp_transport.rs"
"tool:memory":
- changed-files:
- any-glob-to-any-file:
- "src/tools/memory_forget.rs"
- "src/tools/memory_recall.rs"
- "src/tools/memory_store.rs"
"tool:microsoft365":
- changed-files:
- any-glob-to-any-file:
- "src/tools/microsoft365/**"
"tool:shell":
- changed-files:
- any-glob-to-any-file:
- "src/tools/shell.rs"
- "src/tools/node_tool.rs"
- "src/tools/cli_discovery.rs"
"tool:sop":
- changed-files:
- any-glob-to-any-file:
- "src/tools/sop_advance.rs"
- "src/tools/sop_approve.rs"
- "src/tools/sop_execute.rs"
- "src/tools/sop_list.rs"
- "src/tools/sop_status.rs"
"tool:web":
- changed-files:
- any-glob-to-any-file:
- "src/tools/web_fetch.rs"
- "src/tools/web_search_tool.rs"
- "src/tools/web_search_provider_routing.rs"
- "src/tools/http_request.rs"
"tool:security":
- changed-files:
- any-glob-to-any-file:
- "src/tools/security_ops.rs"
- "src/tools/verifiable_intent.rs"
"tool:cloud":
- changed-files:
- any-glob-to-any-file:
- "src/tools/cloud_ops.rs"
- "src/tools/cloud_patterns.rs"
"tunnel": "tunnel":
- changed-files: - changed-files:
- any-glob-to-any-file: - any-glob-to-any-file:

View File

@ -7,7 +7,7 @@ on:
branches: [master] branches: [master]
concurrency: concurrency:
group: ci-${{ github.event.pull_request.number || github.sha }} group: ci-${{ github.event.pull_request.number || 'push-master' }}
cancel-in-progress: true cancel-in-progress: true
permissions: permissions:
@ -133,6 +133,29 @@ jobs:
CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER: clang CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER: clang
CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS: "-C link-arg=-fuse-ld=mold" CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS: "-C link-arg=-fuse-ld=mold"
check-all-features:
name: Check (all features)
runs-on: ubuntu-latest
timeout-minutes: 20
needs: [lint]
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
fetch-depth: 0
- uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
with:
toolchain: 1.92.0
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2
- name: Install system dependencies
run: sudo apt-get update -qq && sudo apt-get install -y libudev-dev
- name: Ensure web/dist placeholder exists
run: mkdir -p web/dist && touch web/dist/.gitkeep
- name: Check all features
run: cargo check --features ci-all --locked
docs-quality: docs-quality:
name: Docs Quality name: Docs Quality
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -157,7 +180,7 @@ jobs:
gate: gate:
name: CI Required Gate name: CI Required Gate
if: always() if: always()
needs: [lint, lint-strict-delta, test, build, docs-quality] needs: [lint, lint-strict-delta, test, build, docs-quality, check-all-features]
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check upstream job results - name: Check upstream job results

View File

@ -44,6 +44,11 @@ jobs:
cross_compiler: gcc-aarch64-linux-gnu cross_compiler: gcc-aarch64-linux-gnu
linker_env: CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER linker_env: CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER
linker: aarch64-linux-gnu-gcc linker: aarch64-linux-gnu-gcc
- os: ubuntu-latest
target: armv7-unknown-linux-gnueabihf
cross_compiler: gcc-arm-linux-gnueabihf
linker_env: CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER
linker: arm-linux-gnueabihf-gcc
- os: macos-15-intel - os: macos-15-intel
target: x86_64-apple-darwin target: x86_64-apple-darwin
- os: windows-latest - os: windows-latest
@ -74,4 +79,4 @@ jobs:
if [ -n "${{ matrix.linker_env || '' }}" ] && [ -n "${{ matrix.linker || '' }}" ]; then if [ -n "${{ matrix.linker_env || '' }}" ] && [ -n "${{ matrix.linker || '' }}" ]; then
export "${{ matrix.linker_env }}=${{ matrix.linker }}" export "${{ matrix.linker_env }}=${{ matrix.linker }}"
fi fi
cargo build --release --locked --features channel-matrix --target ${{ matrix.target }} cargo build --release --locked --features channel-matrix,channel-lark,memory-postgres --target ${{ matrix.target }}

19
.github/workflows/pr-path-labeler.yml vendored Normal file
View File

@ -0,0 +1,19 @@
name: PR Path Labeler
on:
pull_request_target:
types: [opened, synchronize, reopened]
permissions:
contents: read
pull-requests: write
jobs:
label:
name: Apply path labels
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9 # v5
with:
sync-labels: true

View File

@ -134,15 +134,27 @@ jobs:
exit 1 exit 1
fi fi
# Set up SSH key — normalize line endings and ensure trailing newline
mkdir -p ~/.ssh mkdir -p ~/.ssh
echo "$AUR_SSH_KEY" > ~/.ssh/aur chmod 700 ~/.ssh
printf '%s\n' "$AUR_SSH_KEY" | tr -d '\r' > ~/.ssh/aur
chmod 600 ~/.ssh/aur chmod 600 ~/.ssh/aur
cat >> ~/.ssh/config <<SSH_CONFIG
cat > ~/.ssh/config <<'SSH_CONFIG'
Host aur.archlinux.org Host aur.archlinux.org
IdentityFile ~/.ssh/aur IdentityFile ~/.ssh/aur
User aur User aur
StrictHostKeyChecking accept-new StrictHostKeyChecking accept-new
SSH_CONFIG SSH_CONFIG
chmod 600 ~/.ssh/config
# Verify key is valid and print fingerprint for debugging
echo "::group::SSH key diagnostics"
ssh-keygen -l -f ~/.ssh/aur || { echo "::error::AUR_SSH_KEY is not a valid SSH private key"; exit 1; }
echo "::endgroup::"
# Test SSH connectivity before attempting clone
ssh -T -o BatchMode=yes -o ConnectTimeout=10 aur@aur.archlinux.org 2>&1 || true
tmp_dir="$(mktemp -d)" tmp_dir="$(mktemp -d)"
git clone ssh://aur@aur.archlinux.org/zeroclaw.git "$tmp_dir/aur" git clone ssh://aur@aur.archlinux.org/zeroclaw.git "$tmp_dir/aur"

View File

@ -1,6 +1,22 @@
name: Pub Homebrew Core name: Pub Homebrew Core
on: on:
workflow_call:
inputs:
release_tag:
description: "Existing release tag to publish (vX.Y.Z)"
required: true
type: string
dry_run:
description: "Patch formula only (no push/PR)"
required: false
default: false
type: boolean
secrets:
HOMEBREW_UPSTREAM_PR_TOKEN:
required: false
HOMEBREW_CORE_BOT_TOKEN:
required: false
workflow_dispatch: workflow_dispatch:
inputs: inputs:
release_tag: release_tag:
@ -146,6 +162,12 @@ jobs:
perl -0pi -e "s|^ sha256 \".*\"| sha256 \"${tarball_sha}\"|m" "$formula_file" perl -0pi -e "s|^ sha256 \".*\"| sha256 \"${tarball_sha}\"|m" "$formula_file"
perl -0pi -e "s|^ license \".*\"| license \"Apache-2.0 OR MIT\"|m" "$formula_file" perl -0pi -e "s|^ license \".*\"| license \"Apache-2.0 OR MIT\"|m" "$formula_file"
# Ensure Node.js build dependency is declared so that build.rs can
# run `npm ci && npm run build` to produce the web frontend assets.
if ! grep -q 'depends_on "node" => :build' "$formula_file"; then
perl -0pi -e 's|( depends_on "rust" => :build\n)|\1 depends_on "node" => :build\n|m' "$formula_file"
fi
git -C "$repo_dir" diff -- "$FORMULA_PATH" > "$tmp_repo/formula.diff" git -C "$repo_dir" diff -- "$FORMULA_PATH" > "$tmp_repo/formula.diff"
if [[ ! -s "$tmp_repo/formula.diff" ]]; then if [[ ! -s "$tmp_repo/formula.diff" ]]; then
echo "::error::No formula changes generated. Nothing to publish." echo "::error::No formula changes generated. Nothing to publish."

View File

@ -19,6 +19,7 @@ env:
jobs: jobs:
detect-version-change: detect-version-change:
name: Detect Version Bump name: Detect Version Bump
if: github.repository == 'zeroclaw-labs/zeroclaw'
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs: outputs:
changed: ${{ steps.check.outputs.changed }} changed: ${{ steps.check.outputs.changed }}
@ -40,6 +41,14 @@ jobs:
echo "Current version: ${current}" echo "Current version: ${current}"
echo "Previous version: ${previous}" echo "Previous version: ${previous}"
# Skip if stable release workflow will handle this version
# (indicated by an existing or imminent stable tag)
if git ls-remote --exit-code --tags origin "refs/tags/v${current}" >/dev/null 2>&1; then
echo "Stable tag v${current} exists — stable release workflow handles crates.io"
echo "changed=false" >> "$GITHUB_OUTPUT"
exit 0
fi
if [[ "$current" != "$previous" && -n "$current" ]]; then if [[ "$current" != "$previous" && -n "$current" ]]; then
echo "changed=true" >> "$GITHUB_OUTPUT" echo "changed=true" >> "$GITHUB_OUTPUT"
echo "version=${current}" >> "$GITHUB_OUTPUT" echo "version=${current}" >> "$GITHUB_OUTPUT"
@ -102,6 +111,22 @@ jobs:
- name: Clean web build artifacts - name: Clean web build artifacts
run: rm -rf web/node_modules web/src web/package.json web/package-lock.json web/tsconfig*.json web/vite.config.ts web/index.html run: rm -rf web/node_modules web/src web/package.json web/package-lock.json web/tsconfig*.json web/vite.config.ts web/index.html
- name: Publish aardvark-sys to crates.io
shell: bash
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
run: |
OUTPUT=$(cargo publish --locked --allow-dirty --no-verify -p aardvark-sys 2>&1) && exit 0
echo "$OUTPUT"
if echo "$OUTPUT" | grep -q 'already exists'; then
echo "::notice::aardvark-sys already on crates.io — skipping"
exit 0
fi
exit 1
- name: Wait for aardvark-sys to index
run: sleep 15
- name: Publish to crates.io - name: Publish to crates.io
shell: bash shell: bash
env: env:

View File

@ -67,6 +67,24 @@ jobs:
- name: Clean web build artifacts - name: Clean web build artifacts
run: rm -rf web/node_modules web/src web/package.json web/package-lock.json web/tsconfig*.json web/vite.config.ts web/index.html run: rm -rf web/node_modules web/src web/package.json web/package-lock.json web/tsconfig*.json web/vite.config.ts web/index.html
- name: Publish aardvark-sys to crates.io
if: "!inputs.dry_run"
shell: bash
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
run: |
OUTPUT=$(cargo publish --locked --allow-dirty --no-verify -p aardvark-sys 2>&1) && exit 0
echo "$OUTPUT"
if echo "$OUTPUT" | grep -q 'already exists'; then
echo "::notice::aardvark-sys already on crates.io — skipping"
exit 0
fi
exit 1
- name: Wait for aardvark-sys to index
if: "!inputs.dry_run"
run: sleep 15
- name: Publish (dry run) - name: Publish (dry run)
if: inputs.dry_run if: inputs.dry_run
run: cargo publish --dry-run --locked --allow-dirty --no-verify run: cargo publish --dry-run --locked --allow-dirty --no-verify

View File

@ -16,29 +16,53 @@ env:
CARGO_TERM_COLOR: always CARGO_TERM_COLOR: always
REGISTRY: ghcr.io REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }} IMAGE_NAME: ${{ github.repository }}
RELEASE_CARGO_FEATURES: channel-matrix,channel-lark,memory-postgres
jobs: jobs:
version: version:
name: Resolve Version name: Resolve Version
if: github.repository == 'zeroclaw-labs/zeroclaw'
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs: outputs:
version: ${{ steps.ver.outputs.version }} version: ${{ steps.ver.outputs.version }}
tag: ${{ steps.ver.outputs.tag }} tag: ${{ steps.ver.outputs.tag }}
skip: ${{ steps.ver.outputs.skip }}
steps: steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
fetch-depth: 2
- name: Compute beta version - name: Compute beta version
id: ver id: ver
shell: bash shell: bash
run: | run: |
set -euo pipefail set -euo pipefail
base_version=$(sed -n 's/^version = "\([^"]*\)"/\1/p' Cargo.toml | head -1) base_version=$(sed -n 's/^version = "\([^"]*\)"/\1/p' Cargo.toml | head -1)
# Skip beta if this is a version bump commit (stable release handles it)
commit_msg=$(git log -1 --pretty=format:"%s")
if [[ "$commit_msg" =~ ^chore:\ bump\ version ]]; then
echo "Version bump commit detected — skipping beta release"
echo "skip=true" >> "$GITHUB_OUTPUT"
exit 0
fi
# Skip beta if a stable tag already exists for this version
if git ls-remote --exit-code --tags origin "refs/tags/v${base_version}" >/dev/null 2>&1; then
echo "Stable tag v${base_version} exists — skipping beta release"
echo "skip=true" >> "$GITHUB_OUTPUT"
exit 0
fi
beta_tag="v${base_version}-beta.${GITHUB_RUN_NUMBER}" beta_tag="v${base_version}-beta.${GITHUB_RUN_NUMBER}"
echo "version=${base_version}" >> "$GITHUB_OUTPUT" echo "version=${base_version}" >> "$GITHUB_OUTPUT"
echo "tag=${beta_tag}" >> "$GITHUB_OUTPUT" echo "tag=${beta_tag}" >> "$GITHUB_OUTPUT"
echo "skip=false" >> "$GITHUB_OUTPUT"
echo "Beta release: ${beta_tag}" echo "Beta release: ${beta_tag}"
release-notes: release-notes:
name: Generate Release Notes name: Generate Release Notes
needs: [version]
if: github.repository == 'zeroclaw-labs/zeroclaw' && needs.version.outputs.skip != 'true'
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs: outputs:
notes: ${{ steps.notes.outputs.body }} notes: ${{ steps.notes.outputs.body }}
@ -129,6 +153,8 @@ jobs:
web: web:
name: Build Web Dashboard name: Build Web Dashboard
needs: [version]
if: github.repository == 'zeroclaw-labs/zeroclaw' && needs.version.outputs.skip != 'true'
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 10 timeout-minutes: 10
steps: steps:
@ -168,6 +194,13 @@ jobs:
cross_compiler: gcc-aarch64-linux-gnu cross_compiler: gcc-aarch64-linux-gnu
linker_env: CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER linker_env: CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER
linker: aarch64-linux-gnu-gcc linker: aarch64-linux-gnu-gcc
- os: ubuntu-22.04
target: armv7-unknown-linux-gnueabihf
artifact: zeroclaw
ext: tar.gz
cross_compiler: gcc-arm-linux-gnueabihf
linker_env: CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER
linker: arm-linux-gnueabihf-gcc
- os: macos-14 - os: macos-14
target: aarch64-apple-darwin target: aarch64-apple-darwin
artifact: zeroclaw artifact: zeroclaw
@ -213,7 +246,7 @@ jobs:
if [ -n "${{ matrix.linker_env || '' }}" ] && [ -n "${{ matrix.linker || '' }}" ]; then if [ -n "${{ matrix.linker_env || '' }}" ] && [ -n "${{ matrix.linker || '' }}" ]; then
export "${{ matrix.linker_env }}=${{ matrix.linker }}" export "${{ matrix.linker_env }}=${{ matrix.linker }}"
fi fi
cargo build --release --locked --features channel-matrix --target ${{ matrix.target }} cargo build --release --locked --features "${{ env.RELEASE_CARGO_FEATURES }}" --target ${{ matrix.target }}
- name: Package (Unix) - name: Package (Unix)
if: runner.os != 'Windows' if: runner.os != 'Windows'
@ -233,9 +266,65 @@ jobs:
path: zeroclaw-${{ matrix.target }}.${{ matrix.ext }} path: zeroclaw-${{ matrix.target }}.${{ matrix.ext }}
retention-days: 7 retention-days: 7
build-desktop:
name: Build Desktop App (macOS Universal)
needs: [version]
if: needs.version.outputs.skip != 'true'
runs-on: macos-14
timeout-minutes: 40
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
with:
toolchain: 1.92.0
targets: aarch64-apple-darwin,x86_64-apple-darwin
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2
with:
prefix-key: macos-tauri
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Install Tauri CLI
run: cargo install tauri-cli --locked
- name: Sync Tauri version with Cargo.toml
shell: bash
run: |
VERSION=$(sed -n 's/^version = "\([^"]*\)"/\1/p' Cargo.toml | head -1)
cd apps/tauri
if command -v jq >/dev/null 2>&1; then
jq --arg v "$VERSION" '.version = $v' tauri.conf.json > tmp.json && mv tmp.json tauri.conf.json
else
sed -i '' "s/\"version\": \"[^\"]*\"/\"version\": \"$VERSION\"/" tauri.conf.json
fi
echo "Tauri version set to: $VERSION"
- name: Build Tauri app (universal binary)
working-directory: apps/tauri
run: cargo tauri build --target universal-apple-darwin
- name: Prepare desktop release assets
run: |
mkdir -p desktop-assets
find target -name '*.dmg' -exec cp {} desktop-assets/ZeroClaw.dmg \; 2>/dev/null || true
find target -name '*.app.tar.gz' -exec cp {} desktop-assets/ZeroClaw-macos.app.tar.gz \; 2>/dev/null || true
find target -name '*.app.tar.gz.sig' -exec cp {} desktop-assets/ZeroClaw-macos.app.tar.gz.sig \; 2>/dev/null || true
echo "--- Desktop assets ---"
ls -lh desktop-assets/
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: desktop-macos
path: desktop-assets/*
retention-days: 7
publish: publish:
name: Publish Beta Release name: Publish Beta Release
needs: [version, release-notes, build] needs: [version, release-notes, build, build-desktop]
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
@ -245,16 +334,21 @@ jobs:
pattern: zeroclaw-* pattern: zeroclaw-*
path: artifacts path: artifacts
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
with:
name: desktop-macos
path: artifacts/desktop-macos
- name: Generate checksums - name: Generate checksums
run: | run: |
cd artifacts cd artifacts
find . -type f \( -name '*.tar.gz' -o -name '*.zip' \) -exec sha256sum {} + | sed 's| \./[^/]*/| |' > SHA256SUMS find . -type f \( -name '*.tar.gz' -o -name '*.zip' -o -name '*.dmg' \) -exec sha256sum {} + | sed 's| \./[^/]*/| |' > SHA256SUMS
cat SHA256SUMS cat SHA256SUMS
- name: Collect release assets - name: Collect release assets
run: | run: |
mkdir -p release-assets mkdir -p release-assets
find artifacts -type f \( -name '*.tar.gz' -o -name '*.zip' -o -name 'SHA256SUMS' \) -exec cp {} release-assets/ \; find artifacts -type f \( -name '*.tar.gz' -o -name '*.zip' -o -name '*.dmg' -o -name 'SHA256SUMS' \) -exec cp {} release-assets/ \;
cp install.sh release-assets/ cp install.sh release-assets/
echo "--- Assets ---" echo "--- Assets ---"
ls -lh release-assets/ ls -lh release-assets/
@ -345,8 +439,6 @@ jobs:
with: with:
context: docker-ctx context: docker-ctx
push: true push: true
build-args: |
ZEROCLAW_CARGO_FEATURES=channel-matrix
tags: | tags: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.version.outputs.tag }} ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.version.outputs.tag }}
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:beta ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:beta

View File

@ -1,6 +1,9 @@
name: Release Stable name: Release Stable
on: on:
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+" # stable tags only (no -beta suffix)
workflow_dispatch: workflow_dispatch:
inputs: inputs:
version: version:
@ -20,6 +23,7 @@ env:
CARGO_TERM_COLOR: always CARGO_TERM_COLOR: always
REGISTRY: ghcr.io REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }} IMAGE_NAME: ${{ github.repository }}
RELEASE_CARGO_FEATURES: channel-matrix,channel-lark,memory-postgres
jobs: jobs:
validate: validate:
@ -32,11 +36,22 @@ jobs:
- name: Validate semver and Cargo.toml match - name: Validate semver and Cargo.toml match
id: check id: check
shell: bash shell: bash
env:
INPUT_VERSION: ${{ inputs.version || '' }}
REF_NAME: ${{ github.ref_name }}
EVENT_NAME: ${{ github.event_name }}
run: | run: |
set -euo pipefail set -euo pipefail
input_version="${{ inputs.version }}"
cargo_version=$(sed -n 's/^version = "\([^"]*\)"/\1/p' Cargo.toml | head -1) cargo_version=$(sed -n 's/^version = "\([^"]*\)"/\1/p' Cargo.toml | head -1)
# Resolve version from tag push or manual input
if [[ "$EVENT_NAME" == "push" ]]; then
# Tag push: extract version from tag name (v0.5.9 -> 0.5.9)
input_version="${REF_NAME#v}"
else
input_version="$INPUT_VERSION"
fi
if [[ ! "$input_version" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then if [[ ! "$input_version" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "::error::Version must be semver (X.Y.Z). Got: ${input_version}" echo "::error::Version must be semver (X.Y.Z). Got: ${input_version}"
exit 1 exit 1
@ -48,9 +63,13 @@ jobs:
fi fi
tag="v${input_version}" tag="v${input_version}"
if git ls-remote --exit-code --tags origin "refs/tags/${tag}" >/dev/null 2>&1; then
echo "::error::Tag ${tag} already exists." # Only check tag existence for manual dispatch (tag push means it already exists)
exit 1 if [[ "$EVENT_NAME" != "push" ]]; then
if git ls-remote --exit-code --tags origin "refs/tags/${tag}" >/dev/null 2>&1; then
echo "::error::Tag ${tag} already exists."
exit 1
fi
fi fi
echo "tag=${tag}" >> "$GITHUB_OUTPUT" echo "tag=${tag}" >> "$GITHUB_OUTPUT"
@ -169,6 +188,22 @@ jobs:
cross_compiler: gcc-aarch64-linux-gnu cross_compiler: gcc-aarch64-linux-gnu
linker_env: CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER linker_env: CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER
linker: aarch64-linux-gnu-gcc linker: aarch64-linux-gnu-gcc
- os: ubuntu-22.04
target: armv7-unknown-linux-gnueabihf
artifact: zeroclaw
ext: tar.gz
cross_compiler: gcc-arm-linux-gnueabihf
linker_env: CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER
linker: arm-linux-gnueabihf-gcc
skip_prometheus: true
- os: ubuntu-22.04
target: arm-unknown-linux-gnueabihf
artifact: zeroclaw
ext: tar.gz
cross_compiler: gcc-arm-linux-gnueabihf
linker_env: CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_LINKER
linker: arm-linux-gnueabihf-gcc
skip_prometheus: true
- os: macos-14 - os: macos-14
target: aarch64-apple-darwin target: aarch64-apple-darwin
artifact: zeroclaw artifact: zeroclaw
@ -214,7 +249,11 @@ jobs:
if [ -n "${{ matrix.linker_env || '' }}" ] && [ -n "${{ matrix.linker || '' }}" ]; then if [ -n "${{ matrix.linker_env || '' }}" ] && [ -n "${{ matrix.linker || '' }}" ]; then
export "${{ matrix.linker_env }}=${{ matrix.linker }}" export "${{ matrix.linker_env }}=${{ matrix.linker }}"
fi fi
cargo build --release --locked --features channel-matrix --target ${{ matrix.target }} if [ "${{ matrix.skip_prometheus || 'false' }}" = "true" ]; then
cargo build --release --locked --no-default-features --features "${{ env.RELEASE_CARGO_FEATURES }},channel-nostr,skill-creation" --target ${{ matrix.target }}
else
cargo build --release --locked --features "${{ env.RELEASE_CARGO_FEATURES }}" --target ${{ matrix.target }}
fi
- name: Package (Unix) - name: Package (Unix)
if: runner.os != 'Windows' if: runner.os != 'Windows'
@ -234,9 +273,64 @@ jobs:
path: zeroclaw-${{ matrix.target }}.${{ matrix.ext }} path: zeroclaw-${{ matrix.target }}.${{ matrix.ext }}
retention-days: 14 retention-days: 14
build-desktop:
name: Build Desktop App (macOS Universal)
needs: [validate]
runs-on: macos-14
timeout-minutes: 40
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
with:
toolchain: 1.92.0
targets: aarch64-apple-darwin,x86_64-apple-darwin
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2
with:
prefix-key: macos-tauri
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Install Tauri CLI
run: cargo install tauri-cli --locked
- name: Sync Tauri version with Cargo.toml
shell: bash
run: |
VERSION=$(sed -n 's/^version = "\([^"]*\)"/\1/p' Cargo.toml | head -1)
cd apps/tauri
if command -v jq >/dev/null 2>&1; then
jq --arg v "$VERSION" '.version = $v' tauri.conf.json > tmp.json && mv tmp.json tauri.conf.json
else
sed -i '' "s/\"version\": \"[^\"]*\"/\"version\": \"$VERSION\"/" tauri.conf.json
fi
echo "Tauri version set to: $VERSION"
- name: Build Tauri app (universal binary)
working-directory: apps/tauri
run: cargo tauri build --target universal-apple-darwin
- name: Prepare desktop release assets
run: |
mkdir -p desktop-assets
find target -name '*.dmg' -exec cp {} desktop-assets/ZeroClaw.dmg \; 2>/dev/null || true
find target -name '*.app.tar.gz' -exec cp {} desktop-assets/ZeroClaw-macos.app.tar.gz \; 2>/dev/null || true
find target -name '*.app.tar.gz.sig' -exec cp {} desktop-assets/ZeroClaw-macos.app.tar.gz.sig \; 2>/dev/null || true
echo "--- Desktop assets ---"
ls -lh desktop-assets/
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: desktop-macos
path: desktop-assets/*
retention-days: 14
publish: publish:
name: Publish Stable Release name: Publish Stable Release
needs: [validate, release-notes, build] needs: [validate, release-notes, build, build-desktop]
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
@ -246,16 +340,21 @@ jobs:
pattern: zeroclaw-* pattern: zeroclaw-*
path: artifacts path: artifacts
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
with:
name: desktop-macos
path: artifacts/desktop-macos
- name: Generate checksums - name: Generate checksums
run: | run: |
cd artifacts cd artifacts
find . -type f \( -name '*.tar.gz' -o -name '*.zip' \) -exec sha256sum {} + | sed 's| \./[^/]*/| |' > SHA256SUMS find . -type f \( -name '*.tar.gz' -o -name '*.zip' -o -name '*.dmg' \) -exec sha256sum {} + | sed 's| \./[^/]*/| |' > SHA256SUMS
cat SHA256SUMS cat SHA256SUMS
- name: Collect release assets - name: Collect release assets
run: | run: |
mkdir -p release-assets mkdir -p release-assets
find artifacts -type f \( -name '*.tar.gz' -o -name '*.zip' -o -name 'SHA256SUMS' \) -exec cp {} release-assets/ \; find artifacts -type f \( -name '*.tar.gz' -o -name '*.zip' -o -name '*.dmg' -o -name 'SHA256SUMS' \) -exec cp {} release-assets/ \;
cp install.sh release-assets/ cp install.sh release-assets/
echo "--- Assets ---" echo "--- Assets ---"
ls -lh release-assets/ ls -lh release-assets/
@ -265,6 +364,14 @@ jobs:
NOTES: ${{ needs.release-notes.outputs.notes }} NOTES: ${{ needs.release-notes.outputs.notes }}
run: printf '%s\n' "$NOTES" > release-notes.md run: printf '%s\n' "$NOTES" > release-notes.md
- name: Create tag if manual dispatch
if: github.event_name == 'workflow_dispatch'
env:
TAG: ${{ needs.validate.outputs.tag }}
run: |
git tag -a "$TAG" -m "zeroclaw $TAG"
git push origin "$TAG"
- name: Create GitHub Release - name: Create GitHub Release
env: env:
GH_TOKEN: ${{ secrets.RELEASE_TOKEN }} GH_TOKEN: ${{ secrets.RELEASE_TOKEN }}
@ -302,6 +409,21 @@ jobs:
- name: Clean web build artifacts - name: Clean web build artifacts
run: rm -rf web/node_modules web/src web/package.json web/package-lock.json web/tsconfig*.json web/vite.config.ts web/index.html run: rm -rf web/node_modules web/src web/package.json web/package-lock.json web/tsconfig*.json web/vite.config.ts web/index.html
- name: Publish aardvark-sys to crates.io
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
run: |
OUTPUT=$(cargo publish --locked --allow-dirty --no-verify -p aardvark-sys 2>&1) && exit 0
echo "$OUTPUT"
if echo "$OUTPUT" | grep -q 'already exists'; then
echo "::notice::aardvark-sys already on crates.io — skipping"
exit 0
fi
exit 1
- name: Wait for aardvark-sys to index
run: sleep 15
- name: Publish to crates.io - name: Publish to crates.io
env: env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
@ -388,8 +510,6 @@ jobs:
with: with:
context: docker-ctx context: docker-ctx
push: true push: true
build-args: |
ZEROCLAW_CARGO_FEATURES=channel-matrix
tags: | tags: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.validate.outputs.tag }} ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.validate.outputs.tag }}
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
@ -427,6 +547,16 @@ jobs:
dry_run: false dry_run: false
secrets: inherit secrets: inherit
homebrew:
name: Update Homebrew Core
needs: [validate, publish]
if: ${{ !cancelled() && needs.publish.result == 'success' }}
uses: ./.github/workflows/pub-homebrew-core.yml
with:
release_tag: ${{ needs.validate.outputs.tag }}
dry_run: false
secrets: inherit
# ── Post-publish: tweet after release + website are live ────────────── # ── Post-publish: tweet after release + website are live ──────────────
# Docker push can be slow; don't let it block the tweet. # Docker push can be slow; don't let it block the tweet.
tweet: tweet:

View File

@ -1 +0,0 @@
CLAUDE.md

92
AGENTS.md Normal file
View File

@ -0,0 +1,92 @@
# AGENTS.md — ZeroClaw
Cross-tool agent instructions for any AI coding assistant working on this repository.
## Commands
```bash
cargo fmt --all -- --check
cargo clippy --all-targets -- -D warnings
cargo test
```
Full pre-PR validation (recommended):
```bash
./dev/ci.sh all
```
Docs-only changes: run markdown lint and link-integrity checks. If touching bootstrap scripts: `bash -n install.sh`.
## Project Snapshot
ZeroClaw is a Rust-first autonomous agent runtime optimized for performance, efficiency, stability, extensibility, sustainability, and security.
Core architecture is trait-driven and modular. Extend by implementing traits and registering in factory modules.
Key extension points:
- `src/providers/traits.rs` (`Provider`)
- `src/channels/traits.rs` (`Channel`)
- `src/tools/traits.rs` (`Tool`)
- `src/memory/traits.rs` (`Memory`)
- `src/observability/traits.rs` (`Observer`)
- `src/runtime/traits.rs` (`RuntimeAdapter`)
- `src/peripherals/traits.rs` (`Peripheral`) — hardware boards (STM32, RPi GPIO)
## Repository Map
- `src/main.rs` — CLI entrypoint and command routing
- `src/lib.rs` — module exports and shared command enums
- `src/config/` — schema + config loading/merging
- `src/agent/` — orchestration loop
- `src/gateway/` — webhook/gateway server
- `src/security/` — policy, pairing, secret store
- `src/memory/` — markdown/sqlite memory backends + embeddings/vector merge
- `src/providers/` — model providers and resilient wrapper
- `src/channels/` — Telegram/Discord/Slack/etc channels
- `src/tools/` — tool execution surface (shell, file, memory, browser)
- `src/peripherals/` — hardware peripherals (STM32, RPi GPIO)
- `src/runtime/` — runtime adapters (currently native)
- `docs/` — topic-based documentation (setup-guides, reference, ops, security, hardware, contributing, maintainers)
- `.github/` — CI, templates, automation workflows
## Risk Tiers
- **Low risk**: docs/chore/tests-only changes
- **Medium risk**: most `src/**` behavior changes without boundary/security impact
- **High risk**: `src/security/**`, `src/runtime/**`, `src/gateway/**`, `src/tools/**`, `.github/workflows/**`, access-control boundaries
When uncertain, classify as higher risk.
## Workflow
1. **Read before write** — inspect existing module, factory wiring, and adjacent tests before editing.
2. **One concern per PR** — avoid mixed feature+refactor+infra patches.
3. **Implement minimal patch** — no speculative abstractions, no config keys without a concrete use case.
4. **Validate by risk tier** — docs-only: lightweight checks. Code changes: full relevant checks.
5. **Document impact** — update PR notes for behavior, risk, side effects, and rollback.
6. **Queue hygiene** — stacked PR: declare `Depends on #...`. Replacing old PR: declare `Supersedes #...`.
Branch/commit/PR rules:
- Work from a non-`master` branch. Open a PR to `master`; do not push directly.
- Use conventional commit titles. Prefer small PRs (`size: XS/S/M`).
- Follow `.github/pull_request_template.md` fully.
- Never commit secrets, personal data, or real identity information (see `@docs/contributing/pr-discipline.md`).
## Anti-Patterns
- Do not add heavy dependencies for minor convenience.
- Do not silently weaken security policy or access constraints.
- Do not add speculative config/feature flags "just in case".
- Do not mix massive formatting-only changes with functional changes.
- Do not modify unrelated modules "while here".
- Do not bypass failing checks without explicit explanation.
- Do not hide behavior-changing side effects in refactor commits.
- Do not include personal identity or sensitive information in test data, examples, docs, or commits.
## Linked References
- `@docs/contributing/change-playbooks.md` — adding providers, channels, tools, peripherals; security/gateway changes; architecture boundaries
- `@docs/contributing/pr-discipline.md` — privacy rules, superseded-PR attribution/templates, handoff template
- `@docs/contributing/docs-contract.md` — docs system contract, i18n rules, locale parity

View File

@ -1,90 +1,16 @@
# CLAUDE.md — ZeroClaw # CLAUDE.md — ZeroClaw (Claude Code)
## Commands > **Shared instructions live in [`AGENTS.md`](./AGENTS.md).**
> This file contains only Claude Code-specific directives.
```bash ## Claude Code Settings
cargo fmt --all -- --check
cargo clippy --all-targets -- -D warnings
cargo test
```
Full pre-PR validation (recommended): Claude Code should read and follow all instructions in `AGENTS.md` at the repository root for project conventions, commands, risk tiers, workflow rules, and anti-patterns.
```bash ## Hooks
./dev/ci.sh all
```
Docs-only changes: run markdown lint and link-integrity checks. If touching bootstrap scripts: `bash -n install.sh`. _No custom hooks defined yet._
## Project Snapshot ## Slash Commands
ZeroClaw is a Rust-first autonomous agent runtime optimized for performance, efficiency, stability, extensibility, sustainability, and security. _No custom slash commands defined yet._
Core architecture is trait-driven and modular. Extend by implementing traits and registering in factory modules.
Key extension points:
- `src/providers/traits.rs` (`Provider`)
- `src/channels/traits.rs` (`Channel`)
- `src/tools/traits.rs` (`Tool`)
- `src/memory/traits.rs` (`Memory`)
- `src/observability/traits.rs` (`Observer`)
- `src/runtime/traits.rs` (`RuntimeAdapter`)
- `src/peripherals/traits.rs` (`Peripheral`) — hardware boards (STM32, RPi GPIO)
## Repository Map
- `src/main.rs` — CLI entrypoint and command routing
- `src/lib.rs` — module exports and shared command enums
- `src/config/` — schema + config loading/merging
- `src/agent/` — orchestration loop
- `src/gateway/` — webhook/gateway server
- `src/security/` — policy, pairing, secret store
- `src/memory/` — markdown/sqlite memory backends + embeddings/vector merge
- `src/providers/` — model providers and resilient wrapper
- `src/channels/` — Telegram/Discord/Slack/etc channels
- `src/tools/` — tool execution surface (shell, file, memory, browser)
- `src/peripherals/` — hardware peripherals (STM32, RPi GPIO)
- `src/runtime/` — runtime adapters (currently native)
- `docs/` — topic-based documentation (setup-guides, reference, ops, security, hardware, contributing, maintainers)
- `.github/` — CI, templates, automation workflows
## Risk Tiers
- **Low risk**: docs/chore/tests-only changes
- **Medium risk**: most `src/**` behavior changes without boundary/security impact
- **High risk**: `src/security/**`, `src/runtime/**`, `src/gateway/**`, `src/tools/**`, `.github/workflows/**`, access-control boundaries
When uncertain, classify as higher risk.
## Workflow
1. **Read before write** — inspect existing module, factory wiring, and adjacent tests before editing.
2. **One concern per PR** — avoid mixed feature+refactor+infra patches.
3. **Implement minimal patch** — no speculative abstractions, no config keys without a concrete use case.
4. **Validate by risk tier** — docs-only: lightweight checks. Code changes: full relevant checks.
5. **Document impact** — update PR notes for behavior, risk, side effects, and rollback.
6. **Queue hygiene** — stacked PR: declare `Depends on #...`. Replacing old PR: declare `Supersedes #...`.
Branch/commit/PR rules:
- Work from a non-`master` branch. Open a PR to `master`; do not push directly.
- Use conventional commit titles. Prefer small PRs (`size: XS/S/M`).
- Follow `.github/pull_request_template.md` fully.
- Never commit secrets, personal data, or real identity information (see `@docs/contributing/pr-discipline.md`).
## Anti-Patterns
- Do not add heavy dependencies for minor convenience.
- Do not silently weaken security policy or access constraints.
- Do not add speculative config/feature flags "just in case".
- Do not mix massive formatting-only changes with functional changes.
- Do not modify unrelated modules "while here".
- Do not bypass failing checks without explicit explanation.
- Do not hide behavior-changing side effects in refactor commits.
- Do not include personal identity or sensitive information in test data, examples, docs, or commits.
## Linked References
- `@docs/contributing/change-playbooks.md` — adding providers, channels, tools, peripherals; security/gateway changes; architecture boundaries
- `@docs/contributing/pr-discipline.md` — privacy rules, superseded-PR attribution/templates, handoff template
- `@docs/contributing/docs-contract.md` — docs system contract, i18n rules, locale parity

4886
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,10 @@
[workspace] [workspace]
members = [".", "crates/robot-kit"] members = [".", "crates/robot-kit", "crates/aardvark-sys", "apps/tauri"]
resolver = "2" resolver = "2"
[package] [package]
name = "zeroclawlabs" name = "zeroclawlabs"
version = "0.5.0" version = "0.6.1"
edition = "2021" edition = "2021"
authors = ["theonlyhennygod"] authors = ["theonlyhennygod"]
license = "MIT OR Apache-2.0" license = "MIT OR Apache-2.0"
@ -14,15 +14,6 @@ readme = "README.md"
keywords = ["ai", "agent", "cli", "assistant", "chatbot"] keywords = ["ai", "agent", "cli", "assistant", "chatbot"]
categories = ["command-line-utilities", "api-bindings"] categories = ["command-line-utilities", "api-bindings"]
rust-version = "1.87" rust-version = "1.87"
[[bin]]
name = "zeroclaw"
path = "src/main.rs"
[lib]
name = "zeroclaw"
path = "src/lib.rs"
include = [ include = [
"/src/**/*", "/src/**/*",
"/build.rs", "/build.rs",
@ -31,8 +22,17 @@ include = [
"/LICENSE*", "/LICENSE*",
"/README.md", "/README.md",
"/web/dist/**/*", "/web/dist/**/*",
"/tool_descriptions/**/*",
] ]
[[bin]]
name = "zeroclaw"
path = "src/main.rs"
[lib]
name = "zeroclaw"
path = "src/lib.rs"
[dependencies] [dependencies]
# CLI - minimal and fast # CLI - minimal and fast
clap = { version = "4.5", features = ["derive"] } clap = { version = "4.5", features = ["derive"] }
@ -84,15 +84,21 @@ nanohtml2text = "0.2"
fantoccini = { version = "0.22.1", optional = true, default-features = false, features = ["rustls-tls"] } fantoccini = { version = "0.22.1", optional = true, default-features = false, features = ["rustls-tls"] }
# Progress bars (update pipeline) # Progress bars (update pipeline)
indicatif = "0.17" indicatif = "0.18"
# Temp files (update pipeline rollback) # Temp files (update pipeline rollback)
tempfile = "3.26" tempfile = "3.26"
# Zip extraction for ClawhHub / OpenClaw registry installers
zip = { version = "8.1", default-features = false, features = ["deflate"] }
# Error handling # Error handling
anyhow = "1.0" anyhow = "1.0"
thiserror = "2.0" thiserror = "2.0"
# Aardvark I2C/SPI/GPIO USB adapter (Total Phase) — stub when SDK absent
aardvark-sys = { path = "crates/aardvark-sys", version = "0.1.0" }
# UUID generation # UUID generation
uuid = { version = "1.22", default-features = false, features = ["v4", "std"] } uuid = { version = "1.22", default-features = false, features = ["v4", "std"] }
@ -143,7 +149,8 @@ glob = "0.3"
which = "8.0" which = "8.0"
# WebSocket client channels (Discord/Lark/DingTalk/Nostr) # WebSocket client channels (Discord/Lark/DingTalk/Nostr)
tokio-tungstenite = { version = "0.28", features = ["rustls-tls-webpki-roots"] } tokio-tungstenite = { version = "0.29", features = ["rustls-tls-webpki-roots"] }
tokio-socks = "0.5"
futures-util = { version = "0.3", default-features = false, features = ["sink"] } futures-util = { version = "0.3", default-features = false, features = ["sink"] }
nostr-sdk = { version = "0.44", default-features = false, features = ["nip04", "nip59"], optional = true } nostr-sdk = { version = "0.44", default-features = false, features = ["nip04", "nip59"], optional = true }
regex = "1.10" regex = "1.10"
@ -190,6 +197,12 @@ probe-rs = { version = "0.31", optional = true }
# PDF extraction for datasheet RAG (optional, enable with --features rag-pdf) # PDF extraction for datasheet RAG (optional, enable with --features rag-pdf)
pdf-extract = { version = "0.10", optional = true } pdf-extract = { version = "0.10", optional = true }
# WASM plugin runtime (extism)
extism = { version = "1.20", optional = true }
# Cross-platform audio capture for voice wake word detection (optional, enable with --features voice-wake)
cpal = { version = "0.15", optional = true }
# Terminal QR rendering for WhatsApp Web pairing flow. # Terminal QR rendering for WhatsApp Web pairing flow.
qrcode = { version = "0.14", optional = true } qrcode = { version = "0.14", optional = true }
@ -212,7 +225,7 @@ landlock = { version = "0.4", optional = true }
libc = "0.2" libc = "0.2"
[features] [features]
default = ["observability-prometheus", "channel-nostr"] default = ["observability-prometheus", "channel-nostr", "channel-lark", "skill-creation"]
channel-nostr = ["dep:nostr-sdk"] channel-nostr = ["dep:nostr-sdk"]
hardware = ["nusb", "tokio-serial"] hardware = ["nusb", "tokio-serial"]
channel-matrix = ["dep:matrix-sdk"] channel-matrix = ["dep:matrix-sdk"]
@ -237,8 +250,34 @@ metrics = ["observability-prometheus"]
probe = ["dep:probe-rs"] probe = ["dep:probe-rs"]
# rag-pdf = PDF ingestion for datasheet RAG # rag-pdf = PDF ingestion for datasheet RAG
rag-pdf = ["dep:pdf-extract"] rag-pdf = ["dep:pdf-extract"]
# skill-creation = Autonomous skill creation from successful multi-step tasks
skill-creation = []
# whatsapp-web = Native WhatsApp Web client with custom rusqlite storage backend # whatsapp-web = Native WhatsApp Web client with custom rusqlite storage backend
whatsapp-web = ["dep:wa-rs", "dep:wa-rs-core", "dep:wa-rs-binary", "dep:wa-rs-proto", "dep:wa-rs-ureq-http", "dep:wa-rs-tokio-transport", "dep:serde-big-array", "dep:prost", "dep:qrcode"] whatsapp-web = ["dep:wa-rs", "dep:wa-rs-core", "dep:wa-rs-binary", "dep:wa-rs-proto", "dep:wa-rs-ureq-http", "dep:wa-rs-tokio-transport", "dep:serde-big-array", "dep:prost", "dep:qrcode"]
# voice-wake = Voice wake word detection via microphone (cpal)
voice-wake = ["dep:cpal"]
# WASM plugin system (extism-based)
plugins-wasm = ["dep:extism"]
# Meta-feature for CI: all features except those requiring system C libraries
# not available on standard CI runners (e.g., voice-wake needs libasound2-dev).
ci-all = [
"channel-nostr",
"hardware",
"channel-matrix",
"channel-lark",
"memory-postgres",
"observability-prometheus",
"observability-otel",
"peripheral-rpi",
"browser-native",
"sandbox-landlock",
"sandbox-bubblewrap",
"probe",
"rag-pdf",
"skill-creation",
"whatsapp-web",
"plugins-wasm",
]
[profile.release] [profile.release]
opt-level = "z" # Optimize for size opt-level = "z" # Optimize for size

View File

@ -12,7 +12,7 @@ RUN npm run build
FROM rust:1.94-slim@sha256:da9dab7a6b8dd428e71718402e97207bb3e54167d37b5708616050b1e8f60ed6 AS builder FROM rust:1.94-slim@sha256:da9dab7a6b8dd428e71718402e97207bb3e54167d37b5708616050b1e8f60ed6 AS builder
WORKDIR /app WORKDIR /app
ARG ZEROCLAW_CARGO_FEATURES="" ARG ZEROCLAW_CARGO_FEATURES="memory-postgres,channel-lark"
# Install build dependencies # Install build dependencies
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
@ -23,13 +23,16 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
# 1. Copy manifests to cache dependencies # 1. Copy manifests to cache dependencies
COPY Cargo.toml Cargo.lock ./ COPY Cargo.toml Cargo.lock ./
COPY crates/robot-kit/Cargo.toml crates/robot-kit/Cargo.toml # Include every workspace member: Cargo.lock is generated for the full workspace.
# Previously we used sed to drop `crates/robot-kit`, which made the manifest disagree
# with the lockfile and caused `cargo --locked` to fail (Cargo refused to rewrite the lock).
COPY crates/robot-kit/ crates/robot-kit/
COPY crates/aardvark-sys/ crates/aardvark-sys/
# Create dummy targets declared in Cargo.toml so manifest parsing succeeds. # Create dummy targets declared in Cargo.toml so manifest parsing succeeds.
RUN mkdir -p src benches crates/robot-kit/src \ RUN mkdir -p src benches \
&& echo "fn main() {}" > src/main.rs \ && echo "fn main() {}" > src/main.rs \
&& echo "" > src/lib.rs \ && echo "" > src/lib.rs \
&& echo "fn main() {}" > benches/agent_benchmarks.rs \ && echo "fn main() {}" > benches/agent_benchmarks.rs
&& echo "pub fn placeholder() {}" > crates/robot-kit/src/lib.rs
RUN --mount=type=cache,id=zeroclaw-cargo-registry,target=/usr/local/cargo/registry,sharing=locked \ RUN --mount=type=cache,id=zeroclaw-cargo-registry,target=/usr/local/cargo/registry,sharing=locked \
--mount=type=cache,id=zeroclaw-cargo-git,target=/usr/local/cargo/git,sharing=locked \ --mount=type=cache,id=zeroclaw-cargo-git,target=/usr/local/cargo/git,sharing=locked \
--mount=type=cache,id=zeroclaw-target,target=/app/target,sharing=locked \ --mount=type=cache,id=zeroclaw-target,target=/app/target,sharing=locked \
@ -38,13 +41,11 @@ RUN --mount=type=cache,id=zeroclaw-cargo-registry,target=/usr/local/cargo/regist
else \ else \
cargo build --release --locked; \ cargo build --release --locked; \
fi fi
RUN rm -rf src benches crates/robot-kit/src RUN rm -rf src benches
# 2. Copy only build-relevant source paths (avoid cache-busting on docs/tests/scripts) # 2. Copy only build-relevant source paths (avoid cache-busting on docs/tests/scripts)
COPY src/ src/ COPY src/ src/
COPY benches/ benches/ COPY benches/ benches/
COPY crates/ crates/
COPY firmware/ firmware/
COPY --from=web-builder /web/dist web/dist COPY --from=web-builder /web/dist web/dist
COPY *.rs . COPY *.rs .
RUN touch src/main.rs RUN touch src/main.rs
@ -61,7 +62,7 @@ RUN --mount=type=cache,id=zeroclaw-cargo-registry,target=/usr/local/cargo/regist
fi && \ fi && \
cp target/release/zeroclaw /app/zeroclaw && \ cp target/release/zeroclaw /app/zeroclaw && \
strip /app/zeroclaw strip /app/zeroclaw
RUN size=$(stat -c%s /app/zeroclaw 2>/dev/null || stat -f%z /app/zeroclaw) && \ RUN size=$(stat -c%s /app/zeroclaw) && \
if [ "$size" -lt 1000000 ]; then echo "ERROR: binary too small (${size} bytes), likely dummy build artifact" && exit 1; fi if [ "$size" -lt 1000000 ]; then echo "ERROR: binary too small (${size} bytes), likely dummy build artifact" && exit 1; fi
# Prepare runtime directory structure and default config inline (no extra stage) # Prepare runtime directory structure and default config inline (no extra stage)
@ -78,6 +79,10 @@ RUN mkdir -p /zeroclaw-data/.zeroclaw /zeroclaw-data/workspace && \
'port = 42617' \ 'port = 42617' \
'host = "[::]"' \ 'host = "[::]"' \
'allow_public_bind = true' \ 'allow_public_bind = true' \
'' \
'[autonomy]' \
'level = "supervised"' \
'auto_approve = ["file_read", "file_write", "file_edit", "memory_recall", "memory_store", "web_search_tool", "web_fetch", "calculator", "glob_search", "content_search", "image_info", "weather", "git_operations"]' \
> /zeroclaw-data/.zeroclaw/config.toml && \ > /zeroclaw-data/.zeroclaw/config.toml && \
chown -R 65534:65534 /zeroclaw-data chown -R 65534:65534 /zeroclaw-data
@ -117,7 +122,7 @@ EXPOSE 42617
HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=10s \ HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=10s \
CMD ["zeroclaw", "status", "--format=exit-code"] CMD ["zeroclaw", "status", "--format=exit-code"]
ENTRYPOINT ["zeroclaw"] ENTRYPOINT ["zeroclaw"]
CMD ["gateway"] CMD ["daemon"]
# ── Stage 3: Production Runtime (Distroless) ───────────────── # ── Stage 3: Production Runtime (Distroless) ─────────────────
FROM gcr.io/distroless/cc-debian13:nonroot@sha256:84fcd3c223b144b0cb6edc5ecc75641819842a9679a3a58fd6294bec47532bf7 AS release FROM gcr.io/distroless/cc-debian13:nonroot@sha256:84fcd3c223b144b0cb6edc5ecc75641819842a9679a3a58fd6294bec47532bf7 AS release
@ -143,4 +148,4 @@ EXPOSE 42617
HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=10s \ HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=10s \
CMD ["zeroclaw", "status", "--format=exit-code"] CMD ["zeroclaw", "status", "--format=exit-code"]
ENTRYPOINT ["zeroclaw"] ENTRYPOINT ["zeroclaw"]
CMD ["gateway"] CMD ["daemon"]

View File

@ -27,7 +27,7 @@ RUN npm run build
FROM rust:1.94-bookworm AS builder FROM rust:1.94-bookworm AS builder
WORKDIR /app WORKDIR /app
ARG ZEROCLAW_CARGO_FEATURES="" ARG ZEROCLAW_CARGO_FEATURES="memory-postgres,channel-lark"
# Install build dependencies # Install build dependencies
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
@ -38,13 +38,15 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
# 1. Copy manifests to cache dependencies # 1. Copy manifests to cache dependencies
COPY Cargo.toml Cargo.lock ./ COPY Cargo.toml Cargo.lock ./
COPY crates/robot-kit/Cargo.toml crates/robot-kit/Cargo.toml # Include every workspace member: Cargo.lock is generated for the full workspace.
# Previously we used sed to drop `crates/robot-kit`, which made the manifest disagree
# with the lockfile and caused `cargo --locked` to fail (Cargo refused to rewrite the lock).
COPY crates/robot-kit/ crates/robot-kit/
# Create dummy targets declared in Cargo.toml so manifest parsing succeeds. # Create dummy targets declared in Cargo.toml so manifest parsing succeeds.
RUN mkdir -p src benches crates/robot-kit/src \ RUN mkdir -p src benches \
&& echo "fn main() {}" > src/main.rs \ && echo "fn main() {}" > src/main.rs \
&& echo "" > src/lib.rs \ && echo "" > src/lib.rs \
&& echo "fn main() {}" > benches/agent_benchmarks.rs \ && echo "fn main() {}" > benches/agent_benchmarks.rs
&& echo "pub fn placeholder() {}" > crates/robot-kit/src/lib.rs
RUN --mount=type=cache,id=zeroclaw-cargo-registry,target=/usr/local/cargo/registry,sharing=locked \ RUN --mount=type=cache,id=zeroclaw-cargo-registry,target=/usr/local/cargo/registry,sharing=locked \
--mount=type=cache,id=zeroclaw-cargo-git,target=/usr/local/cargo/git,sharing=locked \ --mount=type=cache,id=zeroclaw-cargo-git,target=/usr/local/cargo/git,sharing=locked \
--mount=type=cache,id=zeroclaw-target,target=/app/target,sharing=locked \ --mount=type=cache,id=zeroclaw-target,target=/app/target,sharing=locked \
@ -53,13 +55,11 @@ RUN --mount=type=cache,id=zeroclaw-cargo-registry,target=/usr/local/cargo/regist
else \ else \
cargo build --release --locked; \ cargo build --release --locked; \
fi fi
RUN rm -rf src benches crates/robot-kit/src RUN rm -rf src benches
# 2. Copy only build-relevant source paths (avoid cache-busting on docs/tests/scripts) # 2. Copy only build-relevant source paths (avoid cache-busting on docs/tests/scripts)
COPY src/ src/ COPY src/ src/
COPY benches/ benches/ COPY benches/ benches/
COPY crates/ crates/
COPY firmware/ firmware/
COPY --from=web-builder /web/dist web/dist COPY --from=web-builder /web/dist web/dist
RUN touch src/main.rs RUN touch src/main.rs
RUN --mount=type=cache,id=zeroclaw-cargo-registry,target=/usr/local/cargo/registry,sharing=locked \ RUN --mount=type=cache,id=zeroclaw-cargo-registry,target=/usr/local/cargo/registry,sharing=locked \
@ -72,7 +72,7 @@ RUN --mount=type=cache,id=zeroclaw-cargo-registry,target=/usr/local/cargo/regist
fi && \ fi && \
cp target/release/zeroclaw /app/zeroclaw && \ cp target/release/zeroclaw /app/zeroclaw && \
strip /app/zeroclaw strip /app/zeroclaw
RUN size=$(stat -c%s /app/zeroclaw 2>/dev/null || stat -f%z /app/zeroclaw) && \ RUN size=$(stat -c%s /app/zeroclaw) && \
if [ "$size" -lt 1000000 ]; then echo "ERROR: binary too small (${size} bytes), likely dummy build artifact" && exit 1; fi if [ "$size" -lt 1000000 ]; then echo "ERROR: binary too small (${size} bytes), likely dummy build artifact" && exit 1; fi
# Prepare runtime directory structure and default config inline (no extra stage) # Prepare runtime directory structure and default config inline (no extra stage)
@ -89,6 +89,10 @@ RUN mkdir -p /zeroclaw-data/.zeroclaw /zeroclaw-data/workspace && \
'port = 42617' \ 'port = 42617' \
'host = "[::]"' \ 'host = "[::]"' \
'allow_public_bind = true' \ 'allow_public_bind = true' \
'' \
'[autonomy]' \
'level = "supervised"' \
'auto_approve = ["file_read", "file_write", "file_edit", "memory_recall", "memory_store", "web_search_tool", "web_fetch", "calculator", "glob_search", "content_search", "image_info", "weather", "git_operations"]' \
> /zeroclaw-data/.zeroclaw/config.toml && \ > /zeroclaw-data/.zeroclaw/config.toml && \
chown -R 65534:65534 /zeroclaw-data chown -R 65534:65534 /zeroclaw-data
@ -123,4 +127,4 @@ EXPOSE 42617
HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=10s \ HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=10s \
CMD ["zeroclaw", "status", "--format=exit-code"] CMD ["zeroclaw", "status", "--format=exit-code"]
ENTRYPOINT ["zeroclaw"] ENTRYPOINT ["zeroclaw"]
CMD ["gateway"] CMD ["daemon"]

78
Justfile Normal file
View File

@ -0,0 +1,78 @@
# Justfile - Convenient command runner for ZeroClaw development
# https://github.com/casey/just
# Default recipe to display help
_default:
@just --list
# Format all code
fmt:
cargo fmt --all
# Check formatting without making changes
fmt-check:
cargo fmt --all -- --check
# Run clippy lints
lint:
cargo clippy --all-targets -- -D warnings
# Run all tests
test:
cargo test --locked
# Run only unit tests (faster)
test-lib:
cargo test --lib
# Run the full CI quality gate locally
ci: fmt-check lint test
@echo "✅ All CI checks passed!"
# Build in release mode
build:
cargo build --release --locked
# Build in debug mode
build-debug:
cargo build
# Clean build artifacts
clean:
cargo clean
# Run zeroclaw with example config (for development)
dev *ARGS:
cargo run -- {{ARGS}}
# Check code without building
check:
cargo check --all-targets
# Run cargo doc and open in browser
doc:
cargo doc --no-deps --open
# Update dependencies
update:
cargo update
# Run cargo audit to check for security vulnerabilities
audit:
cargo audit
# Run cargo deny checks
deny:
cargo deny check
# Format TOML files (requires taplo)
fmt-toml:
taplo format
# Check TOML formatting (requires taplo)
fmt-toml-check:
taplo format --check
# Run all formatting tools
fmt-all: fmt fmt-toml
@echo "✅ All formatting complete!"

15
NOTICE
View File

@ -41,3 +41,18 @@ This project uses third-party libraries and components,
each licensed under their respective terms. each licensed under their respective terms.
See Cargo.lock for a complete dependency list. See Cargo.lock for a complete dependency list.
Verifiable Intent Specification
================================
The src/verifiable_intent/ module is a Rust-native reimplementation based on
the Verifiable Intent open specification and reference implementation:
Project: Verifiable Intent (VI)
Author: agent-intent
Source: https://github.com/agent-intent/verifiable-intent
License: Apache License, Version 2.0
This implementation follows the VI specification design (SD-JWT layered
credentials, constraint model, three-layer chain). No source code was copied
from the reference implementation.

File diff suppressed because it is too large Load Diff

View File

@ -1,27 +1,33 @@
<p align="center"> <p align="center">
<img src="zeroclaw.png" alt="ZeroClaw" width="200" /> <img src="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/docs/assets/zeroclaw-banner.png" alt="ZeroClaw" width="600" />
</p> </p>
<h1 align="center">ZeroClaw 🦀</h1> <h1 align="center">🦀 ZeroClaw — ব্যক্তিগত AI সহকারী</h1>
<p align="center"> <p align="center">
<strong>শূন্য ওভারহেড। শূন্য আপস। 100% রাস্ট। 100% অজ্ঞেয়বাদী।</strong><br> <strong>শূন্য ওভারহেড। শূন্য আপস। 100% Rust। 100% অজ্ঞেয়বাদী।</strong><br>
⚡️ <strong>$10 হার্ডওয়্যারে <5MB RAM িয় চল: এটি OpenClaw 99% কম ি এব Mac mini 98% সস্ত!</strong> ⚡️ <strong>$10 হার্ডওয়্যারে <5MB RAM িয় চল: এটি OpenClaw 99% কম ি এব Mac mini 98% সস্ত!</strong>
</p> </p>
<p align="center"> <p align="center">
<a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a> <a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
<a href="NOTICE"><img src="https://img.shields.io/badge/contributors-27+-green.svg" alt="Contributors" /></a> <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors"><img src="https://img.shields.io/github/contributors/zeroclaw-labs/zeroclaw?color=green" alt="Contributors" /></a>
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a> <a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
<a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a> <a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a>
<a href="https://zeroclawlabs.cn/group.jpg"><img src="https://img.shields.io/badge/WeChat-Group-B7D7A8?logo=wechat&logoColor=white" alt="WeChat Group" /></a> <a href="https://www.facebook.com/groups/zeroclawlabs"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a>
<a href="https://www.xiaohongshu.com/user/profile/67cbfc43000000000d008307?xsec_token=AB73VnYnGNx5y36EtnnZfGmAmS-6Wzv8WMuGpfwfkg6Yc%3D&xsec_source=pc_search"><img src="https://img.shields.io/badge/Xiaohongshu-Official-FF2442?style=flat" alt="Xiaohongshu: Official" /></a> <a href="https://discord.com/invite/wDshRVqRjx"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://t.me/zeroclawlabs"><img src="https://img.shields.io/badge/Telegram-%40zeroclawlabs-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @zeroclawlabs" /></a> <a href="https://www.instagram.com/therealzeroclaw"><img src="https://img.shields.io/badge/Instagram-%40therealzeroclaw-E4405F?style=flat&logo=instagram&logoColor=white" alt="Instagram: @therealzeroclaw" /></a>
<a href="https://www.facebook.com/groups/zeroclaw"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a> <a href="https://www.tiktok.com/@zeroclawlabs"><img src="https://img.shields.io/badge/TikTok-%40zeroclawlabs-000000?style=flat&logo=tiktok&logoColor=white" alt="TikTok: @zeroclawlabs" /></a>
<a href="https://www.rednote.com/user/profile/69b735e6000000002603927e"><img src="https://img.shields.io/badge/RedNote-Official-FF2442?style=flat" alt="RedNote" /></a>
<a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a>
</p> </p>
<p align="center"> <p align="center">
🌐 <strong>ভাষা:</strong> Harvard, MIT, এবং Sundai.Club সম্প্রদায়ের ছাত্র ও সদস্যদের দ্বারা নির্মিত।
</p>
<p align="center">
🌐 <strong>ভাষাসমূহ:</strong>
<a href="README.md">🇺🇸 English</a> · <a href="README.md">🇺🇸 English</a> ·
<a href="README.zh-CN.md">🇨🇳 简体中文</a> · <a href="README.zh-CN.md">🇨🇳 简体中文</a> ·
<a href="README.ja.md">🇯🇵 日本語</a> · <a href="README.ja.md">🇯🇵 日本語</a> ·
@ -55,149 +61,695 @@
<a href="README.nb.md">🇳🇴 Norsk</a> <a href="README.nb.md">🇳🇴 Norsk</a>
</p> </p>
--- ZeroClaw একটি ব্যক্তিগত AI সহকারী যা আপনি আপনার নিজের ডিভাইসে চালান। এটি আপনাকে সেই চ্যানেলগুলোতে উত্তর দেয় যা আপনি ইতিমধ্যে ব্যবহার করেন (WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, এবং আরও)। এতে রিয়েল-টাইম নিয়ন্ত্রণের জন্য একটি ওয়েব ড্যাশবোর্ড আছে এবং এটি হার্ডওয়্যার পেরিফেরালের (ESP32, STM32, Arduino, Raspberry Pi) সাথে সংযোগ করতে পারে। Gateway শুধুমাত্র কন্ট্রোল প্লেন — পণ্যটি হল সহকারী।
<!-- BEGIN:WHATS_NEW --> আপনি যদি একটি ব্যক্তিগত, একক-ব্যবহারকারী সহকারী চান যা স্থানীয়, দ্রুত এবং সর্বদা চালু মনে হয়, এটাই সেটি।
### 🚀 What's New in v0.3.1 (March 2026) <p align="center">
<a href="https://zeroclawlabs.ai">ওয়েবসাইট</a> ·
<a href="docs/README.md">ডকুমেন্টেশন</a> ·
<a href="docs/architecture.md">আর্কিটেকচার</a> ·
<a href="#দ্রুত-শুরু">শুরু করুন</a> ·
<a href="#openclaw-থেকে-মাইগ্রেশন">OpenClaw থেকে মাইগ্রেশন</a> ·
<a href="docs/ops/troubleshooting.md">সমস্যা সমাধান</a> ·
<a href="https://discord.com/invite/wDshRVqRjx">Discord</a>
</p>
| Area | Highlights | > **পছন্দের সেটআপ:** আপনার টার্মিনালে `zeroclaw onboard` চালান। ZeroClaw Onboard আপনাকে gateway, workspace, channels, এবং provider সেট আপ করতে ধাপে ধাপে গাইড করে। এটি প্রস্তাবিত সেটআপ পথ এবং macOS, Linux, এবং Windows (WSL2 এর মাধ্যমে) এ কাজ করে। নতুন ইনস্টল? এখানে শুরু করুন: [শুরু করুন](#দ্রুত-শুরু)
|---|---|
| ci | add Termux (aarch64-linux-android) release target |
<!-- END:WHATS_NEW --> ### সাবস্ক্রিপশন অথ (OAuth)
## ZeroClaw কী? - **OpenAI Codex** (ChatGPT সাবস্ক্রিপশন)
- **Gemini** (Google OAuth)
- **Anthropic** (API key বা auth token)
ZeroClaw হল একটি হালকা, মিউটেবল এবং এক্সটেনসিবল AI অ্যাসিস্ট্যান্ট ইনফ্রাস্ট্রাকচার যা রাস্টে তৈরি। এটি বিভিন্ন LLM প্রদানকারীদের (Anthropic, OpenAI, Google, Ollama, ইত্যাদি) একটি ইউনিফাইড ইন্টারফেসের মাধ্যমে সংযুক্ত করে এবং একাধিক চ্যানেল (Telegram, Matrix, CLI, ইত্যাদি) সমর্থন করে। মডেল নোট: যদিও অনেক প্রদানকারী/মডেল সমর্থিত, সেরা অভিজ্ঞতার জন্য আপনার কাছে উপলব্ধ সবচেয়ে শক্তিশালী সর্বশেষ প্রজন্মের মডেল ব্যবহার করুন। দেখুন [অনবোর্ডিং](#দ্রুত-শুরু)
### মূল বৈশিষ্ট্যসমূহ মডেল কনফিগ + CLI: [প্রদানকারী রেফারেন্স](docs/reference/api/providers-reference.md)
অথ প্রোফাইল রোটেশন (OAuth বনাম API keys) + ফেইলওভার: [মডেল ফেইলওভার](docs/reference/api/providers-reference.md)
- **🦀 রাস্টে লেখা**: উচ্চ পারফরম্যান্স, মেমোরি নিরাপত্তা, এবং জিরো-কস্ট অ্যাবস্ট্রাকশন ## ইনস্টল (প্রস্তাবিত)
- **🔌 প্রদানকারী-অজ্ঞেয়বাদী**: OpenAI, Anthropic, Google Gemini, Ollama, এবং অন্যান্য সমর্থন
- **📱 মাল্টি-চ্যানেল**: Telegram, Matrix (E2EE সহ), CLI, এবং অন্যান্য
- **🧠 প্লাগেবল মেমোরি**: SQLite এবং Markdown ব্যাকএন্ড
- **🛠️ এক্সটেন্সিবল টুলস**: সহজেই কাস্টম টুল যোগ করুন
- **🔒 নিরাপত্তা-প্রথম**: রিভার্স-প্রক্সি, গোপনীয়তা-প্রথম ডিজাইন
--- রানটাইম: Rust স্থিতিশীল টুলচেইন। একক বাইনারি, কোনো রানটাইম নির্ভরতা নেই।
## দ্রুত শুরু ### Homebrew (macOS/Linuxbrew)
### প্রয়োজনীয়তা ```bash
brew install zeroclaw
- রাস্ট 1.70+ ```
- একটি LLM প্রদানকারী API কী (Anthropic, OpenAI, ইত্যাদি)
### এক-ক্লিক বুটস্ট্র্যাপ
### ইনস্টলেশন
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./install.sh
```
`zeroclaw onboard` ইনস্টলের পরে স্বয়ংক্রিয়ভাবে চলে আপনার workspace এবং provider কনফিগার করতে।
## দ্রুত শুরু (TL;DR)
সম্পূর্ণ শিক্ষানবিশ গাইড (অথ, পেয়ারিং, চ্যানেল): [শুরু করুন](docs/setup-guides/one-click-bootstrap.md)
```bash
# Install + onboard
./install.sh --api-key "sk-..." --provider openrouter
# Start the gateway (webhook server + web dashboard)
zeroclaw gateway # default: 127.0.0.1:42617
zeroclaw gateway --port 0 # random port (security hardened)
# Talk to the assistant
zeroclaw agent -m "Hello, ZeroClaw!"
# Interactive mode
zeroclaw agent
# Start full autonomous runtime (gateway + channels + cron + hands)
zeroclaw daemon
# Check status
zeroclaw status
# Run diagnostics
zeroclaw doctor
```
আপগ্রেড করছেন? আপডেটের পরে `zeroclaw doctor` চালান।
### সোর্স থেকে (ডেভেলপমেন্ট)
```bash ```bash
# রিপোজিটরি ক্লোন করুন
git clone https://github.com/zeroclaw-labs/zeroclaw.git git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw cd zeroclaw
# বিল্ড করুন cargo build --release --locked
cargo build --release cargo install --path . --force --locked
# চালান zeroclaw onboard
cargo run --release
``` ```
### Docker দিয়ে > **ডেভ ফলব্যাক (কোনো গ্লোবাল ইনস্টল নেই):** কমান্ডের আগে `cargo run --release --` যোগ করুন (উদাহরণ: `cargo run --release -- status`)।
## OpenClaw থেকে মাইগ্রেশন
ZeroClaw আপনার OpenClaw workspace, মেমোরি, এবং কনফিগারেশন আমদানি করতে পারে:
```bash ```bash
docker run -d \ # Preview what will be migrated (safe, read-only)
--name zeroclaw \ zeroclaw migrate openclaw --dry-run
-e ANTHROPIC_API_KEY=your_key \
-v zeroclaw-data:/app/data \ # Run the migration
zeroclaw/zeroclaw:latest zeroclaw migrate openclaw
``` ```
--- এটি আপনার মেমোরি এন্ট্রি, workspace ফাইল, এবং কনফিগারেশন `~/.openclaw/` থেকে `~/.zeroclaw/` তে মাইগ্রেট করে। কনফিগ স্বয়ংক্রিয়ভাবে JSON থেকে TOML এ রূপান্তরিত হয়।
## নিরাপত্তা ডিফল্ট (DM অ্যাক্সেস)
ZeroClaw প্রকৃত মেসেজিং সারফেসের সাথে সংযোগ করে। ইনবাউন্ড DM গুলোকে অবিশ্বস্ত ইনপুট হিসেবে বিবেচনা করুন।
সম্পূর্ণ নিরাপত্তা গাইড: [SECURITY.md](SECURITY.md)
সকল চ্যানেলে ডিফল্ট আচরণ:
- **DM পেয়ারিং** (ডিফল্ট): অজানা প্রেরকরা একটি সংক্ষিপ্ত পেয়ারিং কোড পায় এবং বট তাদের বার্তা প্রক্রিয়া করে না।
- এর মাধ্যমে অনুমোদন করুন: `zeroclaw pairing approve <channel> <code>` (তারপর প্রেরক স্থানীয় অনুমতি তালিকায় যুক্ত হয়)।
- পাবলিক ইনবাউন্ড DM এর জন্য `config.toml` এ স্পষ্ট অপ্ট-ইন প্রয়োজন।
- ঝুঁকিপূর্ণ বা ভুল কনফিগার করা DM নীতি প্রকাশ করতে `zeroclaw doctor` চালান।
**স্বায়ত্তশাসন স্তর:**
| স্তর | আচরণ |
|-------|----------|
| `ReadOnly` | এজেন্ট পর্যবেক্ষণ করতে পারে কিন্তু কাজ করতে পারে না |
| `Supervised` (ডিফল্ট) | এজেন্ট মাঝারি/উচ্চ ঝুঁকি অপারেশনের জন্য অনুমোদন সহ কাজ করে |
| `Full` | এজেন্ট নীতি সীমার মধ্যে স্বায়ত্তশাসিতভাবে কাজ করে |
**স্যান্ডবক্সিং স্তর:** workspace আইসোলেশন, পাথ ট্রাভার্সাল ব্লকিং, কমান্ড অনুমতি তালিকা, নিষিদ্ধ পাথ (`/etc`, `/root`, `~/.ssh`), রেট লিমিটিং (সর্বোচ্চ কার্য/ঘণ্টা, খরচ/দিন সীমা)।
<!-- BEGIN:WHATS_NEW -->
<!-- END:WHATS_NEW -->
### 📢 ঘোষণা
গুরুত্বপূর্ণ নোটিশের (ব্রেকিং পরিবর্তন, নিরাপত্তা পরামর্শ, রক্ষণাবেক্ষণ উইন্ডো, এবং রিলিজ ব্লকার) জন্য এই বোর্ড ব্যবহার করুন।
| তারিখ (UTC) | স্তর | নোটিশ | পদক্ষেপ |
| ---------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2026-02-19 | _জটিল_ | আমরা `openagen/zeroclaw`, `zeroclaw.org` বা `zeroclaw.net` এর সাথে **সম্পর্কিত নই**`zeroclaw.org` এবং `zeroclaw.net` ডোমেইনগুলো বর্তমানে `openagen/zeroclaw` ফর্কের দিকে নির্দেশ করে, এবং সেই ডোমেইন/রিপোজিটরি আমাদের অফিসিয়াল ওয়েবসাইট/প্রকল্পের ছদ্মবেশ ধারণ করছে। | সেই উৎসগুলো থেকে তথ্য, বাইনারি, তহবিল সংগ্রহ, বা ঘোষণায় বিশ্বাস করবেন না। শুধুমাত্র [এই রিপোজিটরি](https://github.com/zeroclaw-labs/zeroclaw) এবং আমাদের যাচাইকৃত সোশ্যাল অ্যাকাউন্ট ব্যবহার করুন। |
| 2026-02-21 | _গুরুত্বপূর্ণ_ | আমাদের অফিসিয়াল ওয়েবসাইট এখন লাইভ: [zeroclawlabs.ai](https://zeroclawlabs.ai)। লঞ্চ প্রস্তুত করার সময় আপনার ধৈর্যের জন্য ধন্যবাদ। আমরা এখনও ছদ্মবেশ প্রচেষ্টা দেখছি, তাই কোনো বিনিয়োগ বা তহবিল সংগ্রহ কার্যকলাপে **যোগ দেবেন না** যা ZeroClaw নাম দাবি করে যদি না এটি আমাদের অফিসিয়াল চ্যানেলের মাধ্যমে প্রকাশিত হয়। | [এই রিপোজিটরি](https://github.com/zeroclaw-labs/zeroclaw) কে সত্যের একক উৎস হিসেবে ব্যবহার করুন। অফিসিয়াল আপডেটের জন্য [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21), [Facebook (Group)](https://www.facebook.com/groups/zeroclawlabs), এবং [Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/) অনুসরণ করুন। |
| 2026-02-19 | _গুরুত্বপূর্ণ_ | Anthropic 2026-02-19 তে Authentication and Credential Use শর্তাবলী আপডেট করেছে। Claude Code OAuth টোকেন (Free, Pro, Max) একচেটিয়াভাবে Claude Code এবং Claude.ai এর জন্য; Claude Free/Pro/Max থেকে OAuth টোকেন অন্য কোনো পণ্য, টুল, বা সেবায় (Agent SDK সহ) ব্যবহার অনুমোদিত নয় এবং Consumer Terms of Service লঙ্ঘন করতে পারে। | সম্ভাব্য ক্ষতি রোধ করতে অনুগ্রহ করে Claude Code OAuth ইন্টিগ্রেশন সাময়িকভাবে এড়িয়ে চলুন। মূল ধারা: [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use)। |
## প্রধান বৈশিষ্ট্য
- **ডিফল্টভাবে হালকা রানটাইম** — সাধারণ CLI এবং স্ট্যাটাস ওয়ার্কফ্লো রিলিজ বিল্ডে কয়েক-মেগাবাইট মেমোরি এনভেলপে চলে।
- **খরচ-সাশ্রয়ী ডিপ্লয়মেন্ট** — $10 বোর্ড এবং ছোট ক্লাউড ইনস্ট্যান্সের জন্য ডিজাইন করা, কোনো ভারী রানটাইম নির্ভরতা নেই।
- **দ্রুত কোল্ড স্টার্ট** — একক-বাইনারি Rust রানটাইম কমান্ড এবং ডেমন স্টার্টআপ প্রায় তাৎক্ষণিক রাখে।
- **পোর্টেবল আর্কিটেকচার** — ARM, x86, এবং RISC-V জুড়ে একটি বাইনারি যার সাথে বিনিময়যোগ্য প্রদানকারী/চ্যানেল/টুল।
- **লোকাল-ফার্স্ট Gateway** — সেশন, চ্যানেল, টুল, cron, SOPs, এবং ইভেন্টের জন্য একক কন্ট্রোল প্লেন।
- **মাল্টি-চ্যানেল ইনবক্স** — WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WebSocket, এবং আরও।
- **মাল্টি-এজেন্ট অর্কেস্ট্রেশন (Hands)** — স্বায়ত্তশাসিত এজেন্ট সোয়ার্ম যা সময়সূচী অনুযায়ী চলে এবং সময়ের সাথে আরও স্মার্ট হয়।
- **স্ট্যান্ডার্ড অপারেটিং প্রসিডিউর (SOPs)** — MQTT, webhook, cron, এবং পেরিফেরাল ট্রিগার সহ ইভেন্ট-চালিত ওয়ার্কফ্লো অটোমেশন।
- **ওয়েব ড্যাশবোর্ড** — React 19 + Vite ওয়েব UI যাতে রিয়েল-টাইম চ্যাট, মেমোরি ব্রাউজার, কনফিগ এডিটর, cron ম্যানেজার, এবং টুল ইন্সপেক্টর আছে।
- **হার্ডওয়্যার পেরিফেরাল**`Peripheral` trait এর মাধ্যমে ESP32, STM32 Nucleo, Arduino, Raspberry Pi GPIO।
- **প্রথম-শ্রেণীর টুল** — shell, ফাইল I/O, browser, git, ওয়েব fetch/search, MCP, Jira, Notion, Google Workspace, এবং 70+ আরও।
- **লাইফসাইকেল হুক** — প্রতিটি পর্যায়ে LLM কল, টুল এক্সিকিউশন, এবং বার্তা ইন্টারসেপ্ট ও পরিবর্তন করুন।
- **স্কিল প্ল্যাটফর্ম** — নিরাপত্তা অডিটিং সহ বান্ডেল, সম্প্রদায়, এবং workspace স্কিল।
- **টানেল সাপোর্ট** — রিমোট অ্যাক্সেসের জন্য Cloudflare, Tailscale, ngrok, OpenVPN, এবং কাস্টম টানেল।
### দলগুলো কেন ZeroClaw বেছে নেয়
- **ডিফল্টভাবে হালকা:** ছোট Rust বাইনারি, দ্রুত স্টার্টআপ, কম মেমোরি ফুটপ্রিন্ট।
- **ডিজাইনে নিরাপদ:** পেয়ারিং, কঠোর স্যান্ডবক্সিং, স্পষ্ট অনুমতি তালিকা, workspace স্কোপিং।
- **সম্পূর্ণ বিনিময়যোগ্য:** মূল সিস্টেমগুলো traits (providers, channels, tools, memory, tunnels)।
- **কোনো লক-ইন নেই:** OpenAI-সামঞ্জস্যপূর্ণ প্রদানকারী সমর্থন + প্লাগেবল কাস্টম এন্ডপয়েন্ট।
## বেঞ্চমার্ক স্ন্যাপশট (ZeroClaw বনাম OpenClaw, পুনরুৎপাদনযোগ্য)
স্থানীয় মেশিন দ্রুত বেঞ্চমার্ক (macOS arm64, ফেব্রুয়ারি 2026) 0.8GHz এজ হার্ডওয়্যারের জন্য স্বাভাবিকীকৃত।
| | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 |
| ------------------------- | ------------- | -------------- | --------------- | -------------------- |
| **ভাষা** | TypeScript | Python | Go | **Rust** |
| **RAM** | > 1GB | > 100MB | < 10MB | **< 5MB** |
| **স্টার্টআপ (0.8GHz কোর)** | > 500s | > 30s | < 1s | **< 10ms** |
| **বাইনারি আকার** | ~28MB (dist) | N/A (Scripts) | ~8MB | **~8.8 MB** |
| **খরচ** | Mac Mini $599 | Linux SBC ~$50 | Linux Board $10 | **যেকোনো হার্ডওয়্যার $10** |
> নোট: ZeroClaw ফলাফল `/usr/bin/time -l` ব্যবহার করে রিলিজ বিল্ডে পরিমাপ করা হয়েছে। OpenClaw এর Node.js রানটাইম প্রয়োজন (সাধারণত ~390MB অতিরিক্ত মেমোরি ওভারহেড), যেখানে NanoBot এর Python রানটাইম প্রয়োজন। PicoClaw এবং ZeroClaw স্ট্যাটিক বাইনারি। উপরের RAM পরিসংখ্যান রানটাইম মেমোরি; বিল্ড-টাইম কম্পাইলেশন প্রয়োজনীয়তা বেশি।
<p align="center">
<img src="docs/assets/zeroclaw-comparison.jpeg" alt="ZeroClaw vs OpenClaw Comparison" width="800" />
</p>
### পুনরুৎপাদনযোগ্য স্থানীয় পরিমাপ
```bash
cargo build --release
ls -lh target/release/zeroclaw
/usr/bin/time -l target/release/zeroclaw --help
/usr/bin/time -l target/release/zeroclaw status
```
## এখন পর্যন্ত আমরা যা তৈরি করেছি
### কোর প্ল্যাটফর্ম
- Gateway HTTP/WS/SSE কন্ট্রোল প্লেন যাতে সেশন, উপস্থিতি, কনফিগ, cron, webhooks, ওয়েব ড্যাশবোর্ড, এবং পেয়ারিং আছে।
- CLI সারফেস: `gateway`, `agent`, `onboard`, `doctor`, `status`, `service`, `migrate`, `auth`, `cron`, `channel`, `skills`
- এজেন্ট অর্কেস্ট্রেশন লুপ যাতে টুল ডিসপ্যাচ, প্রম্পট নির্মাণ, বার্তা শ্রেণীবিভাগ, এবং মেমোরি লোডিং আছে।
- নিরাপত্তা নীতি প্রয়োগ, স্বায়ত্তশাসন স্তর, এবং অনুমোদন গেটিং সহ সেশন মডেল।
- 20+ LLM ব্যাকএন্ড জুড়ে ফেইলওভার, রিট্রাই, এবং মডেল রাউটিং সহ রেজিলিয়েন্ট প্রদানকারী র‍্যাপার।
### চ্যানেল
চ্যানেল: WhatsApp (নেটিভ), Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, DingTalk, Lark, Mattermost, Nextcloud Talk, Nostr, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WATI, Mochat, Linq, Notion, WebSocket, ClawdTalk।
ফিচার-গেটেড: Matrix (`channel-matrix`), Lark (`channel-lark`), Nostr (`channel-nostr`)।
### ওয়েব ড্যাশবোর্ড
React 19 + Vite 6 + Tailwind CSS 4 ওয়েব ড্যাশবোর্ড সরাসরি Gateway থেকে পরিবেশিত:
- **ড্যাশবোর্ড** — সিস্টেম ওভারভিউ, স্বাস্থ্য অবস্থা, আপটাইম, খরচ ট্র্যাকিং
- **এজেন্ট চ্যাট** — এজেন্টের সাথে ইন্টারেক্টিভ চ্যাট
- **মেমোরি** — মেমোরি এন্ট্রি ব্রাউজ ও পরিচালনা
- **কনফিগ** — কনফিগারেশন দেখুন ও সম্পাদনা করুন
- **Cron** — নির্ধারিত কাজ পরিচালনা
- **টুলস** — উপলব্ধ টুল ব্রাউজ করুন
- **লগস** — এজেন্ট কার্যকলাপ লগ দেখুন
- **খরচ** — টোকেন ব্যবহার এবং খরচ ট্র্যাকিং
- **ডক্টর** — সিস্টেম স্বাস্থ্য ডায়াগনস্টিকস
- **ইন্টিগ্রেশন** — ইন্টিগ্রেশন অবস্থা এবং সেটআপ
- **পেয়ারিং** — ডিভাইস পেয়ারিং পরিচালনা
### ফার্মওয়্যার টার্গেট
| টার্গেট | প্ল্যাটফর্ম | উদ্দেশ্য |
|--------|----------|---------|
| ESP32 | Espressif ESP32 | ওয়্যারলেস পেরিফেরাল এজেন্ট |
| ESP32-UI | ESP32 + Display | ভিজ্যুয়াল ইন্টারফেস সহ এজেন্ট |
| STM32 Nucleo | STM32 (ARM Cortex-M) | ইন্ডাস্ট্রিয়াল পেরিফেরাল |
| Arduino | Arduino | বেসিক সেন্সর/অ্যাকচুয়েটর ব্রিজ |
| Uno Q Bridge | Arduino Uno | এজেন্টের জন্য সিরিয়াল ব্রিজ |
### টুল + অটোমেশন
- **কোর:** shell, ফাইল read/write/edit, git অপারেশন, glob search, content search
- **ওয়েব:** ব্রাউজার নিয়ন্ত্রণ, web fetch, web search, screenshot, image info, PDF read
- **ইন্টিগ্রেশন:** Jira, Notion, Google Workspace, Microsoft 365, LinkedIn, Composio, Pushover
- **MCP:** Model Context Protocol টুল র‍্যাপার + ডিফার্ড টুল সেট
- **শিডিউলিং:** cron add/remove/update/run, schedule tool
- **মেমোরি:** recall, store, forget, knowledge, project intel
- **উন্নত:** delegate (এজেন্ট-টু-এজেন্ট), swarm, model switch/routing, security ops, cloud ops
- **হার্ডওয়্যার:** board info, memory map, memory read (ফিচার-গেটেড)
### রানটাইম + নিরাপত্তা
- **স্বায়ত্তশাসন স্তর:** ReadOnly, Supervised (ডিফল্ট), Full।
- **স্যান্ডবক্সিং:** workspace আইসোলেশন, পাথ ট্রাভার্সাল ব্লকিং, কমান্ড অনুমতি তালিকা, নিষিদ্ধ পাথ, Landlock (Linux), Bubblewrap।
- **রেট লিমিটিং:** প্রতি ঘণ্টায় সর্বোচ্চ কার্য, প্রতি দিনে সর্বোচ্চ খরচ (কনফিগারযোগ্য)।
- **অনুমোদন গেটিং:** মাঝারি/উচ্চ ঝুঁকি অপারেশনের জন্য ইন্টারেক্টিভ অনুমোদন।
- **ই-স্টপ:** জরুরি শাটডাউন ক্ষমতা।
- **129+ নিরাপত্তা পরীক্ষা** স্বয়ংক্রিয় CI তে।
### অপস + প্যাকেজিং
- ওয়েব ড্যাশবোর্ড সরাসরি Gateway থেকে পরিবেশিত।
- টানেল সাপোর্ট: Cloudflare, Tailscale, ngrok, OpenVPN, কাস্টম কমান্ড।
- কন্টেইনারাইজড এক্সিকিউশনের জন্য Docker রানটাইম অ্যাডাপ্টার।
- CI/CD: বেটা (পুশে অটো) → স্টেবল (ম্যানুয়াল ডিসপ্যাচ) → Docker, crates.io, Scoop, AUR, Homebrew, টুইট।
- Linux (x86_64, aarch64, armv7), macOS (x86_64, aarch64), Windows (x86_64) এর জন্য প্রি-বিল্ট বাইনারি।
## কনফিগারেশন ## কনফিগারেশন
ZeroClaw একটি YAML কনফিগারেশন ফাইল ব্যবহার করে। ডিফল্টরূপে, এটি `config.yaml` দেখে। ন্যূনতম `~/.zeroclaw/config.toml`:
```yaml ```toml
# ডিফল্ট প্রদানকারী default_provider = "anthropic"
provider: anthropic api_key = "sk-ant-..."
# প্রদানকারী কনফিগারেশন
providers:
anthropic:
api_key: ${ANTHROPIC_API_KEY}
model: claude-3-5-sonnet-20241022
openai:
api_key: ${OPENAI_API_KEY}
model: gpt-4o
# মেমোরি কনফিগারেশন
memory:
backend: sqlite
path: data/memory.db
# চ্যানেল কনফিগারেশন
channels:
telegram:
token: ${TELEGRAM_BOT_TOKEN}
``` ```
--- সম্পূর্ণ কনফিগারেশন রেফারেন্স: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)।
### চ্যানেল কনফিগারেশন
**Telegram:**
```toml
[channels.telegram]
bot_token = "123456:ABC-DEF..."
```
**Discord:**
```toml
[channels.discord]
token = "your-bot-token"
```
**Slack:**
```toml
[channels.slack]
bot_token = "xoxb-..."
app_token = "xapp-..."
```
**WhatsApp:**
```toml
[channels.whatsapp]
enabled = true
```
**Matrix:**
```toml
[channels.matrix]
homeserver_url = "https://matrix.org"
username = "@bot:matrix.org"
password = "..."
```
**Signal:**
```toml
[channels.signal]
phone_number = "+1234567890"
```
### টানেল কনফিগারেশন
```toml
[tunnel]
kind = "cloudflare" # or "tailscale", "ngrok", "openvpn", "custom", "none"
```
বিস্তারিত: [চ্যানেল রেফারেন্স](docs/reference/api/channels-reference.md) · [কনফিগ রেফারেন্স](docs/reference/api/config-reference.md)
### রানটাইম সাপোর্ট (বর্তমান)
- **`native`** (ডিফল্ট) — সরাসরি প্রসেস এক্সিকিউশন, দ্রুততম পথ, বিশ্বস্ত পরিবেশের জন্য আদর্শ।
- **`docker`** — সম্পূর্ণ কন্টেইনার আইসোলেশন, প্রয়োগকৃত নিরাপত্তা নীতি, Docker প্রয়োজন।
কঠোর স্যান্ডবক্সিং বা নেটওয়ার্ক আইসোলেশনের জন্য `runtime.kind = "docker"` সেট করুন।
## সাবস্ক্রিপশন অথ (OpenAI Codex / Claude Code / Gemini)
ZeroClaw সাবস্ক্রিপশন-নেটিভ অথ প্রোফাইল সমর্থন করে (মাল্টি-অ্যাকাউন্ট, বিশ্রামে এনক্রিপ্টেড)।
- স্টোর ফাইল: `~/.zeroclaw/auth-profiles.json`
- এনক্রিপশন কী: `~/.zeroclaw/.secret_key`
- প্রোফাইল id ফরম্যাট: `<provider>:<profile_name>` (উদাহরণ: `openai-codex:work`)
```bash
# OpenAI Codex OAuth (ChatGPT subscription)
zeroclaw auth login --provider openai-codex --device-code
# Gemini OAuth
zeroclaw auth login --provider gemini --profile default
# Anthropic setup-token
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# Check / refresh / switch profile
zeroclaw auth status
zeroclaw auth refresh --provider openai-codex --profile default
zeroclaw auth use --provider openai-codex --profile work
# Run the agent with subscription auth
zeroclaw agent --provider openai-codex -m "hello"
zeroclaw agent --provider anthropic -m "hello"
```
## এজেন্ট workspace + স্কিল
Workspace রুট: `~/.zeroclaw/workspace/` (কনফিগের মাধ্যমে কনফিগারযোগ্য)।
ইনজেক্ট করা প্রম্পট ফাইল:
- `IDENTITY.md` — এজেন্টের ব্যক্তিত্ব এবং ভূমিকা
- `USER.md` — ব্যবহারকারীর প্রসঙ্গ এবং পছন্দ
- `MEMORY.md` — দীর্ঘমেয়াদী তথ্য এবং শিক্ষা
- `AGENTS.md` — সেশন কনভেনশন এবং ইনিশিয়ালাইজেশন নিয়ম
- `SOUL.md` — মূল পরিচয় এবং পরিচালন নীতি
স্কিল: `~/.zeroclaw/workspace/skills/<skill>/SKILL.md` বা `SKILL.toml`
```bash
# List installed skills
zeroclaw skills list
# Install from git
zeroclaw skills install https://github.com/user/my-skill.git
# Security audit before install
zeroclaw skills audit https://github.com/user/my-skill.git
# Remove a skill
zeroclaw skills remove my-skill
```
## CLI কমান্ড
```bash
# Workspace management
zeroclaw onboard # Guided setup wizard
zeroclaw status # Show daemon/agent status
zeroclaw doctor # Run system diagnostics
# Gateway + daemon
zeroclaw gateway # Start gateway server (127.0.0.1:42617)
zeroclaw daemon # Start full autonomous runtime
# Agent
zeroclaw agent # Interactive chat mode
zeroclaw agent -m "message" # Single message mode
# Service management
zeroclaw service install # Install as OS service (launchd/systemd)
zeroclaw service start|stop|restart|status
# Channels
zeroclaw channel list # List configured channels
zeroclaw channel doctor # Check channel health
zeroclaw channel bind-telegram 123456789
# Cron + scheduling
zeroclaw cron list # List scheduled jobs
zeroclaw cron add "*/5 * * * *" --prompt "Check system health"
zeroclaw cron remove <id>
# Memory
zeroclaw memory list # List memory entries
zeroclaw memory get <key> # Retrieve a memory
zeroclaw memory stats # Memory statistics
# Auth profiles
zeroclaw auth login --provider <name>
zeroclaw auth status
zeroclaw auth use --provider <name> --profile <profile>
# Hardware peripherals
zeroclaw hardware discover # Scan for connected devices
zeroclaw peripheral list # List connected peripherals
zeroclaw peripheral flash # Flash firmware to device
# Migration
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw
# Shell completions
source <(zeroclaw completions bash)
zeroclaw completions zsh > ~/.zfunc/_zeroclaw
```
সম্পূর্ণ কমান্ড রেফারেন্স: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
<!-- markdownlint-disable MD001 MD024 -->
## পূর্বশর্ত
<details>
<summary><strong>Windows</strong></summary>
#### প্রয়োজনীয়
1. **Visual Studio Build Tools** (MSVC লিঙ্কার এবং Windows SDK প্রদান করে):
```powershell
winget install Microsoft.VisualStudio.2022.BuildTools
```
ইনস্টলেশনের সময় (বা Visual Studio Installer এর মাধ্যমে), **"Desktop development with C++"** ওয়ার্কলোড নির্বাচন করুন।
2. **Rust টুলচেইন:**
```powershell
winget install Rustlang.Rustup
```
ইনস্টলেশনের পরে, একটি নতুন টার্মিনাল খুলুন এবং `rustup default stable` চালান স্থিতিশীল টুলচেইন সক্রিয় করতে।
3. **যাচাই করুন** উভয়ই কাজ করছে:
```powershell
rustc --version
cargo --version
```
#### ঐচ্ছিক
- **Docker Desktop** — শুধুমাত্র [Docker স্যান্ডবক্সড রানটাইম](#রানটাইম-সাপোর্ট-বর্তমান) (`runtime.kind = "docker"`) ব্যবহার করলে প্রয়োজন। `winget install Docker.DockerDesktop` দিয়ে ইনস্টল করুন।
</details>
<details>
<summary><strong>Linux / macOS</strong></summary>
#### প্রয়োজনীয়
1. **বিল্ড এসেনশিয়ালস:**
- **Linux (Debian/Ubuntu):** `sudo apt install build-essential pkg-config`
- **Linux (Fedora/RHEL):** `sudo dnf group install development-tools && sudo dnf install pkg-config`
- **macOS:** Xcode Command Line Tools ইনস্টল করুন: `xcode-select --install`
2. **Rust টুলচেইন:**
```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
বিস্তারিতের জন্য [rustup.rs](https://rustup.rs) দেখুন।
3. **যাচাই করুন** উভয়ই কাজ করছে:
```bash
rustc --version
cargo --version
```
#### এক-লাইন ইনস্টলার
অথবা উপরের ধাপগুলো এড়িয়ে একটি কমান্ডে সবকিছু (সিস্টেম deps, Rust, ZeroClaw) ইনস্টল করুন:
```bash
curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash
```
#### কম্পাইলেশন রিসোর্স প্রয়োজনীয়তা
সোর্স থেকে বিল্ড করতে ফলাফল বাইনারি চালানোর চেয়ে বেশি রিসোর্স প্রয়োজন:
| রিসোর্স | ন্যূনতম | প্রস্তাবিত |
| -------------- | ------- | ----------- |
| **RAM + swap** | 2 GB | 4 GB+ |
| **ফ্রি ডিস্ক** | 6 GB | 10 GB+ |
আপনার হোস্ট ন্যূনতমের নিচে হলে, প্রি-বিল্ট বাইনারি ব্যবহার করুন:
```bash
./install.sh --prefer-prebuilt
```
সোর্স ফলব্যাক ছাড়া শুধুমাত্র বাইনারি ইনস্টল করতে:
```bash
./install.sh --prebuilt-only
```
#### ঐচ্ছিক
- **Docker** — শুধুমাত্র [Docker স্যান্ডবক্সড রানটাইম](#রানটাইম-সাপোর্ট-বর্তমান) (`runtime.kind = "docker"`) ব্যবহার করলে প্রয়োজন। আপনার প্যাকেজ ম্যানেজার বা [docker.com](https://docs.docker.com/engine/install/) থেকে ইনস্টল করুন।
> **নোট:** ডিফল্ট `cargo build --release` পিক কম্পাইল প্রেশার কমাতে `codegen-units=1` ব্যবহার করে। শক্তিশালী মেশিনে দ্রুত বিল্ডের জন্য, `cargo build --profile release-fast` ব্যবহার করুন।
</details>
<!-- markdownlint-enable MD001 MD024 -->
### প্রি-বিল্ট বাইনারি
রিলিজ অ্যাসেট প্রকাশিত হয়:
- Linux: `x86_64`, `aarch64`, `armv7`
- macOS: `x86_64`, `aarch64`
- Windows: `x86_64`
সর্বশেষ অ্যাসেট ডাউনলোড করুন:
<https://github.com/zeroclaw-labs/zeroclaw/releases/latest>
## ডকুমেন্টেশন ## ডকুমেন্টেশন
বিস্তারিত ডকুমেন্টেশনের জন্য, দেখুন: অনবোর্ডিং প্রবাহের পরে এবং গভীর রেফারেন্স চাইলে এগুলো ব্যবহার করুন।
- [ডকুমেন্টেশন হাব](docs/README.md) - নেভিগেশন এবং "কোথায় কী" এর জন্য [ডকুমেন্টেশন ইনডেক্স](docs/README.md) দিয়ে শুরু করুন।
- [কমান্ড রেফারেন্স](docs/commands-reference.md) - সম্পূর্ণ সিস্টেম মডেলের জন্য [আর্কিটেকচার ওভারভিউ](docs/architecture.md) পড়ুন।
- [প্রদানকারী রেফারেন্স](docs/providers-reference.md) - প্রতিটি কী এবং উদাহরণ প্রয়োজন হলে [কনফিগারেশন রেফারেন্স](docs/reference/api/config-reference.md) ব্যবহার করুন।
- [চ্যানেল রেফারেন্স](docs/channels-reference.md) - [অপারেশনাল রানবুক](docs/ops/operations-runbook.md) অনুযায়ী Gateway চালান।
- [কনফিগারেশন রেফারেন্স](docs/config-reference.md) - গাইডেড সেটআপের জন্য [ZeroClaw Onboard](#দ্রুত-শুরু) অনুসরণ করুন।
- [সমস্যা সমাধান গাইড](docs/ops/troubleshooting.md) দিয়ে সাধারণ ব্যর্থতা ডিবাগ করুন।
- কিছু এক্সপোজ করার আগে [নিরাপত্তা নির্দেশনা](docs/security/README.md) পর্যালোচনা করুন।
--- ### রেফারেন্স ডকুমেন্টেশন
- ডকুমেন্টেশন হাব: [docs/README.md](docs/README.md)
- একীভূত ডকুমেন্টেশন TOC: [docs/SUMMARY.md](docs/SUMMARY.md)
- কমান্ড রেফারেন্স: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
- কনফিগ রেফারেন্স: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
- প্রদানকারী রেফারেন্স: [docs/reference/api/providers-reference.md](docs/reference/api/providers-reference.md)
- চ্যানেল রেফারেন্স: [docs/reference/api/channels-reference.md](docs/reference/api/channels-reference.md)
- অপারেশনস রানবুক: [docs/ops/operations-runbook.md](docs/ops/operations-runbook.md)
- সমস্যা সমাধান: [docs/ops/troubleshooting.md](docs/ops/troubleshooting.md)
### সহযোগিতা ডকুমেন্টেশন
- অবদান গাইড: [CONTRIBUTING.md](CONTRIBUTING.md)
- PR ওয়ার্কফ্লো নীতি: [docs/contributing/pr-workflow.md](docs/contributing/pr-workflow.md)
- CI ওয়ার্কফ্লো গাইড: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- পর্যালোচক প্লেবুক: [docs/contributing/reviewer-playbook.md](docs/contributing/reviewer-playbook.md)
- নিরাপত্তা প্রকাশ নীতি: [SECURITY.md](SECURITY.md)
- ডকুমেন্টেশন টেমপ্লেট: [docs/contributing/doc-template.md](docs/contributing/doc-template.md)
### ডিপ্লয়মেন্ট + অপারেশন
- নেটওয়ার্ক ডিপ্লয়মেন্ট গাইড: [docs/ops/network-deployment.md](docs/ops/network-deployment.md)
- প্রক্সি এজেন্ট প্লেবুক: [docs/ops/proxy-agent-playbook.md](docs/ops/proxy-agent-playbook.md)
- হার্ডওয়্যার গাইড: [docs/hardware/README.md](docs/hardware/README.md)
## Smooth Crab 🦀
ZeroClaw smooth crab 🦀 এর জন্য তৈরি হয়েছিল, একটি দ্রুত এবং দক্ষ AI সহকারী। Argenis De La Rosa এবং সম্প্রদায় দ্বারা নির্মিত।
- [zeroclawlabs.ai](https://zeroclawlabs.ai)
- [@zeroclawlabs](https://x.com/zeroclawlabs)
## ZeroClaw সমর্থন করুন
ZeroClaw আপনার কাজে সাহায্য করলে এবং আপনি চলমান উন্নয়ন সমর্থন করতে চাইলে, এখানে দান করতে পারেন:
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
### 🙏 বিশেষ ধন্যবাদ
যে সম্প্রদায় এবং প্রতিষ্ঠানগুলো এই ওপেন-সোর্স কাজকে অনুপ্রাণিত এবং শক্তি দেয় তাদের প্রতি আন্তরিক ধন্যবাদ:
- **Harvard University** — বৌদ্ধিক কৌতূহল লালন এবং সম্ভাবনার সীমানা প্রসারিত করার জন্য।
- **MIT** — খোলা জ্ঞান, ওপেন সোর্স, এবং প্রযুক্তি সবার জন্য অ্যাক্সেসযোগ্য হওয়া উচিত এই বিশ্বাসের চ্যাম্পিয়ন হওয়ার জন্য।
- **Sundai Club** — সম্প্রদায়, শক্তি, এবং গুরুত্বপূর্ণ জিনিস তৈরির অদম্য চেষ্টার জন্য।
- **বিশ্ব এবং তার বাইরে** 🌍✨ — প্রতিটি অবদানকারী, স্বপ্নদ্রষ্টা, এবং নির্মাতার জন্য যারা ওপেন সোর্সকে ভালোর শক্তি বানাচ্ছে। এটি আপনার জন্য।
আমরা খোলামেলাভাবে তৈরি করছি কারণ সেরা ধারণাগুলো সর্বত্র থেকে আসে। আপনি যদি এটি পড়ছেন, আপনি এর অংশ। স্বাগতম। 🦀❤️
## অবদান ## অবদান
অবদান স্বাগত! অনুগ্রহ করে [অবদান গাইড](CONTRIBUTING.md) পড়ুন। ZeroClaw এ নতুন? [`good first issue`](https://github.com/zeroclaw-labs/zeroclaw/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) লেবেলযুক্ত ইস্যু খুঁজুন — কিভাবে শুরু করতে হয় তা জানতে আমাদের [অবদান গাইড](CONTRIBUTING.md#first-time-contributors) দেখুন। AI/vibe-coded PR স্বাগত! 🤖
[CONTRIBUTING.md](CONTRIBUTING.md) এবং [CLA.md](docs/contributing/cla.md) দেখুন। একটি trait বাস্তবায়ন করুন, PR জমা দিন:
- CI ওয়ার্কফ্লো গাইড: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- নতুন `Provider``src/providers/`
- নতুন `Channel``src/channels/`
- নতুন `Observer``src/observability/`
- নতুন `Tool``src/tools/`
- নতুন `Memory``src/memory/`
- নতুন `Tunnel``src/tunnel/`
- নতুন `Peripheral``src/peripherals/`
- নতুন `Skill``~/.zeroclaw/workspace/skills/<name>/`
<!-- BEGIN:RECENT_CONTRIBUTORS -->
<!-- END:RECENT_CONTRIBUTORS -->
## ⚠️ অফিসিয়াল রিপোজিটরি এবং ছদ্মবেশ সতর্কতা
**এটিই একমাত্র অফিসিয়াল ZeroClaw রিপোজিটরি:**
> https://github.com/zeroclaw-labs/zeroclaw
অন্য কোনো রিপোজিটরি, সংগঠন, ডোমেইন, বা প্যাকেজ যা "ZeroClaw" বলে দাবি করে বা ZeroClaw Labs এর সাথে সংযুক্তি ইঙ্গিত করে তা **অননুমোদিত এবং এই প্রকল্পের সাথে সম্পর্কিত নয়**। পরিচিত অননুমোদিত ফর্ক [TRADEMARK.md](docs/maintainers/trademark.md) তে তালিকাভুক্ত করা হবে।
আপনি ছদ্মবেশ বা ট্রেডমার্ক অপব্যবহারের সম্মুখীন হলে, অনুগ্রহ করে [একটি ইস্যু খুলুন](https://github.com/zeroclaw-labs/zeroclaw/issues)।
--- ---
## লাইসেন্স ## লাইসেন্স
এই প্রজেক্টটি ডুয়াল লাইসেন্সপ্রাপ্ত: ZeroClaw সর্বোচ্চ উন্মুক্ততা এবং অবদানকারী সুরক্ষার জন্য দ্বৈত-লাইসেন্সপ্রাপ্ত:
- MIT লাইসেন্স | লাইসেন্স | ব্যবহারের ক্ষেত্র |
- Apache লাইসেন্স, সংস্করণ 2.0 |---|---|
| [MIT](LICENSE-MIT) | ওপেন-সোর্স, গবেষণা, একাডেমিক, ব্যক্তিগত ব্যবহার |
| [Apache 2.0](LICENSE-APACHE) | পেটেন্ট সুরক্ষা, প্রাতিষ্ঠানিক, বাণিজ্যিক ডিপ্লয়মেন্ট |
বিস্তারিতের জন্য [LICENSE-APACHE](LICENSE-APACHE) এবং [LICENSE-MIT](LICENSE-MIT) দেখুন। আপনি যেকোনো লাইসেন্স বেছে নিতে পারেন। **অবদানকারীরা স্বয়ংক্রিয়ভাবে উভয়ের অধীনে অধিকার প্রদান করে** — সম্পূর্ণ অবদানকারী চুক্তির জন্য [CLA.md](docs/contributing/cla.md) দেখুন।
### ট্রেডমার্ক
**ZeroClaw** নাম এবং লোগো ZeroClaw Labs এর ট্রেডমার্ক। এই লাইসেন্স সমর্থন বা সংযুক্তি ইঙ্গিত করতে এগুলো ব্যবহারের অনুমতি দেয় না। অনুমোদিত এবং নিষিদ্ধ ব্যবহারের জন্য [TRADEMARK.md](docs/maintainers/trademark.md) দেখুন।
### অবদানকারী সুরক্ষা
- আপনি আপনার অবদানের **কপিরাইট ধরে রাখেন**
- **পেটেন্ট অনুদান** (Apache 2.0) আপনাকে অন্যান্য অবদানকারীদের পেটেন্ট দাবি থেকে রক্ষা করে
- আপনার অবদান কমিট ইতিহাস এবং [NOTICE](NOTICE) এ **স্থায়ীভাবে বিশেষিত**
- অবদান করে কোনো ট্রেডমার্ক অধিকার হস্তান্তরিত হয় না
--- ---
## কমিউনিটি **ZeroClaw** — শূন্য ওভারহেড। শূন্য আপস। যেকোনো জায়গায় ডিপ্লয় করুন। যেকিছু বিনিময় করুন। 🦀
- [Telegram](https://t.me/zeroclawlabs) ## অবদানকারীরা
- [Facebook Group](https://www.facebook.com/groups/zeroclaw)
- [WeChat Group](https://zeroclawlabs.cn/group.jpg)
--- <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors">
<img src="https://contrib.rocks/image?repo=zeroclaw-labs/zeroclaw" alt="ZeroClaw contributors" />
</a>
## স্পনসর এই তালিকা GitHub অবদানকারী গ্রাফ থেকে তৈরি হয় এবং স্বয়ংক্রিয়ভাবে আপডেট হয়।
যদি ZeroClaw আপনার জন্য উপযোগী হয়, তবে অনুগ্রহ করে আমাদের একটি কফি কিনতে বিবেচনা করুন: ## স্টার ইতিহাস
[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee)](https://buymeacoffee.com/argenistherose) <p align="center">
<a href="https://www.star-history.com/#zeroclaw-labs/zeroclaw&type=date&legend=top-left">
<!-- BEGIN:RECENT_CONTRIBUTORS --> <picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&theme=dark&legend=top-left" />
### 🌟 Recent Contributors (v0.3.1) <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
3 contributors shipped features, fixes, and improvements in this release cycle: </picture>
</a>
- **Argenis** </p>
- **argenis de la rosa**
- **Claude Opus 4.6**
Thank you to everyone who opened issues, reviewed PRs, translated docs, and helped test. Every contribution matters. 🦀
<!-- END:RECENT_CONTRIBUTORS -->

File diff suppressed because it is too large Load Diff

View File

@ -1,23 +1,29 @@
<p align="center"> <p align="center">
<img src="zeroclaw.png" alt="ZeroClaw" width="200" /> <img src="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/docs/assets/zeroclaw-banner.png" alt="ZeroClaw" width="600" />
</p> </p>
<h1 align="center">ZeroClaw 🦀</h1> <h1 align="center">🦀 ZeroClaw — Personlig AI-assistent</h1>
<p align="center"> <p align="center">
<strong>Nul overhead. Nul kompromis. 100% Rust. 100% Agnostisk.</strong><br> <strong>Nul overhead. Nul kompromis. 100% Rust. 100% Agnostisk.</strong><br>
⚡️ <strong>Kører på $10 hardware med <5MB RAM: Det er 99% mindre hukommelse end OpenClaw og 98% billigere end en Mac mini!</strong> ⚡️ <strong>Korer pa $10 hardware med <5MB RAM: Det er 99% mindre hukommelse end OpenClaw og 98% billigere end en Mac mini!</strong>
</p> </p>
<p align="center"> <p align="center">
<a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a> <a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
<a href="NOTICE"><img src="https://img.shields.io/badge/contributors-27+-green.svg" alt="Contributors" /></a> <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors"><img src="https://img.shields.io/github/contributors/zeroclaw-labs/zeroclaw?color=green" alt="Contributors" /></a>
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a> <a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
<a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a> <a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a>
<a href="https://zeroclawlabs.cn/group.jpg"><img src="https://img.shields.io/badge/WeChat-Group-B7D7A8?logo=wechat&logoColor=white" alt="WeChat Group" /></a> <a href="https://www.facebook.com/groups/zeroclawlabs"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a>
<a href="https://www.xiaohongshu.com/user/profile/67cbfc43000000000d008307?xsec_token=AB73VnYnGNx5y36EtnnZfGmAmS-6Wzv8WMuGpfwfkg6Yc%3D&xsec_source=pc_search"><img src="https://img.shields.io/badge/Xiaohongshu-Official-FF2442?style=flat" alt="Xiaohongshu: Official" /></a> <a href="https://discord.com/invite/wDshRVqRjx"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://t.me/zeroclawlabs"><img src="https://img.shields.io/badge/Telegram-%40zeroclawlabs-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @zeroclawlabs" /></a> <a href="https://www.instagram.com/therealzeroclaw"><img src="https://img.shields.io/badge/Instagram-%40therealzeroclaw-E4405F?style=flat&logo=instagram&logoColor=white" alt="Instagram: @therealzeroclaw" /></a>
<a href="https://www.facebook.com/groups/zeroclaw"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a> <a href="https://www.tiktok.com/@zeroclawlabs"><img src="https://img.shields.io/badge/TikTok-%40zeroclawlabs-000000?style=flat&logo=tiktok&logoColor=white" alt="TikTok: @zeroclawlabs" /></a>
<a href="https://www.rednote.com/user/profile/69b735e6000000002603927e"><img src="https://img.shields.io/badge/RedNote-Official-FF2442?style=flat" alt="RedNote" /></a>
<a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a>
</p>
<p align="center">
Bygget af studerende og medlemmer af Harvard-, MIT- og Sundai.Club-faellesskaberne.
</p> </p>
<p align="center"> <p align="center">
@ -55,149 +61,695 @@
<a href="README.nb.md">🇳🇴 Norsk</a> <a href="README.nb.md">🇳🇴 Norsk</a>
</p> </p>
--- ZeroClaw er en personlig AI-assistent, du korer pa dine egne enheder. Den svarer dig pa de kanaler, du allerede bruger (WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work og flere). Den har et web-dashboard til realtidsstyring og kan forbindes til hardware-periferier (ESP32, STM32, Arduino, Raspberry Pi). Gateway'en er blot kontrolplanet — produktet er assistenten.
<!-- BEGIN:WHATS_NEW --> Hvis du vil have en personlig, enkeltbruger-assistent der foeles lokal, hurtig og altid taendt, er dette den.
### 🚀 What's New in v0.3.1 (March 2026) <p align="center">
<a href="https://zeroclawlabs.ai">Hjemmeside</a> ·
<a href="docs/README.md">Dokumentation</a> ·
<a href="docs/architecture.md">Arkitektur</a> ·
<a href="#hurtig-start-tldr">Kom i gang</a> ·
<a href="#migrering-fra-openclaw">Migrering fra OpenClaw</a> ·
<a href="docs/ops/troubleshooting.md">Fejlsoegning</a> ·
<a href="https://discord.com/invite/wDshRVqRjx">Discord</a>
</p>
| Area | Highlights | > **Anbefalet opsaetning:** kor `zeroclaw onboard` i din terminal. ZeroClaw Onboard guider dig trin for trin gennem opsaetning af gateway, arbejdsomrade, kanaler og udbyder. Det er den anbefalede opsaetningssti og virker pa macOS, Linux og Windows (via WSL2). Ny installation? Start her: [Kom i gang](#hurtig-start-tldr)
|---|---|
| ci | add Termux (aarch64-linux-android) release target |
<!-- END:WHATS_NEW --> ### Abonnementsgodkendelse (OAuth)
## Hvad er ZeroClaw? - **OpenAI Codex** (ChatGPT-abonnement)
- **Gemini** (Google OAuth)
- **Anthropic** (API-noegle eller godkendelsestoken)
ZeroClaw er en letvægts, foranderlig og udvidbar AI-assistent-infrastruktur bygget i Rust. Den forbinder forskellige LLM-udbydere (Anthropic, OpenAI, Google, Ollama osv.) via en samlet grænseflade og understøtter flere kanaler (Telegram, Matrix, CLI osv.). Modelnotat: selvom mange udbydere/modeller understoettes, brug den staerkeste nyeste-generations model tilgaengelig for dig for den bedste oplevelse. Se [Onboarding](#hurtig-start-tldr).
### Nøglefunktioner Modelkonfiguration + CLI: [Udbyderreference](docs/reference/api/providers-reference.md)
Auth-profilrotation (OAuth vs API-noegler) + failover: [Model-failover](docs/reference/api/providers-reference.md)
- **🦀 Skrevet i Rust**: Høj ydeevne, hukommelsessikkerhed og nul-omkostningsabstraktioner ## Installation (anbefalet)
- **🔌 Udbyder-agnostisk**: Understøtter OpenAI, Anthropic, Google Gemini, Ollama og andre
- **📱 Multi-kanal**: Telegram, Matrix (med E2EE), CLI og andre
- **🧠 Pluggbar hukommelse**: SQLite og Markdown-backends
- **🛠️ Udvidbare værktøjer**: Tilføj brugerdefinerede værktøjer nemt
- **🔒 Sikkerhed først**: Omvendt proxy, privatlivs-først design
--- Koerselsmiljoe: Rust stable toolchain. Enkelt binaer, ingen koerselsmiljoafhaengigheder.
## Hurtig Start ### Homebrew (macOS/Linuxbrew)
### Krav ```bash
brew install zeroclaw
- Rust 1.70+ ```
- En LLM-udbyder API-nøgle (Anthropic, OpenAI osv.)
### Et-klik-installation
### Installation
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./install.sh
```
`zeroclaw onboard` koerer automatisk efter installation for at konfigurere dit arbejdsomrade og din udbyder.
## Hurtig start (TL;DR)
Fuld begynderguide (godkendelse, parring, kanaler): [Kom i gang](docs/setup-guides/one-click-bootstrap.md)
```bash
# Installation + onboard
./install.sh --api-key "sk-..." --provider openrouter
# Start gateway'en (webhook-server + web-dashboard)
zeroclaw gateway # standard: 127.0.0.1:42617
zeroclaw gateway --port 0 # tilfaeldig port (sikkerhedshaerdet)
# Tal med assistenten
zeroclaw agent -m "Hello, ZeroClaw!"
# Interaktiv tilstand
zeroclaw agent
# Start fuld autonom koersel (gateway + kanaler + cron + hands)
zeroclaw daemon
# Tjek status
zeroclaw status
# Koer diagnostik
zeroclaw doctor
```
Opgradering? Koer `zeroclaw doctor` efter opdatering.
### Fra kildekode (udvikling)
```bash ```bash
# Klon repository
git clone https://github.com/zeroclaw-labs/zeroclaw.git git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw cd zeroclaw
# Byg cargo build --release --locked
cargo build --release cargo install --path . --force --locked
# Kør zeroclaw onboard
cargo run --release
``` ```
### Med Docker > **Udviklingsfallback (ingen global installation):** praefikser kommandoer med `cargo run --release --` (eksempel: `cargo run --release -- status`).
## Migrering fra OpenClaw
ZeroClaw kan importere dit OpenClaw-arbejdsomrade, hukommelse og konfiguration:
```bash ```bash
docker run -d \ # Forhaandsvisning af hvad der vil blive migreret (sikkert, skrivebeskyttet)
--name zeroclaw \ zeroclaw migrate openclaw --dry-run
-e ANTHROPIC_API_KEY=your_key \
-v zeroclaw-data:/app/data \ # Koer migreringen
zeroclaw/zeroclaw:latest zeroclaw migrate openclaw
``` ```
--- Dette migrerer dine hukommelsesposter, arbejdsomradefiler og konfiguration fra `~/.openclaw/` til `~/.zeroclaw/`. Konfiguration konverteres automatisk fra JSON til TOML.
## Sikkerhedsstandarder (DM-adgang)
ZeroClaw forbinder til rigtige beskedplatforme. Behandl indgaaende DM'er som utrovaerdigt input.
Fuld sikkerhedsguide: [SECURITY.md](SECURITY.md)
Standardadfaerd pa alle kanaler:
- **DM-parring** (standard): ukendte afsendere modtager en kort parringskode, og botten behandler ikke deres besked.
- Godkend med: `zeroclaw pairing approve <channel> <code>` (derefter tilfojes afsenderen til en lokal godkendelsesliste).
- Offentlige indgaaende DM'er kraever et eksplicit opt-in i `config.toml`.
- Koer `zeroclaw doctor` for at afsloere risikable eller forkert konfigurerede DM-politikker.
**Autonominiveauer:**
| Niveau | Adfaerd |
|--------|---------|
| `ReadOnly` | Agenten kan observere men ikke handle |
| `Supervised` (standard) | Agenten handler med godkendelse for mellem/hoej risiko-operationer |
| `Full` | Agenten handler autonomt inden for politikgraenser |
**Sandboxing-lag:** arbejdsomradeisolering, sti-traverseringsblokering, kommandogodkendelseslister, forbudte stier (`/etc`, `/root`, `~/.ssh`), hastighedsbegraensning (maks handlinger/time, omkostninger/dag-lofter).
<!-- BEGIN:WHATS_NEW -->
<!-- END:WHATS_NEW -->
### 📢 Meddelelser
Brug dette board til vigtige meddelelser (aendringsbrydende aendringer, sikkerhedsraadgivning, vedligeholdelsesperioder og udgivelsesblokkeringer).
| Dato (UTC) | Niveau | Meddelelse | Handling |
| ---------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2026-02-19 | _Kritisk_ | Vi er **ikke tilknyttet** `openagen/zeroclaw`, `zeroclaw.org` eller `zeroclaw.net`. Domaenerne `zeroclaw.org` og `zeroclaw.net` peger i oejeblikket pa `openagen/zeroclaw`-forken, og det domaene/repository udgiver sig for at vaere vores officielle hjemmeside/projekt. | Stol ikke pa information, binaerfiler, fundraising eller meddelelser fra disse kilder. Brug kun [dette repository](https://github.com/zeroclaw-labs/zeroclaw) og vores verificerede sociale konti. |
| 2026-02-21 | _Vigtigt_ | Vores officielle hjemmeside er nu live: [zeroclawlabs.ai](https://zeroclawlabs.ai). Tak for din talmodighed, mens vi forberedte lanceringen. Vi ser stadig identitetstyveriforsoeg, sa **tilslut dig ikke** nogen investerings- eller fundraisingaktivitet, der haevder ZeroClaw-navnet, medmindre det er offentliggjort via vores officielle kanaler. | Brug [dette repository](https://github.com/zeroclaw-labs/zeroclaw) som den eneste kilde til sandhed. Foelg [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21), [Facebook (Group)](https://www.facebook.com/groups/zeroclawlabs) og [Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/) for officielle opdateringer. |
| 2026-02-19 | _Vigtigt_ | Anthropic opdaterede vilkaarene for Godkendelse og Legitimationsoplysningsbrug den 2026-02-19. Claude Code OAuth-tokens (Free, Pro, Max) er udelukkende beregnet til Claude Code og Claude.ai; brug af OAuth-tokens fra Claude Free/Pro/Max i ethvert andet produkt, vaerktoej eller tjeneste (inklusive Agent SDK) er ikke tilladt og kan overtraede forbrugervilkaarene. | Undga venligst midlertidigt Claude Code OAuth-integrationer for at forebygge potentielt tab. Original klausul: [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use). |
## Hoejdepunkter
- **Let koerselsmiljoe som standard** — almindelige CLI- og statusarbejdsgange koerer i et hukommelsesfodaftryk pa faa megabytes i release-builds.
- **Omkostningseffektiv udrulning** — designet til $10-kort og smaa cloud-instanser, ingen tunge koerselsmiljoafhaengigheder.
- **Hurtige koldstarter** — enkelt-binaer Rust-koerselsmiljoe holder kommando- og daemon-opstart naesten oejeblikkelig.
- **Portabel arkitektur** — en binaer pa tvaers af ARM, x86 og RISC-V med udskiftelige udbydere/kanaler/vaerktoejer.
- **Lokalt-foerst Gateway** — enkelt kontrolplan for sessioner, kanaler, vaerktoejer, cron, SOPs og haendelser.
- **Multikanal-indbakke** — WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WebSocket og flere.
- **Multi-agent-orkestrering (Hands)** — autonome agentsvaerme, der koerer efter tidsplan og bliver klogere over tid.
- **Standardoperationsprocedurer (SOPs)** — haendelsesdrevet workflowautomatisering med MQTT, webhook, cron og periferitriggere.
- **Web-dashboard** — React 19 + Vite web-UI med realtidschat, hukommelsesbrowser, konfigurationseditor, cron-manager og vaerktoejsinspektoer.
- **Hardware-periferier** — ESP32, STM32 Nucleo, Arduino, Raspberry Pi GPIO via `Peripheral`-trait'et.
- **Foersteklasses vaerktoejer** — shell, file I/O, browser, git, web fetch/search, MCP, Jira, Notion, Google Workspace og 70+ flere.
- **Livscyklushooks** — opfang og modificer LLM-kald, vaerktoejsudfoerelser og beskeder pa hvert trin.
- **Faerdighedsplatform** — medfoelgende, faellesskabs- og arbejdsomraadefaerdigheder med sikkerhedsauditering.
- **Tunnelsupport** — Cloudflare, Tailscale, ngrok, OpenVPN og brugerdefinerede tunneler til fjernadgang.
### Hvorfor hold vaelger ZeroClaw
- **Let som standard:** lille Rust-binaer, hurtig opstart, lavt hukommelsesfodaftryk.
- **Sikkert fra design:** parring, streng sandboxing, eksplicitte godkendelseslister, arbejdsomradeafgraensning.
- **Fuldt udskifteligt:** kernesystemer er traits (providers, channels, tools, memory, tunnels).
- **Ingen laasning:** OpenAI-kompatibel udbydersupport + tilslutbare brugerdefinerede endepunkter.
## Benchmark-overblik (ZeroClaw vs OpenClaw, Reproducerbart)
Lokal maskinens hurtige benchmark (macOS arm64, feb. 2026) normaliseret for 0.8GHz edge-hardware.
| | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 |
| ------------------------- | ------------- | -------------- | --------------- | -------------------- |
| **Sprog** | TypeScript | Python | Go | **Rust** |
| **RAM** | > 1GB | > 100MB | < 10MB | **< 5MB** |
| **Opstart (0.8GHz core)** | > 500s | > 30s | < 1s | **< 10ms** |
| **Binaerstaerrelse** | ~28MB (dist) | N/A (Scripts) | ~8MB | **~8.8 MB** |
| **Omkostning** | Mac Mini $599 | Linux SBC ~$50 | Linux Board $10 | **Enhver hardware $10** |
> Notat: ZeroClaw-resultater er maalt pa release-builds ved brug af `/usr/bin/time -l`. OpenClaw kraever Node.js-koerselsmiljoe (typisk ~390MB ekstra hukommelsesoverhead), mens NanoBot kraever Python-koerselsmiljoe. PicoClaw og ZeroClaw er statiske binaerer. RAM-tallene ovenfor er koerselstidshukommelse; kompileringstidskrav er hoejere.
<p align="center">
<img src="docs/assets/zeroclaw-comparison.jpeg" alt="ZeroClaw vs OpenClaw Comparison" width="800" />
</p>
### Reproducerbar lokal maaling
```bash
cargo build --release
ls -lh target/release/zeroclaw
/usr/bin/time -l target/release/zeroclaw --help
/usr/bin/time -l target/release/zeroclaw status
```
## Alt vi har bygget indtil nu
### Kerneplatform
- Gateway HTTP/WS/SSE-kontrolplan med sessioner, tilstedevaerelse, konfiguration, cron, webhooks, web-dashboard og parring.
- CLI-overflade: `gateway`, `agent`, `onboard`, `doctor`, `status`, `service`, `migrate`, `auth`, `cron`, `channel`, `skills`.
- Agent-orkestreringsloekke med vaerktoejsafsendelse, prompt-konstruktion, beskedklassificering og hukommelsesindlaesning.
- Sessionsmodel med sikkerhedspolitikhaandhaeveelse, autonominiveauer og godkendelsesportering.
- Robust udbyderindpakning med failover, genforsoeg og modelrutering pa tvaers af 20+ LLM-backends.
### Kanaler
Kanaler: WhatsApp (native), Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, DingTalk, Lark, Mattermost, Nextcloud Talk, Nostr, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WATI, Mochat, Linq, Notion, WebSocket, ClawdTalk.
Feature-gated: Matrix (`channel-matrix`), Lark (`channel-lark`), Nostr (`channel-nostr`).
### Web-dashboard
React 19 + Vite 6 + Tailwind CSS 4 web-dashboard serveret direkte fra Gateway'en:
- **Dashboard** — systemoversigt, sundhedsstatus, oppetid, omkostningsovervaagning
- **Agent Chat** — interaktiv chat med agenten
- **Memory** — gennemse og administrer hukommelsesposter
- **Config** — vis og rediger konfiguration
- **Cron** — administrer planlagte opgaver
- **Tools** — gennemse tilgaengelige vaerktoejer
- **Logs** — vis agentaktivitetslogge
- **Cost** — tokenforbrug og omkostningsovervaagning
- **Doctor** — systemsundhedsdiagnostik
- **Integrations** — integrationsstatus og opsaetning
- **Pairing** — enhedsparringsstyring
### Firmware-maal
| Maal | Platform | Formaal |
|------|----------|---------|
| ESP32 | Espressif ESP32 | Tradloes periferiagent |
| ESP32-UI | ESP32 + Display | Agent med visuel graenseflade |
| STM32 Nucleo | STM32 (ARM Cortex-M) | Industriel periferi |
| Arduino | Arduino | Basis sensor-/aktuatorbro |
| Uno Q Bridge | Arduino Uno | Seriel bro til agent |
### Vaerktoejer + automatisering
- **Kerne:** shell, file read/write/edit, git operations, glob search, content search
- **Web:** browser control, web fetch, web search, screenshot, image info, PDF read
- **Integrationer:** Jira, Notion, Google Workspace, Microsoft 365, LinkedIn, Composio, Pushover
- **MCP:** Model Context Protocol tool wrapper + deferred tool sets
- **Planlaegning:** cron add/remove/update/run, schedule tool
- **Hukommelse:** recall, store, forget, knowledge, project intel
- **Avanceret:** delegate (agent-to-agent), swarm, model switch/routing, security ops, cloud ops
- **Hardware:** board info, memory map, memory read (feature-gated)
### Koerselsmiljoe + sikkerhed
- **Autonominiveauer:** ReadOnly, Supervised (standard), Full.
- **Sandboxing:** arbejdsomradeisolering, sti-traverseringsblokering, kommandogodkendelseslister, forbudte stier, Landlock (Linux), Bubblewrap.
- **Hastighedsbegraensning:** maks handlinger pr. time, maks omkostninger pr. dag (konfigurerbart).
- **Godkendelsesportering:** interaktiv godkendelse for mellem/hoej risiko-operationer.
- **E-stop:** noedstopkapabilitet.
- **129+ sikkerhedstests** i automatiseret CI.
### Drift + pakning
- Web-dashboard serveret direkte fra Gateway'en.
- Tunnelsupport: Cloudflare, Tailscale, ngrok, OpenVPN, brugerdefineret kommando.
- Docker-koerselsmiljoetilpasning til containeriseret udfoersel.
- CI/CD: beta (auto on push) → stable (manual dispatch) → Docker, crates.io, Scoop, AUR, Homebrew, tweet.
- Forhaandsbyggede binaerer til Linux (x86_64, aarch64, armv7), macOS (x86_64, aarch64), Windows (x86_64).
## Konfiguration ## Konfiguration
ZeroClaw bruger en YAML-konfigurationsfil. Som standard leder den efter `config.yaml`. Minimal `~/.zeroclaw/config.toml`:
```yaml ```toml
# Standardudbyder default_provider = "anthropic"
provider: anthropic api_key = "sk-ant-..."
# Udbyderkonfiguration
providers:
anthropic:
api_key: ${ANTHROPIC_API_KEY}
model: claude-3-5-sonnet-20241022
openai:
api_key: ${OPENAI_API_KEY}
model: gpt-4o
# Hukommelseskonfiguration
memory:
backend: sqlite
path: data/memory.db
# Kanalkonfiguration
channels:
telegram:
token: ${TELEGRAM_BOT_TOKEN}
``` ```
--- Fuld konfigurationsreference: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md).
### Kanalkonfiguration
**Telegram:**
```toml
[channels.telegram]
bot_token = "123456:ABC-DEF..."
```
**Discord:**
```toml
[channels.discord]
token = "your-bot-token"
```
**Slack:**
```toml
[channels.slack]
bot_token = "xoxb-..."
app_token = "xapp-..."
```
**WhatsApp:**
```toml
[channels.whatsapp]
enabled = true
```
**Matrix:**
```toml
[channels.matrix]
homeserver_url = "https://matrix.org"
username = "@bot:matrix.org"
password = "..."
```
**Signal:**
```toml
[channels.signal]
phone_number = "+1234567890"
```
### Tunnelkonfiguration
```toml
[tunnel]
kind = "cloudflare" # or "tailscale", "ngrok", "openvpn", "custom", "none"
```
Detaljer: [Kanalreference](docs/reference/api/channels-reference.md) · [Konfigurationsreference](docs/reference/api/config-reference.md)
### Koerselsmiljoestoette (aktuel)
- **`native`** (standard) — direkte procesudfoersel, hurtigste sti, ideel til betroede miljoeer.
- **`docker`** — fuld containerisolering, haandhaevede sikkerhedspolitikker, kraever Docker.
Saet `runtime.kind = "docker"` for streng sandboxing eller netvaerksisolering.
## Abonnementsgodkendelse (OpenAI Codex / Claude Code / Gemini)
ZeroClaw understoetter abonnements-native godkendelsesprofiler (flere konti, krypteret i hvile).
- Lagerfil: `~/.zeroclaw/auth-profiles.json`
- Krypteringsnoegle: `~/.zeroclaw/.secret_key`
- Profil-id-format: `<provider>:<profile_name>` (eksempel: `openai-codex:work`)
```bash
# OpenAI Codex OAuth (ChatGPT subscription)
zeroclaw auth login --provider openai-codex --device-code
# Gemini OAuth
zeroclaw auth login --provider gemini --profile default
# Anthropic setup-token
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# Check / refresh / switch profile
zeroclaw auth status
zeroclaw auth refresh --provider openai-codex --profile default
zeroclaw auth use --provider openai-codex --profile work
# Run the agent with subscription auth
zeroclaw agent --provider openai-codex -m "hello"
zeroclaw agent --provider anthropic -m "hello"
```
## Agent-arbejdsomrade + faerdigheder
Arbejdsomraderod: `~/.zeroclaw/workspace/` (konfigurerbart via config).
Injicerede promptfiler:
- `IDENTITY.md` — agentens personlighed og rolle
- `USER.md` — brugerkontekst og praeferencer
- `MEMORY.md` — langsigtede fakta og laerdommer
- `AGENTS.md` — sessionskonventioner og initialiseringsregler
- `SOUL.md` — kerneidentitet og driftsprincipper
Faerdigheder: `~/.zeroclaw/workspace/skills/<skill>/SKILL.md` eller `SKILL.toml`.
```bash
# List installed skills
zeroclaw skills list
# Install from git
zeroclaw skills install https://github.com/user/my-skill.git
# Security audit before install
zeroclaw skills audit https://github.com/user/my-skill.git
# Remove a skill
zeroclaw skills remove my-skill
```
## CLI-kommandoer
```bash
# Arbejdsomraadestyring
zeroclaw onboard # Guidet opsaetningsguide
zeroclaw status # Vis daemon/agent-status
zeroclaw doctor # Koer systemdiagnostik
# Gateway + daemon
zeroclaw gateway # Start gateway-server (127.0.0.1:42617)
zeroclaw daemon # Start fuld autonom koersel
# Agent
zeroclaw agent # Interaktiv chattilstand
zeroclaw agent -m "message" # Enkeltbeskedtilstand
# Servicestyring
zeroclaw service install # Installer som OS-service (launchd/systemd)
zeroclaw service start|stop|restart|status
# Kanaler
zeroclaw channel list # List konfigurerede kanaler
zeroclaw channel doctor # Tjek kanalsundhed
zeroclaw channel bind-telegram 123456789
# Cron + planlaegning
zeroclaw cron list # List planlagte opgaver
zeroclaw cron add "*/5 * * * *" --prompt "Check system health"
zeroclaw cron remove <id>
# Hukommelse
zeroclaw memory list # List hukommelsesposter
zeroclaw memory get <key> # Hent en hukommelse
zeroclaw memory stats # Hukommelsesstatistik
# Godkendelsesprofiler
zeroclaw auth login --provider <name>
zeroclaw auth status
zeroclaw auth use --provider <name> --profile <profile>
# Hardware-periferier
zeroclaw hardware discover # Skan efter tilsluttede enheder
zeroclaw peripheral list # List tilsluttede periferier
zeroclaw peripheral flash # Flash firmware til enhed
# Migrering
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw
# Shell-fuldfoerelser
source <(zeroclaw completions bash)
zeroclaw completions zsh > ~/.zfunc/_zeroclaw
```
Fuld kommandoreference: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
<!-- markdownlint-disable MD001 MD024 -->
## Forudsaetninger
<details>
<summary><strong>Windows</strong></summary>
#### Paakraevet
1. **Visual Studio Build Tools** (giver MSVC-linker og Windows SDK):
```powershell
winget install Microsoft.VisualStudio.2022.BuildTools
```
Under installation (eller via Visual Studio Installer) vaelg workloaden **"Desktop development with C++"**.
2. **Rust toolchain:**
```powershell
winget install Rustlang.Rustup
```
Efter installation, aabn en ny terminal og koer `rustup default stable` for at sikre, at den stabile toolchain er aktiv.
3. **Verificer**, at begge virker:
```powershell
rustc --version
cargo --version
```
#### Valgfrit
- **Docker Desktop** — paakraevet kun ved brug af [Docker sandboxed runtime](#koerselsmiljoestoette-aktuel) (`runtime.kind = "docker"`). Installer via `winget install Docker.DockerDesktop`.
</details>
<details>
<summary><strong>Linux / macOS</strong></summary>
#### Paakraevet
1. **Byggevaerktoejer:**
- **Linux (Debian/Ubuntu):** `sudo apt install build-essential pkg-config`
- **Linux (Fedora/RHEL):** `sudo dnf group install development-tools && sudo dnf install pkg-config`
- **macOS:** Installer Xcode Command Line Tools: `xcode-select --install`
2. **Rust toolchain:**
```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
Se [rustup.rs](https://rustup.rs) for detaljer.
3. **Verificer**, at begge virker:
```bash
rustc --version
cargo --version
```
#### En-linje-installationsprogram
Eller spring trinnene ovenfor over og installer alt (systemafhaengigheder, Rust, ZeroClaw) med en enkelt kommando:
```bash
curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash
```
#### Kompileringsressourcekrav
Bygning fra kildekode kraever flere ressourcer end at koere den resulterende binaer:
| Ressource | Minimum | Anbefalet |
| -------------- | ------- | ----------- |
| **RAM + swap** | 2 GB | 4 GB+ |
| **Ledig disk** | 6 GB | 10 GB+ |
Hvis din vaert er under minimum, brug forhaandsbyggede binaerer:
```bash
./install.sh --prefer-prebuilt
```
For kun-binaer-installation uden kildekodefallback:
```bash
./install.sh --prebuilt-only
```
#### Valgfrit
- **Docker** — paakraevet kun ved brug af [Docker sandboxed runtime](#koerselsmiljoestoette-aktuel) (`runtime.kind = "docker"`). Installer via din pakkehaandtering eller [docker.com](https://docs.docker.com/engine/install/).
> **Notat:** Standard `cargo build --release` bruger `codegen-units=1` for at reducere spidskompileringspresset. For hurtigere builds pa kraftige maskiner, brug `cargo build --profile release-fast`.
</details>
<!-- markdownlint-enable MD001 MD024 -->
### Forhaandsbyggede binaerer
Udgivelsesaktiver udgives for:
- Linux: `x86_64`, `aarch64`, `armv7`
- macOS: `x86_64`, `aarch64`
- Windows: `x86_64`
Download de seneste aktiver fra:
<https://github.com/zeroclaw-labs/zeroclaw/releases/latest>
## Dokumentation ## Dokumentation
For detaljeret dokumentation, se: Brug disse, naar du er forbi onboarding-flowet og vil have den dybere reference.
- [Dokumentationshub](docs/README.md) - Start med [dokumentationsindekset](docs/README.md) til navigation og "hvad er hvor."
- [Kommandoreference](docs/commands-reference.md) - Laes [arkitekturoversigten](docs/architecture.md) for den fulde systemmodel.
- [Udbyderreference](docs/providers-reference.md) - Brug [konfigurationsreferencen](docs/reference/api/config-reference.md), naar du har brug for hver noegle og eksempel.
- [Kanalreference](docs/channels-reference.md) - Koer Gateway'en efter bogen med [driftsrunbooken](docs/ops/operations-runbook.md).
- [Konfigurationsreference](docs/config-reference.md) - Foelg [ZeroClaw Onboard](#hurtig-start-tldr) for en guidet opsaetning.
- Fejlsoeg almindelige fejl med [fejlsoegningsguiden](docs/ops/troubleshooting.md).
- Gennemgaa [sikkerhedsvejledning](docs/security/README.md) foer du eksponerer noget.
--- ### Referencedokumentation
- Dokumentationscentral: [docs/README.md](docs/README.md)
- Samlet indholdsfortegnelse: [docs/SUMMARY.md](docs/SUMMARY.md)
- Kommandoreference: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
- Konfigurationsreference: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
- Udbyderreference: [docs/reference/api/providers-reference.md](docs/reference/api/providers-reference.md)
- Kanalreference: [docs/reference/api/channels-reference.md](docs/reference/api/channels-reference.md)
- Driftsrunbook: [docs/ops/operations-runbook.md](docs/ops/operations-runbook.md)
- Fejlsoegning: [docs/ops/troubleshooting.md](docs/ops/troubleshooting.md)
### Samarbejdsdokumentation
- Bidragsguide: [CONTRIBUTING.md](CONTRIBUTING.md)
- PR-arbejdsgangspolitik: [docs/contributing/pr-workflow.md](docs/contributing/pr-workflow.md)
- CI-arbejdsgangsguide: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Anmelderhaandbog: [docs/contributing/reviewer-playbook.md](docs/contributing/reviewer-playbook.md)
- Sikkerhedsoplysningspolitik: [SECURITY.md](SECURITY.md)
- Dokumentationsskabelon: [docs/contributing/doc-template.md](docs/contributing/doc-template.md)
### Udrulning + drift
- Netvaerksudrulningsguide: [docs/ops/network-deployment.md](docs/ops/network-deployment.md)
- Proxy-agent-haandbog: [docs/ops/proxy-agent-playbook.md](docs/ops/proxy-agent-playbook.md)
- Hardwareguider: [docs/hardware/README.md](docs/hardware/README.md)
## Smooth Crab 🦀
ZeroClaw blev bygget til smooth crab 🦀, en hurtig og effektiv AI-assistent. Bygget af Argenis De La Rosa og faellesskabet.
- [zeroclawlabs.ai](https://zeroclawlabs.ai)
- [@zeroclawlabs](https://x.com/zeroclawlabs)
## Stoet ZeroClaw
Hvis ZeroClaw hjaelper dit arbejde, og du vil stoette den igangvaerende udvikling, kan du donere her:
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
### 🙏 Saerlig tak
En hjertelig tak til de faellesskaber og institutioner, der inspirerer og naerer dette open source-arbejde:
- **Harvard University** — for at fremme intellektuel nysgerrighed og skubbe graenserne for hvad der er muligt.
- **MIT** — for at kaempe for aben viden, open source og troen pa, at teknologi skal vaere tilgaengelig for alle.
- **Sundai Club** — for faellesskabet, energien og den utraettelige drift til at bygge ting, der betyder noget.
- **Verden & Hinsides** 🌍✨ — til enhver bidragyder, droommer og bygger derude, der goer open source til en kraft for det gode. Dette er for dig.
Vi bygger i det aabne, fordi de bedste ideer kommer fra alle steder. Hvis du laeser dette, er du en del af det. Velkommen. 🦀❤️
## Bidrag ## Bidrag
Bidrag er velkomne! Læs venligst [Bidragsguiden](CONTRIBUTING.md). Ny til ZeroClaw? Kig efter issues maerket [`good first issue`](https://github.com/zeroclaw-labs/zeroclaw/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) — se vores [Bidragsguide](CONTRIBUTING.md#first-time-contributors) for at komme i gang. AI/vibe-kodede PR'er velkomne! 🤖
Se [CONTRIBUTING.md](CONTRIBUTING.md) og [CLA.md](docs/contributing/cla.md). Implementer et trait, indsend en PR:
- CI-arbejdsgangsguide: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Ny `Provider``src/providers/`
- Ny `Channel``src/channels/`
- Ny `Observer``src/observability/`
- Nyt `Tool``src/tools/`
- Ny `Memory``src/memory/`
- Ny `Tunnel``src/tunnel/`
- Ny `Peripheral``src/peripherals/`
- Ny `Skill``~/.zeroclaw/workspace/skills/<name>/`
<!-- BEGIN:RECENT_CONTRIBUTORS -->
<!-- END:RECENT_CONTRIBUTORS -->
## ⚠️ Officielt repository og advarsel om identitetstyveri
**Dette er det eneste officielle ZeroClaw-repository:**
> https://github.com/zeroclaw-labs/zeroclaw
Ethvert andet repository, organisation, domaene eller pakke, der haevder at vaere "ZeroClaw" eller antyder tilknytning til ZeroClaw Labs, er **uautoriseret og ikke tilknyttet dette projekt**. Kendte uautoriserede forks vil blive opfoert i [TRADEMARK.md](docs/maintainers/trademark.md).
Hvis du stoeder pa identitetstyveri eller varemaerkemisbrug, bedes du [aabne et issue](https://github.com/zeroclaw-labs/zeroclaw/issues).
--- ---
## Licens ## Licens
Dette projekt er dobbelt-licenseret: ZeroClaw er dobbeltlicenseret for maksimal aabenhed og bidragyderbeskyttelse:
- MIT License | Licens | Anvendelse |
- Apache License, version 2.0 |---|---|
| [MIT](LICENSE-MIT) | Open source, forskning, akademisk, personligt brug |
| [Apache 2.0](LICENSE-APACHE) | Patentbeskyttelse, institutionel, kommerciel udrulning |
Se [LICENSE-APACHE](LICENSE-APACHE) og [LICENSE-MIT](LICENSE-MIT) for detaljer. Du kan vaelge enten licens. **Bidragydere giver automatisk rettigheder under begge** — se [CLA.md](docs/contributing/cla.md) for den fulde bidragsaftale.
### Varemaerke
Navnet **ZeroClaw** og logoet er varemaerker tilhoerende ZeroClaw Labs. Denne licens giver ikke tilladelse til at bruge dem til at antyde stoette eller tilknytning. Se [TRADEMARK.md](docs/maintainers/trademark.md) for tilladte og forbudte anvendelser.
### Bidragyderbeskyttelser
- Du **beholder ophavsretten** til dine bidrag
- **Patentbevilling** (Apache 2.0) beskytter dig mod patentkrav fra andre bidragydere
- Dine bidrag er **permanent attribueret** i commit-historik og [NOTICE](NOTICE)
- Ingen varemaerkerettigheder overfoeres ved at bidrage
--- ---
## Fællesskab **ZeroClaw** — Nul overhead. Nul kompromis. Udrulning overalt. Udskift hvad som helst. 🦀
- [Telegram](https://t.me/zeroclawlabs) ## Bidragydere
- [Facebook Group](https://www.facebook.com/groups/zeroclaw)
- [WeChat Group](https://zeroclawlabs.cn/group.jpg)
--- <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors">
<img src="https://contrib.rocks/image?repo=zeroclaw-labs/zeroclaw" alt="ZeroClaw contributors" />
</a>
## Sponsorer Denne liste genereres fra GitHub-bidragydergrafiken og opdateres automatisk.
Hvis ZeroClaw er nyttigt for dig, overvej venligst at købe os en kaffe: ## Stjernehistorik
[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee)](https://buymeacoffee.com/argenistherose) <p align="center">
<a href="https://www.star-history.com/#zeroclaw-labs/zeroclaw&type=date&legend=top-left">
<!-- BEGIN:RECENT_CONTRIBUTORS --> <picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&theme=dark&legend=top-left" />
### 🌟 Recent Contributors (v0.3.1) <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
3 contributors shipped features, fixes, and improvements in this release cycle: </picture>
</a>
- **Argenis** </p>
- **argenis de la rosa**
- **Claude Opus 4.6**
Thank you to everyone who opened issues, reviewed PRs, translated docs, and helped test. Every contribution matters. 🦀
<!-- END:RECENT_CONTRIBUTORS -->

File diff suppressed because it is too large Load Diff

View File

@ -1,20 +1,29 @@
<p align="center"> <p align="center">
<img src="zeroclaw.png" alt="ZeroClaw" width="200" /> <img src="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/docs/assets/zeroclaw-banner.png" alt="ZeroClaw" width="600" />
</p> </p>
<h1 align="center">ZeroClaw 🦀</h1> <h1 align="center">🦀 ZeroClaw — Προσωπικός Βοηθός Τεχνητής Νοημοσύνης</h1>
<p align="center"> <p align="center">
<strong>Μηδενικό overhead. Μηδενικός συμβιβασμός. 100% Rust. 100% Αγνωστικιστικό.</strong><br> <strong>Μηδενική επιβάρυνση. Μηδενικοί συμβιβασμοί. 100% Rust. 100% Αγνωστικός.</strong><br>
⚡️ <strong>Εκτελείται σε hardware $10 με <5MB RAM: Αυτό είναι 99% λιγότερη μνήμη από το OpenClaw και 98% φθηνότερο από ένα Mac mini!</strong> ⚡️ <strong>Τρέχει σε υλικό $10 με <5MB RAM: Αυτό σημαίνει 99% λιγότερη μνήμη από το OpenClaw και 98% φθηνότερο από ένα Mac mini!</strong>
</p> </p>
<p align="center"> <p align="center">
<a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a> <a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
<a href="NOTICE"><img src="https://img.shields.io/badge/contributors-27+-green.svg" alt="Contributors" /></a> <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors"><img src="https://img.shields.io/github/contributors/zeroclaw-labs/zeroclaw?color=green" alt="Contributors" /></a>
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a> <a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
<a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a> <a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a>
<a href="https://www.facebook.com/groups/zeroclaw"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a> <a href="https://www.facebook.com/groups/zeroclawlabs"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a>
<a href="https://discord.com/invite/wDshRVqRjx"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://www.instagram.com/therealzeroclaw"><img src="https://img.shields.io/badge/Instagram-%40therealzeroclaw-E4405F?style=flat&logo=instagram&logoColor=white" alt="Instagram: @therealzeroclaw" /></a>
<a href="https://www.tiktok.com/@zeroclawlabs"><img src="https://img.shields.io/badge/TikTok-%40zeroclawlabs-000000?style=flat&logo=tiktok&logoColor=white" alt="TikTok: @zeroclawlabs" /></a>
<a href="https://www.rednote.com/user/profile/69b735e6000000002603927e"><img src="https://img.shields.io/badge/RedNote-Official-FF2442?style=flat" alt="RedNote" /></a>
<a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a>
</p>
<p align="center">
Δημιουργήθηκε από φοιτητές και μέλη των κοινοτήτων Harvard, MIT και Sundai.Club.
</p> </p>
<p align="center"> <p align="center">
@ -52,151 +61,695 @@
<a href="README.nb.md">🇳🇴 Norsk</a> <a href="README.nb.md">🇳🇴 Norsk</a>
</p> </p>
--- Το ZeroClaw είναι ένας προσωπικός βοηθός τεχνητής νοημοσύνης που τρέχει στις δικές σας συσκευές. Σας απαντά στα κανάλια που ήδη χρησιμοποιείτε (WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work και περισσότερα). Διαθέτει πίνακα ελέγχου web για έλεγχο σε πραγματικό χρόνο και μπορεί να συνδεθεί με περιφερειακά υλικού (ESP32, STM32, Arduino, Raspberry Pi). Το Gateway είναι απλώς το επίπεδο ελέγχου — το προϊόν είναι ο βοηθός.
<!-- BEGIN:WHATS_NEW --> Αν θέλετε έναν προσωπικό βοηθό ενός χρήστη που αισθάνεται τοπικός, γρήγορος και πάντα ενεργός, αυτό είναι.
### 🚀 What's New in v0.3.1 (March 2026) <p align="center">
<a href="https://zeroclawlabs.ai">Ιστοσελίδα</a> ·
<a href="docs/README.md">Τεκμηρίωση</a> ·
<a href="docs/architecture.md">Αρχιτεκτονική</a> ·
<a href="#γρήγορη-εκκίνηση-tldr">Ξεκινήστε</a> ·
<a href="#μετεγκατάσταση-από-openclaw">Μετεγκατάσταση από OpenClaw</a> ·
<a href="docs/ops/troubleshooting.md">Αντιμετώπιση προβλημάτων</a> ·
<a href="https://discord.com/invite/wDshRVqRjx">Discord</a>
</p>
| Area | Highlights | > **Προτεινόμενη ρύθμιση:** εκτελέστε `zeroclaw onboard` στο τερματικό σας. Το ZeroClaw Onboard σας καθοδηγεί βήμα προς βήμα στη ρύθμιση του gateway, του χώρου εργασίας, των καναλιών και του παρόχου. Είναι η συνιστώμενη διαδρομή ρύθμισης και λειτουργεί σε macOS, Linux και Windows (μέσω WSL2). Νέα εγκατάσταση; Ξεκινήστε εδώ: [Ξεκινήστε](#γρήγορη-εκκίνηση-tldr)
|---|---|
| ci | add Termux (aarch64-linux-android) release target |
<!-- END:WHATS_NEW --> ### Πιστοποίηση Συνδρομής (OAuth)
> **📝 Σημείωση:** Αυτό είναι ένα συνοπτικό README στα ελληνικά. Για πλήρη τεκμηρίωση, ανατρέξτε στο [αγγλικό README](README.md). Οι σύνδεσμοι τεκμηρίωσης παραπέμπουν στην αγγλική τεκμηρίωση. - **OpenAI Codex** (συνδρομή ChatGPT)
- **Gemini** (Google OAuth)
- **Anthropic** (κλειδί API ή token πιστοποίησης)
## Τι είναι το ZeroClaw; Σημείωση μοντέλου: ενώ υποστηρίζονται πολλοί πάροχοι/μοντέλα, για την καλύτερη εμπειρία χρησιμοποιήστε το ισχυρότερο μοντέλο τελευταίας γενιάς που έχετε στη διάθεσή σας. Δείτε [Onboarding](#γρήγορη-εκκίνηση-tldr).
Το ZeroClaw είναι μια ελαφριά, μεταβλητή και επεκτάσιμη υποδομή AI βοηθού χτισμένη σε Rust. Συνδέει διάφορους παρόχους LLM (Anthropic, OpenAI, Google, Ollama, κλπ.) μέσω μιας ενοποιημένης διεπαφής και υποστηρίζει πολλαπλά κανάλια (Telegram, Matrix, CLI, κλπ.). Ρύθμιση μοντέλων + CLI: [Αναφορά παρόχων](docs/reference/api/providers-reference.md)
Εναλλαγή προφίλ πιστοποίησης (OAuth vs κλειδιά API) + failover: [Failover μοντέλων](docs/reference/api/providers-reference.md)
### Κύρια Χαρακτηριστικά ## Εγκατάσταση (συνιστάται)
- **🦀 Γραμμένο σε Rust**: Υψηλή απόδοση, ασφάλεια μνήμης και αφαιρέσεις μηδενικού κόστους Χρόνος εκτέλεσης: Rust stable toolchain. Ένα μόνο δυαδικό αρχείο, χωρίς εξαρτήσεις χρόνου εκτέλεσης.
- **🔌 Αγνωστικιστικό προς παρόχους**: Υποστηρίζει OpenAI, Anthropic, Google Gemini, Ollama και άλλους
- **📱 Πολυκάναλο**: Telegram, Matrix (με E2EE), CLI και άλλα
- **🧠 Προσαρμόσιμη μνήμη**: SQLite και Markdown backends
- **🛠️ Επεκτάσιμα εργαλεία**: Προσθέστε εύκολα προσαρμοσμένα εργαλεία
- **🔒 Ασφάλεια πρώτα**: Αντίστροφος proxy, σχεδιασμός προσανατολισμένος στο απόρρητο
--- ### Homebrew (macOS/Linuxbrew)
## Γρήγορη Εκκίνηση ```bash
brew install zeroclaw
### Απαιτήσεις ```
- Rust 1.70+ ### Εγκατάσταση με ένα κλικ
- Ένα κλειδί API παρόχου LLM (Anthropic, OpenAI, κλπ.)
```bash
### Εγκατάσταση git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./install.sh
```
Το `zeroclaw onboard` εκτελείται αυτόματα μετά την εγκατάσταση για τη ρύθμιση του χώρου εργασίας και του παρόχου.
## Γρήγορη εκκίνηση (TL;DR)
Πλήρης οδηγός για αρχάριους (πιστοποίηση, σύζευξη, κανάλια): [Ξεκινήστε](docs/setup-guides/one-click-bootstrap.md)
```bash
# Εγκατάσταση + onboard
./install.sh --api-key "sk-..." --provider openrouter
# Εκκίνηση του gateway (webhook server + web dashboard)
zeroclaw gateway # προεπιλογή: 127.0.0.1:42617
zeroclaw gateway --port 0 # τυχαία θύρα (ενισχυμένη ασφάλεια)
# Μιλήστε στον βοηθό
zeroclaw agent -m "Hello, ZeroClaw!"
# Διαδραστική λειτουργία
zeroclaw agent
# Εκκίνηση πλήρους αυτόνομου χρόνου εκτέλεσης (gateway + κανάλια + cron + hands)
zeroclaw daemon
# Έλεγχος κατάστασης
zeroclaw status
# Εκτέλεση διαγνωστικών
zeroclaw doctor
```
Αναβάθμιση; Εκτελέστε `zeroclaw doctor` μετά την ενημέρωση.
### Από πηγαίο κώδικα (ανάπτυξη)
```bash ```bash
# Κλωνοποιήστε το repository
git clone https://github.com/zeroclaw-labs/zeroclaw.git git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw cd zeroclaw
# Κατασκευή cargo build --release --locked
cargo build --release cargo install --path . --force --locked
# Εκτέλεση zeroclaw onboard
cargo run --release
``` ```
### Με Docker > **Εναλλακτική ανάπτυξης (χωρίς καθολική εγκατάσταση):** προθέστε τις εντολές με `cargo run --release --` (παράδειγμα: `cargo run --release -- status`).
## Μετεγκατάσταση από OpenClaw
Το ZeroClaw μπορεί να εισάγει τον χώρο εργασίας, τη μνήμη και τη ρύθμιση παραμέτρων του OpenClaw:
```bash ```bash
docker run -d \ # Προεπισκόπηση τι θα μετεγκατασταθεί (ασφαλές, μόνο ανάγνωση)
--name zeroclaw \ zeroclaw migrate openclaw --dry-run
-e ANTHROPIC_API_KEY=your_key \
-v zeroclaw-data:/app/data \ # Εκτέλεση της μετεγκατάστασης
zeroclaw/zeroclaw:latest zeroclaw migrate openclaw
``` ```
--- Αυτό μετεγκαθιστά τις εγγραφές μνήμης, τα αρχεία χώρου εργασίας και τη ρύθμιση παραμέτρων από `~/.openclaw/` σε `~/.zeroclaw/`. Η ρύθμιση μετατρέπεται αυτόματα από JSON σε TOML.
## Ρύθμιση ## Προεπιλογές ασφάλειας (πρόσβαση DM)
Το ZeroClaw χρησιμοποιεί ένα αρχείο ρύθμισης YAML. Από προεπιλογή, αναζητά το `config.yaml`. Το ZeroClaw συνδέεται σε πραγματικές επιφάνειες μηνυμάτων. Αντιμετωπίστε τα εισερχόμενα DM ως μη αξιόπιστη είσοδο.
```yaml Πλήρης οδηγός ασφάλειας: [SECURITY.md](SECURITY.md)
# Προεπιλεγμένος πάροχος
provider: anthropic
# Ρύθμιση παρόχων Προεπιλεγμένη συμπεριφορά σε όλα τα κανάλια:
providers:
anthropic:
api_key: ${ANTHROPIC_API_KEY}
model: claude-3-5-sonnet-20241022
openai:
api_key: ${OPENAI_API_KEY}
model: gpt-4o
# Ρύθμιση μνήμης - **Σύζευξη DM** (προεπιλογή): οι άγνωστοι αποστολείς λαμβάνουν έναν σύντομο κωδικό σύζευξης και ο bot δεν επεξεργάζεται το μήνυμά τους.
memory: - Εγκρίνετε με: `zeroclaw pairing approve <channel> <code>` (τότε ο αποστολέας προστίθεται σε τοπική λίστα επιτρεπόμενων).
backend: sqlite - Τα δημόσια εισερχόμενα DM απαιτούν ρητή ενεργοποίηση στο `config.toml`.
path: data/memory.db - Εκτελέστε `zeroclaw doctor` για να εντοπίσετε επικίνδυνες ή εσφαλμένες πολιτικές DM.
# Ρύθμιση καναλιών **Επίπεδα αυτονομίας:**
channels:
telegram: | Επίπεδο | Συμπεριφορά |
token: ${TELEGRAM_BOT_TOKEN} |---------|-------------|
| `ReadOnly` | Ο πράκτορας μπορεί να παρατηρεί αλλά όχι να ενεργεί |
| `Supervised` (προεπιλογή) | Ο πράκτορας ενεργεί με έγκριση για λειτουργίες μεσαίου/υψηλού κινδύνου |
| `Full` | Ο πράκτορας ενεργεί αυτόνομα εντός ορίων πολιτικής |
**Επίπεδα sandboxing:** απομόνωση χώρου εργασίας, αποκλεισμός διέλευσης διαδρομής, λίστες επιτρεπόμενων εντολών, απαγορευμένες διαδρομές (`/etc`, `/root`, `~/.ssh`), περιορισμός ρυθμού (μέγιστες ενέργειες/ώρα, όρια κόστους/ημέρα).
<!-- BEGIN:WHATS_NEW -->
<!-- END:WHATS_NEW -->
### 📢 Ανακοινώσεις
Χρησιμοποιήστε αυτόν τον πίνακα για σημαντικές ειδοποιήσεις (αλλαγές που σπάνε τη συμβατότητα, συμβουλές ασφαλείας, παράθυρα συντήρησης και αποκλεισμοί έκδοσης).
| Ημερομηνία (UTC) | Επίπεδο | Ειδοποίηση | Ενέργεια |
| ---------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2026-02-19 | _Κρίσιμο_ | **Δεν** είμαστε συνδεδεμένοι με `openagen/zeroclaw`, `zeroclaw.org` ή `zeroclaw.net`. Οι τομείς `zeroclaw.org` και `zeroclaw.net` δείχνουν αυτή τη στιγμή στο fork `openagen/zeroclaw`, και αυτός ο τομέας/αποθετήριο υποδύονται τον επίσημο ιστότοπο/έργο μας. | Μην εμπιστεύεστε πληροφορίες, δυαδικά αρχεία, εκστρατείες χρηματοδότησης ή ανακοινώσεις από αυτές τις πηγές. Χρησιμοποιήστε μόνο [αυτό το αποθετήριο](https://github.com/zeroclaw-labs/zeroclaw) και τους επαληθευμένους λογαριασμούς μας στα μέσα κοινωνικής δικτύωσης. |
| 2026-02-21 | _Σημαντικό_ | Ο επίσημος ιστότοπός μας είναι πλέον ζωντανός: [zeroclawlabs.ai](https://zeroclawlabs.ai). Ευχαριστούμε για την υπομονή σας ενώ ετοιμάζαμε την εκκίνηση. Εξακολουθούμε να βλέπουμε απόπειρες πλαστοπροσωπίας, οπότε **μην** συμμετέχετε σε καμία επενδυτική ή χρηματοδοτική δραστηριότητα που ισχυρίζεται το όνομα ZeroClaw εκτός αν δημοσιεύεται μέσω των επίσημων καναλιών μας. | Χρησιμοποιήστε [αυτό το αποθετήριο](https://github.com/zeroclaw-labs/zeroclaw) ως τη μοναδική πηγή αλήθειας. Ακολουθήστε [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21), [Facebook (Group)](https://www.facebook.com/groups/zeroclawlabs) και [Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/) για επίσημες ενημερώσεις. |
| 2026-02-19 | _Σημαντικό_ | Η Anthropic ενημέρωσε τους Όρους Πιστοποίησης και Χρήσης Διαπιστευτηρίων στις 2026-02-19. Τα OAuth tokens του Claude Code (Free, Pro, Max) προορίζονται αποκλειστικά για το Claude Code και το Claude.ai· η χρήση OAuth tokens από Claude Free/Pro/Max σε οποιοδήποτε άλλο προϊόν, εργαλείο ή υπηρεσία (συμπεριλαμβανομένου του Agent SDK) δεν επιτρέπεται και ενδέχεται να παραβιάζει τους Όρους Χρήσης Καταναλωτή. | Παρακαλούμε αποφύγετε προσωρινά τις ενσωματώσεις Claude Code OAuth για να αποτρέψετε πιθανή απώλεια. Αρχική ρήτρα: [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use). |
## Χαρακτηριστικά
- **Ελαφρύς χρόνος εκτέλεσης από προεπιλογή**οι συνήθεις ροές εργασίας CLI και κατάστασης τρέχουν σε φάκελο μνήμης λίγων megabyte σε release builds.
- **Οικονομική ανάπτυξη** — σχεδιασμένο για πλακέτες $10 και μικρές cloud instances, χωρίς βαριές εξαρτήσεις χρόνου εκτέλεσης.
- **Γρήγορες κρύες εκκινήσεις**ο χρόνος εκτέλεσης Rust με ένα δυαδικό αρχείο κρατά την εκκίνηση εντολών και daemon σχεδόν στιγμιαία.
- **Φορητή αρχιτεκτονική** — ένα δυαδικό αρχείο σε ARM, x86 και RISC-V με εναλλάξιμους παρόχους/κανάλια/εργαλεία.
- **Τοπικό-πρώτα Gateway** — ένα μόνο επίπεδο ελέγχου για sessions, κανάλια, εργαλεία, cron, SOPs και events.
- **Εισερχόμενα πολλαπλών καναλιών** — WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WebSocket και περισσότερα.
- **Ενορχήστρωση πολλαπλών πρακτόρων (Hands)** — αυτόνομα σμήνη πρακτόρων που τρέχουν σε πρόγραμμα και γίνονται πιο έξυπνα με τον χρόνο.
- **Τυπικές Διαδικασίες Λειτουργίας (SOPs)** — αυτοματοποίηση ροών εργασίας βάσει γεγονότων με MQTT, webhook, cron και triggers περιφερειακών.
- **Πίνακας ελέγχου Web** — React 19 + Vite web UI με συνομιλία σε πραγματικό χρόνο, περιηγητή μνήμης, επεξεργαστή ρυθμίσεων, διαχειριστή cron και επιθεωρητή εργαλείων.
- **Περιφερειακά υλικού** — ESP32, STM32 Nucleo, Arduino, Raspberry Pi GPIO μέσω του trait `Peripheral`.
- **Εργαλεία πρώτης κατηγορίας** — shell, file I/O, browser, git, web fetch/search, MCP, Jira, Notion, Google Workspace και 70+ ακόμη.
- **Hooks κύκλου ζωής** — παρεμβολή και τροποποίηση κλήσεων LLM, εκτελέσεων εργαλείων και μηνυμάτων σε κάθε στάδιο.
- **Πλατφόρμα δεξιοτήτων** — ενσωματωμένες, κοινοτικές και δεξιότητες χώρου εργασίας με έλεγχο ασφαλείας.
- **Υποστήριξη tunnel** — Cloudflare, Tailscale, ngrok, OpenVPN και custom tunnels για απομακρυσμένη πρόσβαση.
### Γιατί οι ομάδες επιλέγουν το ZeroClaw
- **Ελαφρύ από προεπιλογή:** μικρό δυαδικό αρχείο Rust, γρήγορη εκκίνηση, χαμηλό αποτύπωμα μνήμης.
- **Ασφαλές από σχεδιασμό:** σύζευξη, αυστηρό sandboxing, ρητές λίστες επιτρεπόμενων, οριοθέτηση χώρου εργασίας.
- **Πλήρως εναλλάξιμο:** τα βασικά συστήματα είναι traits (providers, channels, tools, memory, tunnels).
- **Χωρίς εγκλωβισμό:** υποστήριξη παρόχου συμβατού με OpenAI + pluggable custom endpoints.
## Στιγμιότυπο Benchmark (ZeroClaw vs OpenClaw, Αναπαραγώγιμο)
Γρήγορο benchmark τοπικού μηχανήματος (macOS arm64, Φεβ 2026) κανονικοποιημένο για υλικό edge 0.8GHz.
| | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 |
| ------------------------- | ------------- | -------------- | --------------- | -------------------- |
| **Γλώσσα** | TypeScript | Python | Go | **Rust** |
| **RAM** | > 1GB | > 100MB | < 10MB | **< 5MB** |
| **Εκκίνηση (0.8GHz core)** | > 500s | > 30s | < 1s | **< 10ms** |
| **Μέγεθος δυαδικού** | ~28MB (dist) | N/A (Scripts) | ~8MB | **~8.8 MB** |
| **Κόστος** | Mac Mini $599 | Linux SBC ~$50 | Linux Board $10 | **Οποιοδήποτε υλικό $10** |
> Σημειώσεις: Τα αποτελέσματα του ZeroClaw μετρήθηκαν σε release builds χρησιμοποιώντας `/usr/bin/time -l`. Το OpenClaw απαιτεί Node.js runtime (τυπικά ~390MB επιπλέον επιβάρυνση μνήμης), ενώ το NanoBot απαιτεί Python runtime. Τα PicoClaw και ZeroClaw είναι στατικά δυαδικά. Τα στοιχεία RAM παραπάνω αφορούν μνήμη χρόνου εκτέλεσης· οι απαιτήσεις μεταγλώττισης κατά τον χρόνο κατασκευής είναι υψηλότερες.
<p align="center">
<img src="docs/assets/zeroclaw-comparison.jpeg" alt="ZeroClaw vs OpenClaw Comparison" width="800" />
</p>
### Αναπαραγώγιμη τοπική μέτρηση
```bash
cargo build --release
ls -lh target/release/zeroclaw
/usr/bin/time -l target/release/zeroclaw --help
/usr/bin/time -l target/release/zeroclaw status
``` ```
--- ## Όλα όσα δημιουργήσαμε μέχρι τώρα
### Βασική πλατφόρμα
- Επίπεδο ελέγχου Gateway HTTP/WS/SSE με sessions, παρουσία, ρύθμιση, cron, webhooks, web dashboard και σύζευξη.
- Επιφάνεια CLI: `gateway`, `agent`, `onboard`, `doctor`, `status`, `service`, `migrate`, `auth`, `cron`, `channel`, `skills`.
- Βρόχος ενορχήστρωσης πράκτορα με αποστολή εργαλείων, κατασκευή prompt, ταξινόμηση μηνυμάτων και φόρτωση μνήμης.
- Μοντέλο session με επιβολή πολιτικής ασφάλειας, επίπεδα αυτονομίας και πύλη έγκρισης.
- Ανθεκτικό περιτύλιγμα παρόχου με failover, retry και δρομολόγηση μοντέλων σε 20+ backends LLM.
### Κανάλια
Κανάλια: WhatsApp (native), Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, DingTalk, Lark, Mattermost, Nextcloud Talk, Nostr, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WATI, Mochat, Linq, Notion, WebSocket, ClawdTalk.
Με feature-gate: Matrix (`channel-matrix`), Lark (`channel-lark`), Nostr (`channel-nostr`).
### Πίνακας ελέγχου Web
Πίνακας ελέγχου web React 19 + Vite 6 + Tailwind CSS 4 που εξυπηρετείται απευθείας από το Gateway:
- **Dashboard** — επισκόπηση συστήματος, κατάσταση υγείας, uptime, παρακολούθηση κόστους
- **Agent Chat** — διαδραστική συνομιλία με τον πράκτορα
- **Memory** — περιήγηση και διαχείριση εγγραφών μνήμης
- **Config** — προβολή και επεξεργασία ρυθμίσεων
- **Cron** — διαχείριση προγραμματισμένων εργασιών
- **Tools** — περιήγηση διαθέσιμων εργαλείων
- **Logs** — προβολή αρχείων καταγραφής δραστηριότητας πράκτορα
- **Cost** — χρήση tokens και παρακολούθηση κόστους
- **Doctor** — διαγνωστικά υγείας συστήματος
- **Integrations** — κατάσταση ενσωμάτωσης και ρύθμιση
- **Pairing** — διαχείριση σύζευξης συσκευών
### Στόχοι firmware
| Στόχος | Πλατφόρμα | Σκοπός |
|--------|----------|---------|
| ESP32 | Espressif ESP32 | Ασύρματος περιφερειακός πράκτορας |
| ESP32-UI | ESP32 + Display | Πράκτορας με οπτική διεπαφή |
| STM32 Nucleo | STM32 (ARM Cortex-M) | Βιομηχανικό περιφερειακό |
| Arduino | Arduino | Βασική γέφυρα αισθητήρα/ενεργοποιητή |
| Uno Q Bridge | Arduino Uno | Σειριακή γέφυρα προς τον πράκτορα |
### Εργαλεία + αυτοματοποίηση
- **Βασικά:** shell, file read/write/edit, git operations, glob search, content search
- **Web:** browser control, web fetch, web search, screenshot, image info, PDF read
- **Ενσωματώσεις:** Jira, Notion, Google Workspace, Microsoft 365, LinkedIn, Composio, Pushover
- **MCP:** Model Context Protocol tool wrapper + deferred tool sets
- **Προγραμματισμός:** cron add/remove/update/run, schedule tool
- **Μνήμη:** recall, store, forget, knowledge, project intel
- **Προηγμένα:** delegate (agent-to-agent), swarm, model switch/routing, security ops, cloud ops
- **Υλικό:** board info, memory map, memory read (feature-gated)
### Χρόνος εκτέλεσης + ασφάλεια
- **Επίπεδα αυτονομίας:** ReadOnly, Supervised (προεπιλογή), Full.
- **Sandboxing:** απομόνωση χώρου εργασίας, αποκλεισμός διέλευσης διαδρομής, λίστες επιτρεπόμενων εντολών, απαγορευμένες διαδρομές, Landlock (Linux), Bubblewrap.
- **Περιορισμός ρυθμού:** μέγιστες ενέργειες ανά ώρα, μέγιστο κόστος ανά ημέρα (ρυθμιζόμενο).
- **Πύλη έγκρισης:** διαδραστική έγκριση για λειτουργίες μεσαίου/υψηλού κινδύνου.
- **E-stop:** δυνατότητα έκτακτης διακοπής.
- **129+ τεστ ασφαλείας** σε αυτοματοποιημένο CI.
### Λειτουργίες + πακετάρισμα
- Πίνακας ελέγχου web που εξυπηρετείται απευθείας από το Gateway.
- Υποστήριξη tunnel: Cloudflare, Tailscale, ngrok, OpenVPN, custom command.
- Docker runtime adapter για containerized εκτέλεση.
- CI/CD: beta (auto on push) → stable (manual dispatch) → Docker, crates.io, Scoop, AUR, Homebrew, tweet.
- Προκατασκευασμένα δυαδικά για Linux (x86_64, aarch64, armv7), macOS (x86_64, aarch64), Windows (x86_64).
## Ρύθμιση παραμέτρων
Ελάχιστο `~/.zeroclaw/config.toml`:
```toml
default_provider = "anthropic"
api_key = "sk-ant-..."
```
Πλήρης αναφορά ρύθμισης: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md).
### Ρύθμιση καναλιών
**Telegram:**
```toml
[channels.telegram]
bot_token = "123456:ABC-DEF..."
```
**Discord:**
```toml
[channels.discord]
token = "your-bot-token"
```
**Slack:**
```toml
[channels.slack]
bot_token = "xoxb-..."
app_token = "xapp-..."
```
**WhatsApp:**
```toml
[channels.whatsapp]
enabled = true
```
**Matrix:**
```toml
[channels.matrix]
homeserver_url = "https://matrix.org"
username = "@bot:matrix.org"
password = "..."
```
**Signal:**
```toml
[channels.signal]
phone_number = "+1234567890"
```
### Ρύθμιση tunnel
```toml
[tunnel]
kind = "cloudflare" # or "tailscale", "ngrok", "openvpn", "custom", "none"
```
Λεπτομέρειες: [Αναφορά καναλιών](docs/reference/api/channels-reference.md) · [Αναφορά ρυθμίσεων](docs/reference/api/config-reference.md)
### Υποστήριξη χρόνου εκτέλεσης (τρέχουσα)
- **`native`** (προεπιλογή) — άμεση εκτέλεση διεργασίας, ταχύτερη διαδρομή, ιδανική για αξιόπιστα περιβάλλοντα.
- **`docker`** — πλήρης απομόνωση container, επιβαλλόμενες πολιτικές ασφάλειας, απαιτεί Docker.
Ορίστε `runtime.kind = "docker"` για αυστηρό sandboxing ή απομόνωση δικτύου.
## Πιστοποίηση Συνδρομής (OpenAI Codex / Claude Code / Gemini)
Το ZeroClaw υποστηρίζει native προφίλ πιστοποίησης συνδρομής (πολλαπλοί λογαριασμοί, κρυπτογραφημένα σε αδράνεια).
- Αρχείο αποθήκευσης: `~/.zeroclaw/auth-profiles.json`
- Κλειδί κρυπτογράφησης: `~/.zeroclaw/.secret_key`
- Μορφή αναγνωριστικού προφίλ: `<provider>:<profile_name>` (παράδειγμα: `openai-codex:work`)
```bash
# OpenAI Codex OAuth (ChatGPT subscription)
zeroclaw auth login --provider openai-codex --device-code
# Gemini OAuth
zeroclaw auth login --provider gemini --profile default
# Anthropic setup-token
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# Check / refresh / switch profile
zeroclaw auth status
zeroclaw auth refresh --provider openai-codex --profile default
zeroclaw auth use --provider openai-codex --profile work
# Run the agent with subscription auth
zeroclaw agent --provider openai-codex -m "hello"
zeroclaw agent --provider anthropic -m "hello"
```
## Χώρος εργασίας πράκτορα + δεξιότητες
Ρίζα χώρου εργασίας: `~/.zeroclaw/workspace/` (ρυθμιζόμενο μέσω config).
Ενσωματωμένα αρχεία prompt:
- `IDENTITY.md` — προσωπικότητα και ρόλος πράκτορα
- `USER.md` — πλαίσιο χρήστη και προτιμήσεις
- `MEMORY.md` — μακροπρόθεσμα γεγονότα και μαθήματα
- `AGENTS.md` — συμβάσεις session και κανόνες αρχικοποίησης
- `SOUL.md` — βασική ταυτότητα και αρχές λειτουργίας
Δεξιότητες: `~/.zeroclaw/workspace/skills/<skill>/SKILL.md` ή `SKILL.toml`.
```bash
# List installed skills
zeroclaw skills list
# Install from git
zeroclaw skills install https://github.com/user/my-skill.git
# Security audit before install
zeroclaw skills audit https://github.com/user/my-skill.git
# Remove a skill
zeroclaw skills remove my-skill
```
## Εντολές CLI
```bash
# Διαχείριση χώρου εργασίας
zeroclaw onboard # Οδηγός καθοδηγούμενης ρύθμισης
zeroclaw status # Εμφάνιση κατάστασης daemon/agent
zeroclaw doctor # Εκτέλεση διαγνωστικών συστήματος
# Gateway + daemon
zeroclaw gateway # Εκκίνηση gateway server (127.0.0.1:42617)
zeroclaw daemon # Εκκίνηση πλήρους αυτόνομου χρόνου εκτέλεσης
# Πράκτορας
zeroclaw agent # Διαδραστική λειτουργία συνομιλίας
zeroclaw agent -m "message" # Λειτουργία μεμονωμένου μηνύματος
# Διαχείριση υπηρεσίας
zeroclaw service install # Εγκατάσταση ως υπηρεσία OS (launchd/systemd)
zeroclaw service start|stop|restart|status
# Κανάλια
zeroclaw channel list # Λίστα ρυθμισμένων καναλιών
zeroclaw channel doctor # Έλεγχος υγείας καναλιών
zeroclaw channel bind-telegram 123456789
# Cron + προγραμματισμός
zeroclaw cron list # Λίστα προγραμματισμένων εργασιών
zeroclaw cron add "*/5 * * * *" --prompt "Check system health"
zeroclaw cron remove <id>
# Μνήμη
zeroclaw memory list # Λίστα εγγραφών μνήμης
zeroclaw memory get <key> # Ανάκτηση μνήμης
zeroclaw memory stats # Στατιστικά μνήμης
# Προφίλ πιστοποίησης
zeroclaw auth login --provider <name>
zeroclaw auth status
zeroclaw auth use --provider <name> --profile <profile>
# Περιφερειακά υλικού
zeroclaw hardware discover # Σάρωση για συνδεδεμένες συσκευές
zeroclaw peripheral list # Λίστα συνδεδεμένων περιφερειακών
zeroclaw peripheral flash # Flash firmware σε συσκευή
# Μετεγκατάσταση
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw
# Συμπληρώσεις shell
source <(zeroclaw completions bash)
zeroclaw completions zsh > ~/.zfunc/_zeroclaw
```
Πλήρης αναφορά εντολών: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
<!-- markdownlint-disable MD001 MD024 -->
## Προαπαιτούμενα
<details>
<summary><strong>Windows</strong></summary>
#### Απαιτούμενα
1. **Visual Studio Build Tools** (παρέχει τον MSVC linker και το Windows SDK):
```powershell
winget install Microsoft.VisualStudio.2022.BuildTools
```
Κατά την εγκατάσταση (ή μέσω του Visual Studio Installer), επιλέξτε το workload **"Desktop development with C++"**.
2. **Rust toolchain:**
```powershell
winget install Rustlang.Rustup
```
Μετά την εγκατάσταση, ανοίξτε ένα νέο τερματικό και εκτελέστε `rustup default stable` για να βεβαιωθείτε ότι είναι ενεργό το stable toolchain.
3. **Επαλήθευση** ότι λειτουργούν και τα δύο:
```powershell
rustc --version
cargo --version
```
#### Προαιρετικά
- **Docker Desktop** — απαιτείται μόνο αν χρησιμοποιείτε τον [Docker sandboxed runtime](#υποστήριξη-χρόνου-εκτέλεσης-τρέχουσα) (`runtime.kind = "docker"`). Εγκατάσταση μέσω `winget install Docker.DockerDesktop`.
</details>
<details>
<summary><strong>Linux / macOS</strong></summary>
#### Απαιτούμενα
1. **Βασικά εργαλεία κατασκευής:**
- **Linux (Debian/Ubuntu):** `sudo apt install build-essential pkg-config`
- **Linux (Fedora/RHEL):** `sudo dnf group install development-tools && sudo dnf install pkg-config`
- **macOS:** Εγκαταστήστε Xcode Command Line Tools: `xcode-select --install`
2. **Rust toolchain:**
```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
Δείτε [rustup.rs](https://rustup.rs) για λεπτομέρειες.
3. **Επαλήθευση** ότι λειτουργούν και τα δύο:
```bash
rustc --version
cargo --version
```
#### Εγκατάσταση με μία εντολή
Ή παραλείψτε τα παραπάνω βήματα και εγκαταστήστε τα πάντα (εξαρτήσεις συστήματος, Rust, ZeroClaw) με μία εντολή:
```bash
curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash
```
#### Απαιτήσεις πόρων μεταγλώττισης
Η κατασκευή από πηγαίο κώδικα χρειάζεται περισσότερους πόρους από την εκτέλεση του τελικού δυαδικού:
| Πόρος | Ελάχιστο | Συνιστώμενο |
| -------------- | ------- | ----------- |
| **RAM + swap** | 2 GB | 4 GB+ |
| **Ελεύθερος δίσκος** | 6 GB | 10 GB+ |
Αν ο host σας είναι κάτω από το ελάχιστο, χρησιμοποιήστε προκατασκευασμένα δυαδικά:
```bash
./install.sh --prefer-prebuilt
```
Για εγκατάσταση αποκλειστικά δυαδικού χωρίς εναλλακτική πηγαίου κώδικα:
```bash
./install.sh --prebuilt-only
```
#### Προαιρετικά
- **Docker** — απαιτείται μόνο αν χρησιμοποιείτε τον [Docker sandboxed runtime](#υποστήριξη-χρόνου-εκτέλεσης-τρέχουσα) (`runtime.kind = "docker"`). Εγκατάσταση μέσω του package manager σας ή [docker.com](https://docs.docker.com/engine/install/).
> **Σημείωση:** Η προεπιλεγμένη `cargo build --release` χρησιμοποιεί `codegen-units=1` για μείωση της μέγιστης πίεσης μεταγλώττισης. Για ταχύτερες κατασκευές σε ισχυρά μηχανήματα, χρησιμοποιήστε `cargo build --profile release-fast`.
</details>
<!-- markdownlint-enable MD001 MD024 -->
### Προκατασκευασμένα δυαδικά
Τα assets έκδοσης δημοσιεύονται για:
- Linux: `x86_64`, `aarch64`, `armv7`
- macOS: `x86_64`, `aarch64`
- Windows: `x86_64`
Κατεβάστε τα τελευταία assets από:
<https://github.com/zeroclaw-labs/zeroclaw/releases/latest>
## Τεκμηρίωση ## Τεκμηρίωση
Για λεπτομερή τεκμηρίωση, δείτε: Χρησιμοποιήστε τα όταν έχετε ολοκληρώσει τη ροή onboarding και θέλετε τη βαθύτερη αναφορά.
- [Κόμβος Τεκμηρίωσης](docs/README.md) - Ξεκινήστε με το [ευρετήριο τεκμηρίωσης](docs/README.md) για πλοήγηση και "τι βρίσκεται πού."
- [Αναφορά Εντολών](docs/commands-reference.md) - Διαβάστε την [επισκόπηση αρχιτεκτονικής](docs/architecture.md) για το πλήρες μοντέλο συστήματος.
- [Αναφορά Παρόχων](docs/providers-reference.md) - Χρησιμοποιήστε την [αναφορά ρυθμίσεων](docs/reference/api/config-reference.md) όταν χρειάζεστε κάθε κλειδί και παράδειγμα.
- [Αναφορά Καναλιών](docs/channels-reference.md) - Εκτελέστε το Gateway σύμφωνα με το βιβλίο με το [εγχειρίδιο λειτουργίας](docs/ops/operations-runbook.md).
- [Αναφορά Ρυθμίσεων](docs/config-reference.md) - Ακολουθήστε [ZeroClaw Onboard](#γρήγορη-εκκίνηση-tldr) για καθοδηγούμενη ρύθμιση.
- Αντιμετωπίστε κοινά σφάλματα με τον [οδηγό αντιμετώπισης προβλημάτων](docs/ops/troubleshooting.md).
- Ελέγξτε τις [οδηγίες ασφάλειας](docs/security/README.md) πριν εκθέσετε οτιδήποτε.
--- ### Αναφορά τεκμηρίωσης
- Κόμβος τεκμηρίωσης: [docs/README.md](docs/README.md)
- Ενοποιημένος πίνακας περιεχομένων: [docs/SUMMARY.md](docs/SUMMARY.md)
- Αναφορά εντολών: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
- Αναφορά ρυθμίσεων: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
- Αναφορά παρόχων: [docs/reference/api/providers-reference.md](docs/reference/api/providers-reference.md)
- Αναφορά καναλιών: [docs/reference/api/channels-reference.md](docs/reference/api/channels-reference.md)
- Εγχειρίδιο λειτουργίας: [docs/ops/operations-runbook.md](docs/ops/operations-runbook.md)
- Αντιμετώπιση προβλημάτων: [docs/ops/troubleshooting.md](docs/ops/troubleshooting.md)
### Τεκμηρίωση συνεργασίας
- Οδηγός συνεισφοράς: [CONTRIBUTING.md](CONTRIBUTING.md)
- Πολιτική ροής εργασίας PR: [docs/contributing/pr-workflow.md](docs/contributing/pr-workflow.md)
- Οδηγός ροής εργασίας CI: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Εγχειρίδιο αξιολογητή: [docs/contributing/reviewer-playbook.md](docs/contributing/reviewer-playbook.md)
- Πολιτική αποκάλυψης ασφάλειας: [SECURITY.md](SECURITY.md)
- Πρότυπο τεκμηρίωσης: [docs/contributing/doc-template.md](docs/contributing/doc-template.md)
### Ανάπτυξη + λειτουργίες
- Οδηγός ανάπτυξης δικτύου: [docs/ops/network-deployment.md](docs/ops/network-deployment.md)
- Εγχειρίδιο proxy agent: [docs/ops/proxy-agent-playbook.md](docs/ops/proxy-agent-playbook.md)
- Οδηγοί υλικού: [docs/hardware/README.md](docs/hardware/README.md)
## Smooth Crab 🦀
Το ZeroClaw δημιουργήθηκε για τον smooth crab 🦀, έναν γρήγορο και αποδοτικό βοηθό AI. Δημιουργήθηκε από τον Argenis De La Rosa και την κοινότητα.
- [zeroclawlabs.ai](https://zeroclawlabs.ai)
- [@zeroclawlabs](https://x.com/zeroclawlabs)
## Υποστήριξη ZeroClaw
Αν το ZeroClaw βοηθά τη δουλειά σας και θέλετε να υποστηρίξετε τη συνεχιζόμενη ανάπτυξη, μπορείτε να κάνετε δωρεά εδώ:
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
### 🙏 Ειδικές Ευχαριστίες
Ένα εγκάρδιο ευχαριστώ στις κοινότητες και τα ιδρύματα που εμπνέουν και τροφοδοτούν αυτό το έργο ανοιχτού κώδικα:
- **Harvard University**για την καλλιέργεια πνευματικής περιέργειας και την ώθηση των ορίων του εφικτού.
- **MIT**για την υπεράσπιση της ανοιχτής γνώσης, του ανοιχτού κώδικα και της πεποίθησης ότι η τεχνολογία πρέπει να είναι προσβάσιμη σε όλους.
- **Sundai Club**για την κοινότητα, την ενέργεια και την ακατάπαυστη επιθυμία να χτίζουμε πράγματα που έχουν σημασία.
- **Ο Κόσμος & Πέρα** 🌍✨ — σε κάθε συνεισφέροντα, ονειροπόλο και δημιουργό εκεί έξω που κάνει τον ανοιχτό κώδικα δύναμη για το καλό. Αυτό είναι για εσένα.
Χτίζουμε ανοιχτά γιατί οι καλύτερες ιδέες έρχονται από παντού. Αν διαβάζεις αυτό, είσαι μέρος του. Καλωσήρθες. 🦀❤️
## Συνεισφορά ## Συνεισφορά
Οι συνεισφορές είναι ευπρόσδεκτες! Παρακαλώ διαβάστε τον [Οδηγό Συνεισφοράς](CONTRIBUTING.md). Νέος στο ZeroClaw; Ψάξτε για issues με ετικέτα [`good first issue`](https://github.com/zeroclaw-labs/zeroclaw/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) — δείτε τον [Οδηγό Συνεισφοράς](CONTRIBUTING.md#first-time-contributors) για το πώς να ξεκινήσετε. PR με AI/vibe-coding καλοδεχούμενα! 🤖
Δείτε [CONTRIBUTING.md](CONTRIBUTING.md) και [CLA.md](docs/contributing/cla.md). Υλοποιήστε ένα trait, υποβάλετε ένα PR:
- Οδηγός ροής εργασίας CI: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Νέο `Provider``src/providers/`
- Νέο `Channel``src/channels/`
- Νέο `Observer``src/observability/`
- Νέο `Tool``src/tools/`
- Νέο `Memory``src/memory/`
- Νέο `Tunnel``src/tunnel/`
- Νέο `Peripheral``src/peripherals/`
- Νέο `Skill``~/.zeroclaw/workspace/skills/<name>/`
<!-- BEGIN:RECENT_CONTRIBUTORS -->
<!-- END:RECENT_CONTRIBUTORS -->
## ⚠️ Επίσημο Αποθετήριο & Προειδοποίηση Πλαστοπροσωπίας
**Αυτό είναι το μόνο επίσημο αποθετήριο ZeroClaw:**
> https://github.com/zeroclaw-labs/zeroclaw
Οποιοδήποτε άλλο αποθετήριο, οργανισμός, τομέας ή πακέτο που ισχυρίζεται ότι είναι "ZeroClaw" ή υπονοεί σχέση με τα ZeroClaw Labs είναι **μη εξουσιοδοτημένο και δεν σχετίζεται με αυτό το έργο**. Τα γνωστά μη εξουσιοδοτημένα forks θα αναφέρονται στο [TRADEMARK.md](docs/maintainers/trademark.md).
Αν αντιμετωπίσετε πλαστοπροσωπία ή κατάχρηση εμπορικού σήματος, παρακαλούμε [ανοίξτε ένα issue](https://github.com/zeroclaw-labs/zeroclaw/issues).
--- ---
## Άδεια ## Άδεια
Αυτό το έργο έχει διπλή άδεια: Το ZeroClaw έχει διπλή άδεια για μέγιστη ανοιχτότητα και προστασία συνεισφερόντων:
- MIT License | Άδεια | Περίπτωση χρήσης |
- Apache License, έκδοση 2.0 |---|---|
| [MIT](LICENSE-MIT) | Ανοιχτός κώδικας, έρευνα, ακαδημαϊκή, προσωπική χρήση |
| [Apache 2.0](LICENSE-APACHE) | Προστασία πατεντών, θεσμική, εμπορική ανάπτυξη |
Δείτε τα [LICENSE-APACHE](LICENSE-APACHE) και [LICENSE-MIT](LICENSE-MIT) για λεπτομέρειες. Μπορείτε να επιλέξετε οποιαδήποτε άδεια. **Οι συνεισφέροντες παρέχουν αυτόματα δικαιώματα και στις δύο** — δείτε [CLA.md](docs/contributing/cla.md) για την πλήρη συμφωνία συνεισφοράς.
### Εμπορικό σήμα
Το όνομα **ZeroClaw** και το λογότυπο είναι εμπορικά σήματα της ZeroClaw Labs. Αυτή η άδεια δεν παρέχει δικαίωμα χρήσης τους για να υπονοήσετε υποστήριξη ή σχέση. Δείτε [TRADEMARK.md](docs/maintainers/trademark.md) για επιτρεπόμενες και απαγορευμένες χρήσεις.
### Προστασίες Συνεισφερόντων
- **Διατηρείτε τα πνευματικά δικαιώματα** των συνεισφορών σας
- **Χορήγηση πατεντών** (Apache 2.0) σας προστατεύει από αξιώσεις πατεντών άλλων συνεισφερόντων
- Οι συνεισφορές σας **αποδίδονται μόνιμα** στο ιστορικό commit και στο [NOTICE](NOTICE)
- Δεν μεταβιβάζονται δικαιώματα εμπορικού σήματος με τη συνεισφορά
--- ---
## Κοινότητα **ZeroClaw** — Μηδενική επιβάρυνση. Μηδενικοί συμβιβασμοί. Ανάπτυξη οπουδήποτε. Εναλλαγή οτιδήποτε. 🦀
- [Telegram](https://t.me/zeroclawlabs) ## Συνεισφέροντες
- [Facebook Group](https://www.facebook.com/groups/zeroclaw)
- [WeChat Group](https://zeroclawlabs.cn/group.jpg)
--- <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors">
<img src="https://contrib.rocks/image?repo=zeroclaw-labs/zeroclaw" alt="ZeroClaw contributors" />
</a>
## Χορηγοί Αυτή η λίστα δημιουργείται από το γράφημα συνεισφερόντων του GitHub και ενημερώνεται αυτόματα.
Αν το ZeroClaw είναι χρήσιμο για εσάς, παρακαλώ σκεφτείτε να μας αγοράσετε έναν καφέ: ## Ιστορικό Αστεριών
[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee)](https://buymeacoffee.com/argenistherose) <p align="center">
<a href="https://www.star-history.com/#zeroclaw-labs/zeroclaw&type=date&legend=top-left">
<!-- BEGIN:RECENT_CONTRIBUTORS --> <picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&theme=dark&legend=top-left" />
### 🌟 Recent Contributors (v0.3.1) <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
3 contributors shipped features, fixes, and improvements in this release cycle: </picture>
</a>
- **Argenis** </p>
- **argenis de la rosa**
- **Claude Opus 4.6**
Thank you to everyone who opened issues, reviewed PRs, translated docs, and helped test. Every contribution matters. 🦀
<!-- END:RECENT_CONTRIBUTORS -->

File diff suppressed because it is too large Load Diff

View File

@ -1,23 +1,29 @@
<p align="center"> <p align="center">
<img src="zeroclaw.png" alt="ZeroClaw" width="200" /> <img src="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/docs/assets/zeroclaw-banner.png" alt="ZeroClaw" width="600" />
</p> </p>
<h1 align="center">ZeroClaw 🦀</h1> <h1 align="center">🦀 ZeroClaw — Henkilokohtainen tekoalyavustaja</h1>
<p align="center"> <p align="center">
<strong>Noll overhead. Noll kompromissi. 100% Rust. 100% Agnostinen.</strong><br> <strong>Nolla ylimaaraa. Nolla kompromisseja. 100% Rust. 100% Agnostinen.</strong><br>
⚡️ <strong>Ajaa $10 laitteistolla <5MB RAM:lla: Tämä on 99% vähemmän muistia kuin OpenClaw ja 98% halvempi kuin Mac mini!</strong> ⚡️ <strong>Toimii $10 laitteistolla alle 5MB RAM:lla: Se on 99% vahemman muistia kuin OpenClaw ja 98% halvempaa kuin Mac mini!</strong>
</p> </p>
<p align="center"> <p align="center">
<a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a> <a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
<a href="NOTICE"><img src="https://img.shields.io/badge/contributors-27+-green.svg" alt="Contributors" /></a> <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors"><img src="https://img.shields.io/github/contributors/zeroclaw-labs/zeroclaw?color=green" alt="Contributors" /></a>
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a> <a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
<a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a> <a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a>
<a href="https://zeroclawlabs.cn/group.jpg"><img src="https://img.shields.io/badge/WeChat-Group-B7D7A8?logo=wechat&logoColor=white" alt="WeChat Group" /></a> <a href="https://www.facebook.com/groups/zeroclawlabs"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a>
<a href="https://www.xiaohongshu.com/user/profile/67cbfc43000000000d008307?xsec_token=AB73VnYnGNx5y36EtnnZfGmAmS-6Wzv8WMuGpfwfkg6Yc%3D&xsec_source=pc_search"><img src="https://img.shields.io/badge/Xiaohongshu-Official-FF2442?style=flat" alt="Xiaohongshu: Official" /></a> <a href="https://discord.com/invite/wDshRVqRjx"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://t.me/zeroclawlabs"><img src="https://img.shields.io/badge/Telegram-%40zeroclawlabs-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @zeroclawlabs" /></a> <a href="https://www.instagram.com/therealzeroclaw"><img src="https://img.shields.io/badge/Instagram-%40therealzeroclaw-E4405F?style=flat&logo=instagram&logoColor=white" alt="Instagram: @therealzeroclaw" /></a>
<a href="https://www.facebook.com/groups/zeroclaw"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a> <a href="https://www.tiktok.com/@zeroclawlabs"><img src="https://img.shields.io/badge/TikTok-%40zeroclawlabs-000000?style=flat&logo=tiktok&logoColor=white" alt="TikTok: @zeroclawlabs" /></a>
<a href="https://www.rednote.com/user/profile/69b735e6000000002603927e"><img src="https://img.shields.io/badge/RedNote-Official-FF2442?style=flat" alt="RedNote" /></a>
<a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a>
</p>
<p align="center">
Rakennettu Harvardin, MIT:n ja Sundai.Club-yhteisöjen opiskelijoiden ja jasenien toimesta.
</p> </p>
<p align="center"> <p align="center">
@ -55,149 +61,695 @@
<a href="README.nb.md">🇳🇴 Norsk</a> <a href="README.nb.md">🇳🇴 Norsk</a>
</p> </p>
--- ZeroClaw on henkilokohtainen tekoalyavustaja, jota kaytat omilla laitteillasi. Se vastaa sinulle jo kayttamillasi kanavilla (WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work ja muut). Silla on web-hallintapaneeli reaaliaikaiseen ohjaukseen ja se voi yhdistaa laitteistoperiferioihin (ESP32, STM32, Arduino, Raspberry Pi). Gateway on vain ohjaustaaso — tuote on avustaja.
<!-- BEGIN:WHATS_NEW --> Jos haluat henkilokohtaisen, yhden kayttajan avustajan, joka tuntuu paikalliselta, nopealta ja aina paalla olevalta, tama on se.
### 🚀 What's New in v0.3.1 (March 2026) <p align="center">
<a href="https://zeroclawlabs.ai">Verkkosivusto</a> ·
<a href="docs/README.md">Dokumentaatio</a> ·
<a href="docs/architecture.md">Arkkitehtuuri</a> ·
<a href="#pikaaloitus-tldr">Aloita</a> ·
<a href="#siirtyminen-openclawsta">Siirtyminen OpenClawsta</a> ·
<a href="docs/ops/troubleshooting.md">Vianetsinta</a> ·
<a href="https://discord.com/invite/wDshRVqRjx">Discord</a>
</p>
| Area | Highlights | > **Suositeltu asennus:** suorita `zeroclaw onboard` terminaalissasi. ZeroClaw Onboard opastaa sinut vaihe vaiheelta gatewayn, tyotilan, kanavien ja palveluntarjoajan asennuksessa. Se on suositeltu asennuspolku ja toimii macOS:lla, Linuxilla ja Windowsilla (WSL2:n kautta). Uusi asennus? Aloita tasta: [Aloita](#pikaaloitus-tldr)
|---|---|
| ci | add Termux (aarch64-linux-android) release target |
<!-- END:WHATS_NEW --> ### Tilaustunnistautuminen (OAuth)
## Mikä on ZeroClaw? - **OpenAI Codex** (ChatGPT-tilaus)
- **Gemini** (Google OAuth)
- **Anthropic** (API-avain tai tunnistautumistokeni)
ZeroClaw on kevyt, muokattava ja laajennettava AI-assistentti-infrastruktuuri, joka on rakennettu Rustilla. Se yhdistää eri LLM-palveluntarjoajat (Anthropic, OpenAI, Google, Ollama jne.) yhtenäisen käyttöliittymän kautta ja tukee useita kanavia (Telegram, Matrix, CLI jne.). Mallien huomautus: vaikka monia palveluntarjoajia/malleja tuetaan, parhaan kokemuksen saamiseksi kayta vahvinta saatavilla olevaa uusimman sukupolven mallia. Katso [Onboarding](#pikaaloitus-tldr).
### Keskeiset Ominaisuudet Mallien konfiguraatio + CLI: [Palveluntarjoajien viite](docs/reference/api/providers-reference.md)
Tunnistautumisprofiilin kierto (OAuth vs API-avaimet) + failover: [Mallien failover](docs/reference/api/providers-reference.md)
- **🦀 Kirjoitettu Rustilla**: Korkea suorituskyky, muistiturvallisuus ja nollakustannus-abstraktiot ## Asennus (suositeltu)
- **🔌 Palveluntarjoaja-agnostinen**: Tukee OpenAI, Anthropic, Google Gemini, Ollama ja muita
- **📱 Monikanavainen**: Telegram, Matrix (E2EE:llä), CLI ja muut
- **🧠 Pluggaava muisti**: SQLite ja Markdown-backendit
- **🛠️ Laajennettavat työkalut**: Lisää mukautettuja työkaluja helposti
- **🔒 Turvallisuus edellä**: Käänteinen proxy, yksityisyys-edellä-suunnittelu
--- Ajoymparisto: Rust stable toolchain. Yksi binaari, ei ajoympariston riippuvuuksia.
## Pika-aloitus ### Homebrew (macOS/Linuxbrew)
### Vaatimukset ```bash
brew install zeroclaw
- Rust 1.70+ ```
- LLM-palveluntarjoajan API-avain (Anthropic, OpenAI jne.)
### Yhden napsautuksen asennus
### Asennus
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./install.sh
```
`zeroclaw onboard` suoritetaan automaattisesti asennuksen jalkeen tyotilan ja palveluntarjoajan konfiguroimiseksi.
## Pikaaloitus (TL;DR)
Taysi aloittelijan opas (tunnistautuminen, paritus, kanavat): [Aloita](docs/setup-guides/one-click-bootstrap.md)
```bash
# Asennus + onboard
./install.sh --api-key "sk-..." --provider openrouter
# Kaynnista gateway (webhook-palvelin + web-hallintapaneeli)
zeroclaw gateway # oletus: 127.0.0.1:42617
zeroclaw gateway --port 0 # satunnainen portti (turvallisuuskovennettu)
# Puhu avustajalle
zeroclaw agent -m "Hello, ZeroClaw!"
# Interaktiivinen tila
zeroclaw agent
# Kaynnista taysi autonominen ajoymparisto (gateway + kanavat + cron + hands)
zeroclaw daemon
# Tarkista tila
zeroclaw status
# Suorita diagnostiikka
zeroclaw doctor
```
Paivitat? Suorita `zeroclaw doctor` paivityksen jalkeen.
### Lahdekoodista (kehitys)
```bash ```bash
# Kloonaa repository
git clone https://github.com/zeroclaw-labs/zeroclaw.git git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw cd zeroclaw
# Rakenna cargo build --release --locked
cargo build --release cargo install --path . --force --locked
# Aja zeroclaw onboard
cargo run --release
``` ```
### Dockerilla > **Kehitysvaihtoehto (ei globaalia asennusta):** lisaa komentoihin etuliite `cargo run --release --` (esimerkki: `cargo run --release -- status`).
## Siirtyminen OpenClawsta
ZeroClaw voi tuoda OpenClaw-tyotilasi, muistisi ja maaritykset:
```bash ```bash
docker run -d \ # Esikatsele mita siirretaan (turvallinen, vain luku)
--name zeroclaw \ zeroclaw migrate openclaw --dry-run
-e ANTHROPIC_API_KEY=your_key \
-v zeroclaw-data:/app/data \ # Suorita siirto
zeroclaw/zeroclaw:latest zeroclaw migrate openclaw
``` ```
--- Tama siirtaa muistimerkinnot, tyotilan tiedostot ja maaritykset hakemistosta `~/.openclaw/` hakemistoon `~/.zeroclaw/`. Maaritykset muunnetaan automaattisesti JSON:sta TOML:ksi.
## Konfiguraatio ## Turvallisuuden oletusasetukset (DM-paasy)
ZeroClaw käyttää YAML-konfiguraatiotiedostoa. Oletuksena se etsii `config.yaml`. ZeroClaw yhdistaa todellisiin viestintapintoihin. Kasittele saapuvia DM-viesteja luottamattomana syotteena.
```yaml Taysi turvallisuusopas: [SECURITY.md](SECURITY.md)
# Oletuspalveluntarjoaja
provider: anthropic
# Palveluntarjoajien konfiguraatio Oletuskayttaytyminen kaikilla kanavilla:
providers:
anthropic:
api_key: ${ANTHROPIC_API_KEY}
model: claude-3-5-sonnet-20241022
openai:
api_key: ${OPENAI_API_KEY}
model: gpt-4o
# Muistin konfiguraatio - **DM-paritus** (oletus): tuntemattomat lahettajat saavat lyhyen parituskoodin ja botti ei kasittele heidan viestiaan.
memory: - Hyvaksy komennolla: `zeroclaw pairing approve <channel> <code>` (jonka jalkeen lahettaja lisataan paikalliselle sallittujen listalle).
backend: sqlite - Julkiset saapuvat DM:t vaativat nimenomaisen opt-in-asetuksen `config.toml`-tiedostossa.
path: data/memory.db - Suorita `zeroclaw doctor` tunnistaaksesi riskilliset tai vaarinkonfiguroidut DM-kaytannot.
# Kanavien konfiguraatio **Autonomiatasot:**
channels:
telegram: | Taso | Kayttaytyminen |
token: ${TELEGRAM_BOT_TOKEN} |------|----------------|
| `ReadOnly` | Agentti voi tarkkailla mutta ei toimia |
| `Supervised` (oletus) | Agentti toimii hyvaksynnalla keskitason/korkean riskin toiminnoissa |
| `Full` | Agentti toimii itsenaisesti kaytantorajojen sisalla |
**Sandboxing-kerrokset:** tyotilan eristys, polun lapikulun esto, komentojen sallittujen listat, kielletyt polut (`/etc`, `/root`, `~/.ssh`), nopeusrajoitus (max toiminnot/tunti, kustannus/paiva-rajoitukset).
<!-- BEGIN:WHATS_NEW -->
<!-- END:WHATS_NEW -->
### 📢 Ilmoitukset
Kayta tata taulua tarkeisiin ilmoituksiin (yhteensopivuutta rikkovat muutokset, turvallisuustiedotteet, yllapitoikkunat ja julkaisun estajat).
| Paivamaara (UTC) | Taso | Ilmoitus | Toimenpide |
| ---------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2026-02-19 | _Kriittinen_ | **Emme** ole yhteydessa `openagen/zeroclaw`-, `zeroclaw.org`- tai `zeroclaw.net`-sivustoihin. `zeroclaw.org`- ja `zeroclaw.net`-verkkotunnukset osoittavat talla hetkella `openagen/zeroclaw`-haaraan, ja tuo verkkotunnus/varasto esiintyy virallisen verkkosivustomme/projektimme nimissa. | Ala luota naista lahteista perasin oleviin tietoihin, binaareihin, varainkeruuseen tai ilmoituksiin. Kayta vain [tata varastoa](https://github.com/zeroclaw-labs/zeroclaw) ja vahvistettuja sosiaalisen median tilejamme. |
| 2026-02-21 | _Tarkea_ | Virallinen verkkosivustomme on nyt toiminnassa: [zeroclawlabs.ai](https://zeroclawlabs.ai). Kiitos karsivallisyydestanne julkaisun valmistelun aikana. Nakemme edelleen esiintymisyrityksia, joten **ala** liity mihinkaan sijoitus- tai varainkeruutoimintaan, joka vaittaa ZeroClaw-nimea, ellei se ole julkaistu virallisten kanaviemme kautta. | Kayta [tata varastoa](https://github.com/zeroclaw-labs/zeroclaw) ainoana totuuden lahteena. Seuraa [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21), [Facebook (Group)](https://www.facebook.com/groups/zeroclawlabs) ja [Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/) virallisia paivityksia varten. |
| 2026-02-19 | _Tarkea_ | Anthropic paivitti tunnistautumis- ja tunnistetietojen kaytonehdat 2026-02-19. Claude Code OAuth -tokenit (Free, Pro, Max) on tarkoitettu yksinomaan Claude Codelle ja Claude.ai:lle; OAuth-tokenien kayttaminen Claude Free/Pro/Max -palvelusta missaan muussa tuotteessa, tyokalussa tai palvelussa (mukaan lukien Agent SDK) ei ole sallittua ja voi rikkoa kuluttajakayttoehtoja. | Ole hyva ja valta valikaisesti Claude Code OAuth -integraatioita mahdollisen menetyksen estamiseksi. Alkuperainen lauseke: [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use). |
## Kohokodat
- **Kevyt ajoymparisto oletuksena** — tavalliset CLI- ja tilatyonkulut toimivat muutaman megatavun muistibudjetissa release-buildeissa.
- **Kustannustehokas kayttoönotto** — suunniteltu $10-korteille ja pienille pilvi-instansseille, ilman raskaita ajoympariston riippuvuuksia.
- **Nopeat kylmakaunnistykset** — yhden binaarin Rust-ajoymparisto pitaa komento- ja daemon-kaynnistyksen lahes valittomana.
- **Siirrettava arkkitehtuuri** — yksi binaari ARM-, x86- ja RISC-V-alustoilla vaihdettavilla palveluntarjoajilla/kanavilla/tyokaluilla.
- **Paikallinen-ensin Gateway** — yksi ohjaustaaso istunnoille, kanaville, tyokaluille, cronille, SOP:ille ja tapahtumille.
- **Monikanavainen saapuva** — WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WebSocket ja muut.
- **Moniagentin orkestrointi (Hands)** — autonomiset agenttiparvet, jotka toimivat aikataulutettusti ja alykkyytyvat ajan myota.
- **Vakiotoimintamenettelyt (SOPs)** — tapahtumapohjainen tyonkulun automatisointi MQTT-, webhook-, cron- ja periferia-laukaisijoilla.
- **Web-hallintapaneeli** — React 19 + Vite web-kayttoliittyma reaaliaikaisella chatilla, muistiselaimella, maaritysten muokkaimella, cron-hallinnalla ja tyokalujen tarkastimella.
- **Laitteistoperiferiat** — ESP32, STM32 Nucleo, Arduino, Raspberry Pi GPIO `Peripheral`-traitin kautta.
- **Ensiluokkaiset tyokalut** — shell, file I/O, browser, git, web fetch/search, MCP, Jira, Notion, Google Workspace ja 70+ lisaa.
- **Elinkaarikoukut** — LLM-kutsujen, tyokalujen suoritusten ja viestien sieppaus ja muokkaus joka vaiheessa.
- **Taitoplattformi** — sisaanrakennetut, yhteison ja tyotilan taidot turvallisuustarkastuksella.
- **Tunnelituki** — Cloudflare, Tailscale, ngrok, OpenVPN ja mukautetut tunnelit etapaasyyn.
### Miksi tiimit valitsevat ZeroClaw:n
- **Kevyt oletuksena:** pieni Rust-binaari, nopea kaynnistys, alhainen muistijalanjalki.
- **Turvallinen suunnittelulla:** paritus, tiukka sandboxing, nimenomaiset sallittujen listat, tyotilan rajaus.
- **Taysin vaihdettava:** ydinjarjestelmat ovat traiteja (providers, channels, tools, memory, tunnels).
- **Ei lukkiutumista:** OpenAI-yhteensopiva palveluntarjoajatuki + liitettavat mukautetut paatepisteet.
## Vertailun tilannekuva (ZeroClaw vs OpenClaw, Toistettava)
Paikallisen koneen pikavertailu (macOS arm64, helmi 2026) normalisoitu 0.8GHz reunalaitteistolle.
| | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 |
| ------------------------- | ------------- | -------------- | --------------- | -------------------- |
| **Kieli** | TypeScript | Python | Go | **Rust** |
| **RAM** | > 1GB | > 100MB | < 10MB | **< 5MB** |
| **Kaynnistys (0.8GHz core)** | > 500s | > 30s | < 1s | **< 10ms** |
| **Binaarin koko** | ~28MB (dist) | N/A (Scripts) | ~8MB | **~8.8 MB** |
| **Kustannus** | Mac Mini $599 | Linux SBC ~$50 | Linux Board $10 | **Mika tahansa laitteisto $10** |
> Huomautukset: ZeroClaw-tulokset mitattu release-buildeilla kayttaen `/usr/bin/time -l`. OpenClaw vaatii Node.js-ajoympariston (tyypillisesti ~390MB ylimaaraista muistikuormaa), kun taas NanoBot vaatii Python-ajoympariston. PicoClaw ja ZeroClaw ovat staattisia binaareja. Yllaolevat RAM-luvut ovat ajoaikaista muistia; kaannosaikaiset vaatimukset ovat korkeammat.
<p align="center">
<img src="docs/assets/zeroclaw-comparison.jpeg" alt="ZeroClaw vs OpenClaw Comparison" width="800" />
</p>
### Toistettava paikallinen mittaus
```bash
cargo build --release
ls -lh target/release/zeroclaw
/usr/bin/time -l target/release/zeroclaw --help
/usr/bin/time -l target/release/zeroclaw status
``` ```
--- ## Kaikki mita olemme rakentaneet tahan mennessa
### Ydinplattformi
- Gateway HTTP/WS/SSE -ohjaustaaso istunnoilla, lasnaololla, maarityksilla, cronilla, webhookeilla, web-hallintapaneelilla ja parituksella.
- CLI-pinta: `gateway`, `agent`, `onboard`, `doctor`, `status`, `service`, `migrate`, `auth`, `cron`, `channel`, `skills`.
- Agentin orkestroinnin silmukka tyokalujen lahettamisella, kehotteen rakentamisella, viestien luokittelulla ja muistin lataamisella.
- Istuntomalli turvallisuuskaytannon noudattamisella, autonomiatasoilla ja hyvaksyntaporttauksella.
- Kestava palveluntarjoajan kapselointi failoverilla, uudelleenyrityksella ja mallien reitityksella 20+ LLM-taustalle.
### Kanavat
Kanavat: WhatsApp (native), Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, DingTalk, Lark, Mattermost, Nextcloud Talk, Nostr, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WATI, Mochat, Linq, Notion, WebSocket, ClawdTalk.
Feature-gated: Matrix (`channel-matrix`), Lark (`channel-lark`), Nostr (`channel-nostr`).
### Web-hallintapaneeli
React 19 + Vite 6 + Tailwind CSS 4 web-hallintapaneeli, jota tarjoillaan suoraan Gatewaysta:
- **Dashboard** — jarjestelman yleiskatsaus, terveydentila, kaynnissaoloaika, kustannusten seuranta
- **Agent Chat** — interaktiivinen keskustelu agentin kanssa
- **Memory** — muistimerkintöjen selaus ja hallinta
- **Config** — maaritysten katselu ja muokkaus
- **Cron** — ajastettujen tehtavien hallinta
- **Tools** — kaytettavissa olevien tyokalujen selaus
- **Logs** — agentin toimintalokien katselu
- **Cost** — tokenien kaytto ja kustannusten seuranta
- **Doctor** — jarjestelman terveysdiagnostiikka
- **Integrations** — integraatioiden tila ja asennus
- **Pairing** — laiteparituksen hallinta
### Firmware-kohteet
| Kohde | Alusta | Tarkoitus |
|-------|--------|-----------|
| ESP32 | Espressif ESP32 | Langaton periferia-agentti |
| ESP32-UI | ESP32 + Display | Agentti visuaalisella kayttoliittymalla |
| STM32 Nucleo | STM32 (ARM Cortex-M) | Teollinen periferia |
| Arduino | Arduino | Perusanturi-/toimilaitesilta |
| Uno Q Bridge | Arduino Uno | Sarjasilta agenttiin |
### Tyokalut + automatisointi
- **Ydin:** shell, file read/write/edit, git operations, glob search, content search
- **Web:** browser control, web fetch, web search, screenshot, image info, PDF read
- **Integraatiot:** Jira, Notion, Google Workspace, Microsoft 365, LinkedIn, Composio, Pushover
- **MCP:** Model Context Protocol tool wrapper + deferred tool sets
- **Ajastus:** cron add/remove/update/run, schedule tool
- **Muisti:** recall, store, forget, knowledge, project intel
- **Edistyneet:** delegate (agent-to-agent), swarm, model switch/routing, security ops, cloud ops
- **Laitteisto:** board info, memory map, memory read (feature-gated)
### Ajoymparisto + turvallisuus
- **Autonomiatasot:** ReadOnly, Supervised (oletus), Full.
- **Sandboxing:** tyotilan eristys, polun lapikulun esto, komentojen sallittujen listat, kielletyt polut, Landlock (Linux), Bubblewrap.
- **Nopeusrajoitus:** max toiminnot tunnissa, max kustannus paivassa (konfiguroitavissa).
- **Hyvaksyntaporttaus:** interaktiivinen hyvaksynta keskitason/korkean riskin toiminnoille.
- **E-stop:** hatapysaytysmahdollisuus.
- **129+ turvallisuustestia** automatisoidussa CI:ssa.
### Toiminnot + paketointi
- Web-hallintapaneeli tarjoillaan suoraan Gatewaysta.
- Tunnelituki: Cloudflare, Tailscale, ngrok, OpenVPN, mukautettu komento.
- Docker runtime -adapteri konttiin ajettuun suoritukseen.
- CI/CD: beta (auto on push) → stable (manual dispatch) → Docker, crates.io, Scoop, AUR, Homebrew, tweet.
- Valmiit binaarit Linux (x86_64, aarch64, armv7), macOS (x86_64, aarch64), Windows (x86_64).
## Maaritykset
Minimaalinen `~/.zeroclaw/config.toml`:
```toml
default_provider = "anthropic"
api_key = "sk-ant-..."
```
Taysi maaritysviite: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md).
### Kanavan maaritys
**Telegram:**
```toml
[channels.telegram]
bot_token = "123456:ABC-DEF..."
```
**Discord:**
```toml
[channels.discord]
token = "your-bot-token"
```
**Slack:**
```toml
[channels.slack]
bot_token = "xoxb-..."
app_token = "xapp-..."
```
**WhatsApp:**
```toml
[channels.whatsapp]
enabled = true
```
**Matrix:**
```toml
[channels.matrix]
homeserver_url = "https://matrix.org"
username = "@bot:matrix.org"
password = "..."
```
**Signal:**
```toml
[channels.signal]
phone_number = "+1234567890"
```
### Tunnelin maaritys
```toml
[tunnel]
kind = "cloudflare" # or "tailscale", "ngrok", "openvpn", "custom", "none"
```
Lisatietoja: [Kanavaviite](docs/reference/api/channels-reference.md) · [Maaritysviite](docs/reference/api/config-reference.md)
### Ajoymparistotuki (nykyinen)
- **`native`** (oletus) — suora prosessin suoritus, nopein polku, ihanteellinen luotetuissa ymparistoissa.
- **`docker`** — taysi konttieristys, pakotetut turvallisuuskaytannot, vaatii Dockerin.
Aseta `runtime.kind = "docker"` tiukkaan sandboxingiin tai verkon eristykseen.
## Tilaustunnistautuminen (OpenAI Codex / Claude Code / Gemini)
ZeroClaw tukee tilausnatiiveja tunnistautumisprofiileja (useita tileja, salattu levossa).
- Tallennustiedosto: `~/.zeroclaw/auth-profiles.json`
- Salausavain: `~/.zeroclaw/.secret_key`
- Profiilin tunnistemuoto: `<provider>:<profile_name>` (esimerkki: `openai-codex:work`)
```bash
# OpenAI Codex OAuth (ChatGPT subscription)
zeroclaw auth login --provider openai-codex --device-code
# Gemini OAuth
zeroclaw auth login --provider gemini --profile default
# Anthropic setup-token
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# Check / refresh / switch profile
zeroclaw auth status
zeroclaw auth refresh --provider openai-codex --profile default
zeroclaw auth use --provider openai-codex --profile work
# Run the agent with subscription auth
zeroclaw agent --provider openai-codex -m "hello"
zeroclaw agent --provider anthropic -m "hello"
```
## Agentin tyotila + taidot
Tyotilan juuri: `~/.zeroclaw/workspace/` (konfiguroitavissa maaritysten kautta).
Injektoidut kehotetiedostot:
- `IDENTITY.md` — agentin persoona ja rooli
- `USER.md` — kayttajan konteksti ja mieltymykset
- `MEMORY.md` — pitkaaikaiset tosiasiat ja opit
- `AGENTS.md` — istuntokonventiot ja alustussaannot
- `SOUL.md` — ydinidentiteetti ja toimintaperiaatteet
Taidot: `~/.zeroclaw/workspace/skills/<skill>/SKILL.md` tai `SKILL.toml`.
```bash
# List installed skills
zeroclaw skills list
# Install from git
zeroclaw skills install https://github.com/user/my-skill.git
# Security audit before install
zeroclaw skills audit https://github.com/user/my-skill.git
# Remove a skill
zeroclaw skills remove my-skill
```
## CLI-komennot
```bash
# Tyotilan hallinta
zeroclaw onboard # Opastettu asennusvelho
zeroclaw status # Nayta daemon/agentin tila
zeroclaw doctor # Suorita jarjestelman diagnostiikka
# Gateway + daemon
zeroclaw gateway # Kaynnista gateway-palvelin (127.0.0.1:42617)
zeroclaw daemon # Kaynnista taysi autonominen ajoymparisto
# Agentti
zeroclaw agent # Interaktiivinen keskustelutila
zeroclaw agent -m "message" # Yksittaisen viestin tila
# Palvelun hallinta
zeroclaw service install # Asenna OS-palveluna (launchd/systemd)
zeroclaw service start|stop|restart|status
# Kanavat
zeroclaw channel list # Listaa konfiguroidut kanavat
zeroclaw channel doctor # Tarkista kanavien terveys
zeroclaw channel bind-telegram 123456789
# Cron + ajastus
zeroclaw cron list # Listaa ajastetut tehtavat
zeroclaw cron add "*/5 * * * *" --prompt "Check system health"
zeroclaw cron remove <id>
# Muisti
zeroclaw memory list # Listaa muistimerkinnot
zeroclaw memory get <key> # Hae muisti
zeroclaw memory stats # Muistin tilastot
# Tunnistautumisprofiilit
zeroclaw auth login --provider <name>
zeroclaw auth status
zeroclaw auth use --provider <name> --profile <profile>
# Laitteistoperiferiat
zeroclaw hardware discover # Etsi yhdistettuja laitteita
zeroclaw peripheral list # Listaa yhdistetyt periferiat
zeroclaw peripheral flash # Flash-ohjelma laitteeseen
# Siirto
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw
# Shell-taydennykset
source <(zeroclaw completions bash)
zeroclaw completions zsh > ~/.zfunc/_zeroclaw
```
Taysi komentoreferenssi: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
<!-- markdownlint-disable MD001 MD024 -->
## Esivaatimukset
<details>
<summary><strong>Windows</strong></summary>
#### Vaaditut
1. **Visual Studio Build Tools** (tarjoaa MSVC-linkerin ja Windows SDK:n):
```powershell
winget install Microsoft.VisualStudio.2022.BuildTools
```
Asennuksen aikana (tai Visual Studio Installerin kautta) valitse **"Desktop development with C++"** -tyokuorma.
2. **Rust toolchain:**
```powershell
winget install Rustlang.Rustup
```
Asennuksen jalkeen avaa uusi terminaali ja suorita `rustup default stable` varmistaaksesi, etta vakaa toolchain on aktiivinen.
3. **Vahvista**, etta molemmat toimivat:
```powershell
rustc --version
cargo --version
```
#### Valinnainen
- **Docker Desktop** — vaaditaan vain kaytettaessa [Docker sandboxed runtime](#ajoymparistotuki-nykyinen) (`runtime.kind = "docker"`). Asenna komennolla `winget install Docker.DockerDesktop`.
</details>
<details>
<summary><strong>Linux / macOS</strong></summary>
#### Vaaditut
1. **Kaannostyokalut:**
- **Linux (Debian/Ubuntu):** `sudo apt install build-essential pkg-config`
- **Linux (Fedora/RHEL):** `sudo dnf group install development-tools && sudo dnf install pkg-config`
- **macOS:** Asenna Xcode Command Line Tools: `xcode-select --install`
2. **Rust toolchain:**
```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
Katso [rustup.rs](https://rustup.rs) lisatietoja varten.
3. **Vahvista**, etta molemmat toimivat:
```bash
rustc --version
cargo --version
```
#### Yhden rivin asentaja
Tai ohita yllaolevat vaiheet ja asenna kaikki (jarjestelmariippuvuudet, Rust, ZeroClaw) yhdella komennolla:
```bash
curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash
```
#### Kaannosresurssivaatimukset
Lahdekoodista rakentaminen vaatii enemman resursseja kuin tuloksena olevan binaarin suorittaminen:
| Resurssi | Vahimmais | Suositeltu |
| -------------- | ------- | ----------- |
| **RAM + swap** | 2 GB | 4 GB+ |
| **Vapaa levy** | 6 GB | 10 GB+ |
Jos isantasi on vahimmaisvaatimuksen alla, kayta valmiita binaareja:
```bash
./install.sh --prefer-prebuilt
```
Pelkan binaarin asennukseen ilman lahdekoodi-vaihtoehtoa:
```bash
./install.sh --prebuilt-only
```
#### Valinnainen
- **Docker** — vaaditaan vain kaytettaessa [Docker sandboxed runtime](#ajoymparistotuki-nykyinen) (`runtime.kind = "docker"`). Asenna paketinhallintasi kautta tai [docker.com](https://docs.docker.com/engine/install/).
> **Huomautus:** Oletus `cargo build --release` kayttaa `codegen-units=1` kaannoshuippupaineen vahentamiseksi. Nopeampiin kaanntöihin tehokkailla koneilla kayta `cargo build --profile release-fast`.
</details>
<!-- markdownlint-enable MD001 MD024 -->
### Valmiit binaarit
Julkaisuresurssit julkaistaan seuraaville:
- Linux: `x86_64`, `aarch64`, `armv7`
- macOS: `x86_64`, `aarch64`
- Windows: `x86_64`
Lataa uusimmat resurssit osoitteesta:
<https://github.com/zeroclaw-labs/zeroclaw/releases/latest>
## Dokumentaatio ## Dokumentaatio
Yksityiskohtaista dokumentaatiota varten katso: Kayta naita, kun olet ohittanut onboarding-kulun ja haluat syvemman viitteen.
- [Dokumentaatiokeskus](docs/README.md) - Aloita [dokumentaatioindeksista](docs/README.md) navigointiin ja "mika on missa" -tietoon.
- [Komentojen Viite](docs/commands-reference.md) - Lue [arkkitehtuurin yleiskatsaus](docs/architecture.md) taydelliseen jarjestelmamalliin.
- [Palveluntarjoajien Viite](docs/providers-reference.md) - Kayta [maaritysviitetta](docs/reference/api/config-reference.md), kun tarvitset jokaisen avaimen ja esimerkin.
- [Kanavien Viite](docs/channels-reference.md) - Suorita Gateway kirjan mukaan [kayttokirjalla](docs/ops/operations-runbook.md).
- [Konfiguraation Viite](docs/config-reference.md) - Noudata [ZeroClaw Onboard](#pikaaloitus-tldr) -palvelua opastettuun asennukseen.
- Korjaa yleisia vikoja [vianetsintaoppaalla](docs/ops/troubleshooting.md).
- Tarkista [turvallisuusohjeet](docs/security/README.md) ennen kuin paljastat mitaan.
--- ### Viitedokumentaatio
- Dokumentaatiokeskus: [docs/README.md](docs/README.md)
- Yhtenaistetty sisallysluettelo: [docs/SUMMARY.md](docs/SUMMARY.md)
- Komentoreferenssi: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
- Maaritysviite: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
- Palveluntarjoajien viite: [docs/reference/api/providers-reference.md](docs/reference/api/providers-reference.md)
- Kanavaviite: [docs/reference/api/channels-reference.md](docs/reference/api/channels-reference.md)
- Kayttokirja: [docs/ops/operations-runbook.md](docs/ops/operations-runbook.md)
- Vianetsinta: [docs/ops/troubleshooting.md](docs/ops/troubleshooting.md)
### Yhteistyodokumentaatio
- Osallistumisopas: [CONTRIBUTING.md](CONTRIBUTING.md)
- PR-tyonkulun kaytanto: [docs/contributing/pr-workflow.md](docs/contributing/pr-workflow.md)
- CI-tyonkulun opas: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Arvioijan kasikirja: [docs/contributing/reviewer-playbook.md](docs/contributing/reviewer-playbook.md)
- Turvallisuuden julkistuskaytanto: [SECURITY.md](SECURITY.md)
- Dokumentaatiomalli: [docs/contributing/doc-template.md](docs/contributing/doc-template.md)
### Kayttoönotto + toiminnot
- Verkkokayyttoönotto-opas: [docs/ops/network-deployment.md](docs/ops/network-deployment.md)
- Proxy-agentin kasikirja: [docs/ops/proxy-agent-playbook.md](docs/ops/proxy-agent-playbook.md)
- Laitteisto-oppaat: [docs/hardware/README.md](docs/hardware/README.md)
## Smooth Crab 🦀
ZeroClaw rakennettiin smooth crab 🦀 -kaveria varten, nopea ja tehokas tekoalyavustaja. Rakennettu Argenis De La Rosan ja yhteison toimesta.
- [zeroclawlabs.ai](https://zeroclawlabs.ai)
- [@zeroclawlabs](https://x.com/zeroclawlabs)
## Tue ZeroClaw:ta
Jos ZeroClaw auttaa tyossasi ja haluat tukea jatkuvaa kehitysta, voit lahjoittaa tassa:
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
### 🙏 Erityiskiitokset
Sydamellinen kiitos yhteisöille ja instituutioille, jotka inspiroivat ja ruokkivat tata avoimen lahdekoodin tyota:
- **Harvard University** — alyllisen uteliaisuuden edistamisesta ja mahdollisuuksien rajojen tyontamisesta.
- **MIT** — avoimen tiedon, avoimen lahdekoodin ja uskon puolustamisesta, etta teknologian tulisi olla kaikkien saatavilla.
- **Sundai Club** — yhteisosta, energiasta ja leppymattomasta halusta rakentaa tarkeita asioita.
- **Maailma ja sen tuolla puolen** 🌍✨ — jokaiselle osallistujalle, haaveilijalle ja rakentajalle, joka tekee avoimesta lahdekoodista hyvan voiman. Tama on sinulle.
Rakennamme avoimesti, koska parhaat ideat tulevat kaikkialta. Jos luet taman, olet osa sita. Tervetuloa. 🦀❤️
## Osallistuminen ## Osallistuminen
Osallistumiset ovat tervetulleita! Lue [Osallistumisopas](CONTRIBUTING.md). Uusi ZeroClaw:ssa? Etsi issueita merkinnalla [`good first issue`](https://github.com/zeroclaw-labs/zeroclaw/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) — katso [Osallistumisoppaamme](CONTRIBUTING.md#first-time-contributors) aloittaaksesi. AI/vibe-koodatut PR:t tervetulleita! 🤖
Katso [CONTRIBUTING.md](CONTRIBUTING.md) ja [CLA.md](docs/contributing/cla.md). Toteuta trait, laheta PR:
- CI-tyonkulun opas: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Uusi `Provider``src/providers/`
- Uusi `Channel``src/channels/`
- Uusi `Observer``src/observability/`
- Uusi `Tool``src/tools/`
- Uusi `Memory``src/memory/`
- Uusi `Tunnel``src/tunnel/`
- Uusi `Peripheral``src/peripherals/`
- Uusi `Skill``~/.zeroclaw/workspace/skills/<name>/`
<!-- BEGIN:RECENT_CONTRIBUTORS -->
<!-- END:RECENT_CONTRIBUTORS -->
## ⚠️ Virallinen varasto ja esiintymisvaroitus
**Tama on ainoa virallinen ZeroClaw-varasto:**
> https://github.com/zeroclaw-labs/zeroclaw
Mika tahansa muu varasto, organisaatio, verkkotunnus tai paketti, joka vaittaa olevansa "ZeroClaw" tai viittaa yhteyteen ZeroClaw Labsin kanssa, on **luvaton eika liity tahan projektiin**. Tunnetut luvattomat forkit listataan [TRADEMARK.md](docs/maintainers/trademark.md)-tiedostossa.
Jos kohtaat esiintymista tai tavaramerkin vaarinkayttoa, ole hyva ja [avaa issue](https://github.com/zeroclaw-labs/zeroclaw/issues).
--- ---
## Lisenssi ## Lisenssi
Tämä projekti on kaksoislisensoitu: ZeroClaw on kaksoislisenssoitu maksimaalisen avoimuuden ja osallistujien suojan takaamiseksi:
- MIT License | Lisenssi | Kayttotapaus |
- Apache License, versio 2.0 |---|---|
| [MIT](LICENSE-MIT) | Avoin lahdekoodi, tutkimus, akateeminen, henkilokohtainen kaytto |
| [Apache 2.0](LICENSE-APACHE) | Patenttisuoja, institutionaalinen, kaupallinen kayttoönotto |
Katso [LICENSE-APACHE](LICENSE-APACHE) ja [LICENSE-MIT](LICENSE-MIT) yksityiskohdille. Voit valita kumman tahansa lisenssin. **Osallistujat myontavat automaattisesti oikeudet molempien alla** — katso [CLA.md](docs/contributing/cla.md) tayden osallistujasopimuksen.
### Tavaramerkki
**ZeroClaw**-nimi ja logo ovat ZeroClaw Labsin tavaramerkkeja. Tama lisenssi ei anna lupaa kayttaa niita tuen tai yhteyden vihjamiseen. Katso [TRADEMARK.md](docs/maintainers/trademark.md) sallittujen ja kiellettyjen kayttojen osalta.
### Osallistujien suojat
- **Sailytat tekijanoikeuden** osallistumisiisi
- **Patenttimyonnos** (Apache 2.0) suojaa sinua muiden osallistujien patenttivaatimuksilta
- Osallistumisesi ovat **pysyvasti attribuoitu** commit-historiassa ja [NOTICE](NOTICE)-tiedostossa
- Tavaramerkkioikeuksia ei siirreta osallistumalla
--- ---
## Yhteisö **ZeroClaw** — Nolla ylimaaraa. Nolla kompromisseja. Kayttoönotto minne tahansa. Vaihda mita tahansa. 🦀
- [Telegram](https://t.me/zeroclawlabs) ## Osallistujat
- [Facebook Group](https://www.facebook.com/groups/zeroclaw)
- [WeChat Group](https://zeroclawlabs.cn/group.jpg)
--- <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors">
<img src="https://contrib.rocks/image?repo=zeroclaw-labs/zeroclaw" alt="ZeroClaw contributors" />
</a>
## Sponsorit Tama lista luodaan GitHubin osallistujakaaviosta ja paivittyy automaattisesti.
Jos ZeroClaw on hyödyllinen sinulle, harkitse kahvin ostamista meille: ## Tahtihistoria
[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee)](https://buymeacoffee.com/argenistherose) <p align="center">
<a href="https://www.star-history.com/#zeroclaw-labs/zeroclaw&type=date&legend=top-left">
<!-- BEGIN:RECENT_CONTRIBUTORS --> <picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&theme=dark&legend=top-left" />
### 🌟 Recent Contributors (v0.3.1) <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
3 contributors shipped features, fixes, and improvements in this release cycle: </picture>
</a>
- **Argenis** </p>
- **argenis de la rosa**
- **Claude Opus 4.6**
Thank you to everyone who opened issues, reviewed PRs, translated docs, and helped test. Every contribution matters. 🦀
<!-- END:RECENT_CONTRIBUTORS -->

View File

@ -1,24 +1,29 @@
<p align="center"> <p align="center">
<img src="docs/assets/zeroclaw.png" alt="ZeroClaw" width="200" /> <img src="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/docs/assets/zeroclaw-banner.png" alt="ZeroClaw" width="600" />
</p> </p>
<h1 align="center">ZeroClaw 🦀</h1> <h1 align="center">🦀 ZeroClaw — Assistant Personnel IA</h1>
<p align="center"> <p align="center">
<strong>Zéro surcharge. Zéro compromis. 100% Rust. 100% Agnostique.</strong><br> <strong>Zéro overhead. Zéro compromis. 100% Rust. 100% Agnostique.</strong><br>
⚡️ <strong>Fonctionne sur du matériel à 10$ avec <5 Mo de RAM : C'est 99% de mémoire en moins qu'OpenClaw et 98% moins cher qu'un Mac mini !</strong> ⚡️ <strong>Fonctionne sur du matériel à $10 avec <5Mo de RAM : 99% de mémoire en moins qu'OpenClaw et 98% moins cher qu'un Mac mini !</strong>
</p> </p>
<p align="center"> <p align="center">
<a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="Licence : MIT ou Apache-2.0" /></a> <a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
<a href="NOTICE"><img src="https://img.shields.io/badge/contributors-27+-green.svg" alt="Contributeurs" /></a> <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors"><img src="https://img.shields.io/github/contributors/zeroclaw-labs/zeroclaw?color=green" alt="Contributors" /></a>
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Offrez-moi un café" /></a> <a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
<a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X : @zeroclawlabs" /></a> <a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a>
<a href="https://www.facebook.com/groups/zeroclaw"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a> <a href="https://www.facebook.com/groups/zeroclawlabs"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a>
<a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit : r/zeroclawlabs" /></a> <a href="https://discord.com/invite/wDshRVqRjx"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://www.instagram.com/therealzeroclaw"><img src="https://img.shields.io/badge/Instagram-%40therealzeroclaw-E4405F?style=flat&logo=instagram&logoColor=white" alt="Instagram: @therealzeroclaw" /></a>
<a href="https://www.tiktok.com/@zeroclawlabs"><img src="https://img.shields.io/badge/TikTok-%40zeroclawlabs-000000?style=flat&logo=tiktok&logoColor=white" alt="TikTok: @zeroclawlabs" /></a>
<a href="https://www.rednote.com/user/profile/69b735e6000000002603927e"><img src="https://img.shields.io/badge/RedNote-Official-FF2442?style=flat" alt="RedNote" /></a>
<a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a>
</p> </p>
<p align="center"> <p align="center">
Construit par des étudiants et membres des communautés Harvard, MIT et Sundai.Club. Construit par des étudiants et membres des communautés de Harvard, MIT et Sundai.Club.
</p> </p>
<p align="center"> <p align="center">
@ -56,90 +61,191 @@ Construit par des étudiants et membres des communautés Harvard, MIT et Sundai.
<a href="README.nb.md">🇳🇴 Norsk</a> <a href="README.nb.md">🇳🇴 Norsk</a>
</p> </p>
<p align="center"> ZeroClaw est un assistant personnel IA que vous exécutez sur vos propres appareils. Il vous répond sur les canaux que vous utilisez déjà (WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work et plus). Il dispose d'un tableau de bord web pour le contrôle en temps réel et peut se connecter à des périphériques matériels (ESP32, STM32, Arduino, Raspberry Pi). Le Gateway n'est que le plan de contrôle — le produit est l'assistant.
<a href="#démarrage-rapide">Démarrage</a> |
<a href="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh">Configuration en un clic</a> | Si vous voulez un assistant personnel, mono-utilisateur, qui soit local, rapide et toujours disponible, c'est celui-ci.
<a href="docs/README.md">Hub Documentation</a> |
<a href="docs/SUMMARY.md">Table des matières Documentation</a>
</p>
<p align="center"> <p align="center">
<strong>Accès rapides :</strong> <a href="https://zeroclawlabs.ai">Site web</a> ·
<a href="docs/reference/README.md">Référence</a> · <a href="docs/README.md">Documentation</a> ·
<a href="docs/ops/README.md">Opérations</a> · <a href="docs/architecture.md">Architecture</a> ·
<a href="#démarrage-rapide">Premiers pas</a> ·
<a href="#migration-depuis-openclaw">Migration depuis OpenClaw</a> ·
<a href="docs/ops/troubleshooting.md">Dépannage</a> · <a href="docs/ops/troubleshooting.md">Dépannage</a> ·
<a href="docs/security/README.md">Sécurité</a> · <a href="https://discord.com/invite/wDshRVqRjx">Discord</a>
<a href="docs/hardware/README.md">Matériel</a> ·
<a href="docs/contributing/README.md">Contribuer</a>
</p> </p>
<p align="center"> > **Configuration recommandée :** exécutez `zeroclaw onboard` dans votre terminal. ZeroClaw Onboard vous guide étape par étape dans la configuration du gateway, du workspace, des canaux et du fournisseur. C'est le chemin de configuration recommandé et fonctionne sur macOS, Linux et Windows (via WSL2). Nouvelle installation ? Commencez ici : [Premiers pas](#démarrage-rapide)
<strong>Infrastructure d'assistant IA rapide, légère et entièrement autonome</strong><br />
Déployez n'importe où. Échangez n'importe quoi.
</p>
<p align="center"> ### Authentification par abonnement (OAuth)
ZeroClaw est le <strong>système d'exploitation runtime</strong> pour les workflows agentiques — une infrastructure qui abstrait les modèles, outils, mémoire et exécution pour construire des agents une fois et les exécuter partout.
</p>
<p align="center"><code>Architecture pilotée par traits · runtime sécurisé par défaut · fournisseur/canal/outil interchangeables · tout est pluggable</code></p> - **OpenAI Codex** (abonnement ChatGPT)
- **Gemini** (Google OAuth)
- **Anthropic** (clé API ou jeton d'authentification)
Note sur les modèles : bien que de nombreux fournisseurs/modèles soient supportés, pour la meilleure expérience utilisez le modèle de dernière génération le plus puissant disponible. Voir [Onboarding](#démarrage-rapide).
Configuration des modèles + CLI : [Référence des fournisseurs](docs/reference/api/providers-reference.md)
Rotation des profils d'authentification (OAuth vs clés API) + failover : [Failover des modèles](docs/reference/api/providers-reference.md)
## Installation (recommandée)
Prérequis : toolchain Rust stable. Un seul binaire, aucune dépendance d'exécution.
### Homebrew (macOS/Linuxbrew)
```bash
brew install zeroclaw
```
### Bootstrap en un clic
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./install.sh
```
`zeroclaw onboard` s'exécute automatiquement après l'installation pour configurer votre workspace et fournisseur.
## Démarrage rapide (TL;DR)
Guide complet pour débutants (authentification, appairage, canaux) : [Premiers pas](docs/setup-guides/one-click-bootstrap.md)
```bash
# Installer + onboard
./install.sh --api-key "sk-..." --provider openrouter
# Démarrer le gateway (serveur webhook + tableau de bord web)
zeroclaw gateway # par défaut : 127.0.0.1:42617
zeroclaw gateway --port 0 # port aléatoire (sécurité renforcée)
# Parler à l'assistant
zeroclaw agent -m "Hello, ZeroClaw!"
# Mode interactif
zeroclaw agent
# Démarrer le runtime autonome complet (gateway + canaux + cron + hands)
zeroclaw daemon
# Vérifier le statut
zeroclaw status
# Exécuter les diagnostics
zeroclaw doctor
```
Mise à jour ? Exécutez `zeroclaw doctor` après la mise à jour.
### Depuis le code source (développement)
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
cargo build --release --locked
cargo install --path . --force --locked
zeroclaw onboard
```
> **Alternative pour le développement (sans installation globale) :** préfixez les commandes avec `cargo run --release --` (exemple : `cargo run --release -- status`).
## Migration depuis OpenClaw
ZeroClaw peut importer votre workspace, mémoire et configuration OpenClaw :
```bash
# Aperçu de ce qui sera migré (sûr, lecture seule)
zeroclaw migrate openclaw --dry-run
# Exécuter la migration
zeroclaw migrate openclaw
```
Cela migre vos entrées de mémoire, fichiers du workspace et configuration de `~/.openclaw/` vers `~/.zeroclaw/`. La configuration est convertie de JSON en TOML automatiquement.
## Paramètres de sécurité par défaut (accès DM)
ZeroClaw se connecte à de vraies surfaces de messagerie. Traitez les DM entrants comme des entrées non fiables.
Guide complet de sécurité : [SECURITY.md](SECURITY.md)
Comportement par défaut sur tous les canaux :
- **Appairage DM** (par défaut) : les expéditeurs inconnus reçoivent un court code d'appairage et le bot ne traite pas leur message.
- Approuver avec : `zeroclaw pairing approve <channel> <code>` (l'expéditeur est alors ajouté à une liste d'autorisation locale).
- Les DM publics entrants nécessitent une activation explicite dans `config.toml`.
- Exécutez `zeroclaw doctor` pour détecter les politiques DM risquées ou mal configurées.
**Niveaux d'autonomie :**
| Niveau | Comportement |
|--------|--------------|
| `ReadOnly` | L'agent peut observer mais pas agir |
| `Supervised` (par défaut) | L'agent agit avec approbation pour les opérations à risque moyen/élevé |
| `Full` | L'agent agit de manière autonome dans les limites de la politique |
**Couches de sandboxing :** isolation du workspace, blocage de la traversée de chemins, listes de commandes autorisées, chemins interdits (`/etc`, `/root`, `~/.ssh`), limitation de débit (max actions/heure, plafonds de coût/jour).
<!-- BEGIN:WHATS_NEW --> <!-- BEGIN:WHATS_NEW -->
### 🚀 What's New in v0.3.1 (March 2026)
| Area | Highlights |
|---|---|
| ci | add Termux (aarch64-linux-android) release target |
<!-- END:WHATS_NEW --> <!-- END:WHATS_NEW -->
### 📢 Annonces ### 📢 Annonces
Utilisez ce tableau pour les avis importants (changements incompatibles, avis de sécurité, fenêtres de maintenance et bloqueurs de version). Utilisez ce tableau pour les avis importants (changements incompatibles, avis de sécurité, fenêtres de maintenance et bloqueurs de version).
| Date (UTC) | Niveau | Avis | Action | | Date (UTC) | Niveau | Avis | Action |
| ---------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ---------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2026-02-19 | _Critique_ | Nous ne sommes **pas affiliés** à `openagen/zeroclaw` ou `zeroclaw.org`. Le domaine `zeroclaw.org` pointe actuellement vers le fork `openagen/zeroclaw`, et ce domaine/dépôt usurpe l'identité de notre site web/projet officiel. | Ne faites pas confiance aux informations, binaires, levées de fonds ou annonces provenant de ces sources. Utilisez uniquement [ce dépôt](https://github.com/zeroclaw-labs/zeroclaw) et nos comptes sociaux vérifiés. | | 2026-02-19 | _Critique_ | Nous ne sommes **pas affiliés** à `openagen/zeroclaw`, `zeroclaw.org` ou `zeroclaw.net`. Les domaines `zeroclaw.org` et `zeroclaw.net` pointent actuellement vers le fork `openagen/zeroclaw`, et ce domaine/dépôt usurpent l'identité de notre site web/projet officiel. | Ne faites pas confiance aux informations, binaires, collectes de fonds ou annonces provenant de ces sources. Utilisez uniquement [ce dépôt](https://github.com/zeroclaw-labs/zeroclaw) et nos comptes sociaux vérifiés. |
| 2026-02-21 | _Important_ | Notre site officiel est désormais en ligne : [zeroclawlabs.ai](https://zeroclawlabs.ai). Merci pour votre patience pendant cette attente. Nous constatons toujours des tentatives d'usurpation : ne participez à aucune activité d'investissement/financement au nom de ZeroClaw si elle n'est pas publiée via nos canaux officiels. | Utilisez [ce dépôt](https://github.com/zeroclaw-labs/zeroclaw) comme source unique de vérité. Suivez [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21), [Facebook (groupe)](https://www.facebook.com/groups/zeroclaw), et [Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/) pour les mises à jour officielles. | | 2026-02-21 | _Important_ | Notre site web officiel est maintenant en ligne : [zeroclawlabs.ai](https://zeroclawlabs.ai). Merci de votre patience pendant que nous préparions le lancement. Nous continuons de voir des tentatives d'usurpation d'identité, donc ne participez **pas** à des activités d'investissement ou de collecte de fonds utilisant le nom ZeroClaw sauf si elles sont publiées via nos canaux officiels. | Utilisez [ce dépôt](https://github.com/zeroclaw-labs/zeroclaw) comme seule source de vérité. Suivez [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21), [Facebook (Groupe)](https://www.facebook.com/groups/zeroclawlabs) et [Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/) pour les mises à jour officielles. |
| 2026-02-19 | _Important_ | Anthropic a mis à jour les conditions d'utilisation de l'authentification et des identifiants le 2026-02-19. L'authentification OAuth (Free, Pro, Max) est exclusivement destinée à Claude Code et Claude.ai ; l'utilisation de tokens OAuth de Claude Free/Pro/Max dans tout autre produit, outil ou service (y compris Agent SDK) n'est pas autorisée et peut violer les Conditions d'utilisation grand public. | Veuillez temporairement éviter les intégrations OAuth de Claude Code pour prévenir toute perte potentielle. Clause originale : [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use). | | 2026-02-19 | _Important_ | Anthropic a mis à jour les conditions d'Authentification et d'Utilisation des Identifiants le 2026-02-19. Les jetons OAuth de Claude Code (Free, Pro, Max) sont destinés exclusivement à Claude Code et Claude.ai ; utiliser des jetons OAuth de Claude Free/Pro/Max dans tout autre produit, outil ou service (y compris Agent SDK) n'est pas autorisé et peut violer les Conditions d'Utilisation du Consommateur. | Veuillez éviter temporairement les intégrations OAuth de Claude Code pour prévenir les pertes potentielles. Clause originale : [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use). |
### ✨ Fonctionnalités ## Points forts
- 🏎️ **Runtime Léger par Défaut :** Les workflows CLI courants et de statut s'exécutent dans une enveloppe mémoire de quelques mégaoctets sur les builds de production. - **Runtime léger par défaut** — les flux de travail courants CLI et statut s'exécutent dans une enveloppe mémoire de quelques mégaoctets en builds release.
- 💰 **Déploiement Économique :** Conçu pour les cartes à faible coût et les petites instances cloud sans dépendances runtime lourdes. - **Déploiement économique** — conçu pour des cartes à $10 et de petites instances cloud, pas de dépendances d'exécution lourdes.
- ⚡ **Démarrages à Froid Rapides :** Le runtime Rust mono-binaire maintient le démarrage des commandes et démons quasi instantané pour les opérations quotidiennes. - **Démarrage à froid rapide** — le runtime Rust à binaire unique maintient le démarrage des commandes et du daemon quasi instantané.
- 🌍 **Architecture Portable :** Un workflow binaire unique sur ARM, x86 et RISC-V avec fournisseurs/canaux/outils interchangeables. - **Architecture portable** — un binaire pour ARM, x86 et RISC-V avec fournisseurs/canaux/outils interchangeables.
- **Gateway local-first** — plan de contrôle unique pour les sessions, canaux, outils, cron, SOPs et événements.
- **Boîte de réception multicanal** — WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WebSocket et plus.
- **Orchestration multi-agent (Hands)** — essaims d'agents autonomes qui s'exécutent selon un planning et deviennent plus intelligents avec le temps.
- **Procédures Opérationnelles Standard (SOPs)** — automatisation des flux de travail pilotée par événements avec MQTT, webhook, cron et déclencheurs de périphériques.
- **Tableau de bord web** — interface web React 19 + Vite avec chat en temps réel, navigateur de mémoire, éditeur de configuration, gestionnaire cron et inspecteur d'outils.
- **Périphériques matériels** — ESP32, STM32 Nucleo, Arduino, Raspberry Pi GPIO via le trait `Peripheral`.
- **Outils de première classe** — shell, E/S fichiers, navigateur, git, web fetch/search, MCP, Jira, Notion, Google Workspace et plus de 70 autres.
- **Hooks de cycle de vie** — interceptez et modifiez les appels LLM, les exécutions d'outils et les messages à chaque étape.
- **Plateforme de skills** — skills intégrés, communautaires et du workspace avec audit de sécurité.
- **Support de tunnels** — Cloudflare, Tailscale, ngrok, OpenVPN et tunnels personnalisés pour l'accès distant.
### Pourquoi les équipes choisissent ZeroClaw ### Pourquoi les équipes choisissent ZeroClaw
- **Léger par défaut :** petit binaire Rust, démarrage rapide, empreinte mémoire faible. - **Léger par défaut :** petit binaire Rust, démarrage rapide, faible empreinte mémoire.
- **Sécurisé par conception :** appairage, sandboxing strict, listes d'autorisation explicites, portée de workspace. - **Sécurisé par conception :** appairage, sandboxing strict, listes d'autorisation explicites, portée du workspace.
- **Entièrement interchangeable :** les systèmes centraux sont des traits (fournisseurs, canaux, outils, mémoire, tunnels). - **Entièrement interchangeable :** les systèmes centraux sont des traits (fournisseurs, canaux, outils, mémoire, tunnels).
- **Aucun verrouillage :** support de fournisseur compatible OpenAI + endpoints personnalisés pluggables. - **Pas de vendor lock-in :** support de fournisseurs compatibles OpenAI + endpoints personnalisés enfichables.
## Instantané de Benchmark (ZeroClaw vs OpenClaw, Reproductible) ## Résumé des benchmarks (ZeroClaw vs OpenClaw, reproductible)
Benchmark rapide sur machine locale (macOS arm64, fév. 2026) normalisé pour matériel edge 0.8 GHz. Benchmark rapide sur machine locale (macOS arm64, fév 2026) normalisé pour du matériel edge à 0.8GHz.
| | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 | | | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 |
| ---------------------------- | ------------- | -------------- | --------------- | --------------------- | | ------------------------- | ------------- | -------------- | --------------- | -------------------- |
| **Langage** | TypeScript | Python | Go | **Rust** | | **Langage** | TypeScript | Python | Go | **Rust** |
| **RAM** | > 1 Go | > 100 Mo | < 10 Mo | **< 5 Mo** | | **RAM** | > 1Go | > 100Mo | < 10Mo | **< 5Mo** |
| **Démarrage (cœur 0.8 GHz)** | > 500s | > 30s | < 1s | **< 10ms** | | **Démarrage (core 0.8GHz)** | > 500s | > 30s | < 1s | **< 10ms** |
| **Taille Binaire** | ~28 Mo (dist) | N/A (Scripts) | ~8 Mo | **3.4 Mo** | | **Taille du binaire** | ~28Mo (dist) | N/A (Scripts) | ~8Mo | **~8.8 Mo** |
| **Coût** | Mac Mini 599$ | Linux SBC ~50$ | Carte Linux 10$ | **Tout matériel 10$** | | **Coût** | Mac Mini $599 | Linux SBC ~$50 | Linux Board $10 | **N'importe quel matériel $10** |
> Notes : Les résultats ZeroClaw sont mesurés sur des builds de production utilisant `/usr/bin/time -l`. OpenClaw nécessite le runtime Node.js (typiquement ~390 Mo de surcharge mémoire supplémentaire), tandis que NanoBot nécessite le runtime Python. PicoClaw et ZeroClaw sont des binaires statiques. Les chiffres RAM ci-dessus sont la mémoire runtime ; les exigences de compilation build-time sont plus élevées. > Notes : Les résultats de ZeroClaw sont mesurés sur des builds release avec `/usr/bin/time -l`. OpenClaw nécessite le runtime Node.js (typiquement ~390Mo de surcharge mémoire supplémentaire), tandis que NanoBot nécessite le runtime Python. PicoClaw et ZeroClaw sont des binaires statiques. Les chiffres de RAM ci-dessus sont la mémoire à l'exécution ; les besoins de compilation sont plus élevés.
<p align="center"> <p align="center">
<img src="docs/assets/zeroclaw-comparison.jpeg" alt="Comparaison ZeroClaw vs OpenClaw" width="800" /> <img src="docs/assets/zeroclaw-comparison.jpeg" alt="ZeroClaw vs OpenClaw Comparison" width="800" />
</p> </p>
### Mesure locale reproductible ### Mesure locale reproductible
Les affirmations de benchmark peuvent dériver au fil de l'évolution du code et des toolchains, donc mesurez toujours votre build actuel localement :
```bash ```bash
cargo build --release cargo build --release
ls -lh target/release/zeroclaw ls -lh target/release/zeroclaw
@ -148,20 +254,266 @@ ls -lh target/release/zeroclaw
/usr/bin/time -l target/release/zeroclaw status /usr/bin/time -l target/release/zeroclaw status
``` ```
Exemple d'échantillon (macOS arm64, mesuré le 18 février 2026) : ## Tout ce que nous avons construit jusqu'ici
- Taille binaire release : `8.8M` ### Plateforme centrale
- `zeroclaw --help` : environ `0.02s` de temps réel, ~`3.9 Mo` d'empreinte mémoire maximale
- `zeroclaw status` : environ `0.01s` de temps réel, ~`4.1 Mo` d'empreinte mémoire maximale - Plan de contrôle Gateway HTTP/WS/SSE avec sessions, présence, configuration, cron, webhooks, tableau de bord web et appairage.
- Surface CLI : `gateway`, `agent`, `onboard`, `doctor`, `status`, `service`, `migrate`, `auth`, `cron`, `channel`, `skills`.
- Boucle d'orchestration de l'agent avec dispatch des outils, construction des prompts, classification des messages et chargement de la mémoire.
- Modèle de session avec application des politiques de sécurité, niveaux d'autonomie et validation conditionnelle.
- Wrapper de fournisseur résilient avec failover, retry et routage des modèles sur plus de 20 backends LLM.
### Canaux
Canaux : WhatsApp (natif), Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, DingTalk, Lark, Mattermost, Nextcloud Talk, Nostr, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WATI, Mochat, Linq, Notion, WebSocket, ClawdTalk.
Activés par feature gate : Matrix (`channel-matrix`), Lark (`channel-lark`), Nostr (`channel-nostr`).
### Tableau de bord web
Tableau de bord web React 19 + Vite 6 + Tailwind CSS 4 servi directement depuis le Gateway :
- **Dashboard** — vue d'ensemble du système, état de santé, uptime, suivi des coûts
- **Chat de l'agent** — chat interactif avec l'agent
- **Mémoire** — parcourir et gérer les entrées de mémoire
- **Configuration** — voir et modifier la configuration
- **Cron** — gérer les tâches planifiées
- **Outils** — parcourir les outils disponibles
- **Logs** — voir les journaux d'activité de l'agent
- **Coûts** — utilisation des tokens et suivi des coûts
- **Doctor** — diagnostics de santé du système
- **Intégrations** — statut et configuration des intégrations
- **Appairage** — gestion de l'appairage des appareils
### Cibles firmware
| Cible | Plateforme | Objectif |
|-------|------------|----------|
| ESP32 | Espressif ESP32 | Agent périphérique sans fil |
| ESP32-UI | ESP32 + Display | Agent avec interface visuelle |
| STM32 Nucleo | STM32 (ARM Cortex-M) | Périphérique industriel |
| Arduino | Arduino | Pont capteurs/actionneurs basique |
| Uno Q Bridge | Arduino Uno | Pont série vers l'agent |
### Outils + automatisation
- **Core :** shell, lecture/écriture/édition de fichiers, opérations git, recherche glob, recherche de contenu
- **Web :** contrôle du navigateur, web fetch, web search, capture d'écran, informations d'image, lecture PDF
- **Intégrations :** Jira, Notion, Google Workspace, Microsoft 365, LinkedIn, Composio, Pushover
- **MCP :** Model Context Protocol tool wrapper + ensembles d'outils différés
- **Planification :** cron add/remove/update/run, outil de planification
- **Mémoire :** recall, store, forget, knowledge, project intel
- **Avancé :** delegate (agent vers agent), swarm, changement/routage de modèles, opérations de sécurité, opérations cloud
- **Matériel :** board info, memory map, memory read (activé par feature gate)
### Runtime + sécurité
- **Niveaux d'autonomie :** ReadOnly, Supervised (par défaut), Full.
- **Sandboxing :** isolation du workspace, blocage de la traversée de chemins, listes de commandes autorisées, chemins interdits, Landlock (Linux), Bubblewrap.
- **Limitation de débit :** max actions par heure, max coût par jour (configurable).
- **Validation conditionnelle :** approbation interactive pour les opérations à risque moyen/élevé.
- **Arrêt d'urgence :** capacité d'arrêt d'urgence.
- **129+ tests de sécurité** en CI automatisé.
### Opérations + packaging
- Tableau de bord web servi directement depuis le Gateway.
- Support de tunnels : Cloudflare, Tailscale, ngrok, OpenVPN, commande personnalisée.
- Adaptateur runtime Docker pour exécution conteneurisée.
- CI/CD : beta (automatique au push) → stable (dispatch manuel) → Docker, crates.io, Scoop, AUR, Homebrew, tweet.
- Binaires précompilés pour Linux (x86_64, aarch64, armv7), macOS (x86_64, aarch64), Windows (x86_64).
## Configuration
`~/.zeroclaw/config.toml` minimal :
```toml
default_provider = "anthropic"
api_key = "sk-ant-..."
```
Référence complète de configuration : [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md).
### Configuration des canaux
**Telegram :**
```toml
[channels.telegram]
bot_token = "123456:ABC-DEF..."
```
**Discord :**
```toml
[channels.discord]
token = "your-bot-token"
```
**Slack :**
```toml
[channels.slack]
bot_token = "xoxb-..."
app_token = "xapp-..."
```
**WhatsApp :**
```toml
[channels.whatsapp]
enabled = true
```
**Matrix :**
```toml
[channels.matrix]
homeserver_url = "https://matrix.org"
username = "@bot:matrix.org"
password = "..."
```
**Signal :**
```toml
[channels.signal]
phone_number = "+1234567890"
```
### Configuration des tunnels
```toml
[tunnel]
kind = "cloudflare" # ou "tailscale", "ngrok", "openvpn", "custom", "none"
```
Détails : [Référence des canaux](docs/reference/api/channels-reference.md) · [Référence de configuration](docs/reference/api/config-reference.md)
### Support runtime (actuel)
- **`native`** (par défaut) — exécution directe des processus, chemin le plus rapide, idéal pour les environnements de confiance.
- **`docker`** — isolation complète en conteneur, politiques de sécurité imposées, nécessite Docker.
Définissez `runtime.kind = "docker"` pour un sandboxing strict ou l'isolation réseau.
## Authentification par abonnement (OpenAI Codex / Claude Code / Gemini)
ZeroClaw supporte les profils d'authentification natifs par abonnement (multi-compte, chiffrés au repos).
- Fichier de stockage : `~/.zeroclaw/auth-profiles.json`
- Clé de chiffrement : `~/.zeroclaw/.secret_key`
- Format d'id de profil : `<provider>:<profile_name>` (exemple : `openai-codex:work`)
```bash
# OpenAI Codex OAuth (abonnement ChatGPT)
zeroclaw auth login --provider openai-codex --device-code
# Gemini OAuth
zeroclaw auth login --provider gemini --profile default
# Anthropic setup-token
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# Vérifier / rafraîchir / changer de profil
zeroclaw auth status
zeroclaw auth refresh --provider openai-codex --profile default
zeroclaw auth use --provider openai-codex --profile work
# Exécuter l'agent avec l'authentification par abonnement
zeroclaw agent --provider openai-codex -m "hello"
zeroclaw agent --provider anthropic -m "hello"
```
## Workspace de l'agent + skills
Racine du workspace : `~/.zeroclaw/workspace/` (configurable via config).
Fichiers de prompt injectés :
- `IDENTITY.md` — personnalité et rôle de l'agent
- `USER.md` — contexte et préférences de l'utilisateur
- `MEMORY.md` — faits et leçons à long terme
- `AGENTS.md` — conventions de session et règles d'initialisation
- `SOUL.md` — identité centrale et principes opérationnels
Skills : `~/.zeroclaw/workspace/skills/<skill>/SKILL.md` ou `SKILL.toml`.
```bash
# Lister les skills installés
zeroclaw skills list
# Installer depuis git
zeroclaw skills install https://github.com/user/my-skill.git
# Audit de sécurité avant installation
zeroclaw skills audit https://github.com/user/my-skill.git
# Supprimer un skill
zeroclaw skills remove my-skill
```
## Commandes CLI
```bash
# Gestion du workspace
zeroclaw onboard # Assistant de configuration guidée
zeroclaw status # Afficher le statut du daemon/agent
zeroclaw doctor # Exécuter les diagnostics système
# Gateway + daemon
zeroclaw gateway # Démarrer le serveur gateway (127.0.0.1:42617)
zeroclaw daemon # Démarrer le runtime autonome complet
# Agent
zeroclaw agent # Mode chat interactif
zeroclaw agent -m "message" # Mode message unique
# Gestion des services
zeroclaw service install # Installer comme service OS (launchd/systemd)
zeroclaw service start|stop|restart|status
# Canaux
zeroclaw channel list # Lister les canaux configurés
zeroclaw channel doctor # Vérifier la santé des canaux
zeroclaw channel bind-telegram 123456789
# Cron + planification
zeroclaw cron list # Lister les tâches planifiées
zeroclaw cron add "*/5 * * * *" --prompt "Check system health"
zeroclaw cron remove <id>
# Mémoire
zeroclaw memory list # Lister les entrées de mémoire
zeroclaw memory get <key> # Récupérer une mémoire
zeroclaw memory stats # Statistiques de la mémoire
# Profils d'authentification
zeroclaw auth login --provider <name>
zeroclaw auth status
zeroclaw auth use --provider <name> --profile <profile>
# Périphériques matériels
zeroclaw hardware discover # Scanner les appareils connectés
zeroclaw peripheral list # Lister les périphériques connectés
zeroclaw peripheral flash # Flasher le firmware sur l'appareil
# Migration
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw
# Complétion shell
source <(zeroclaw completions bash)
zeroclaw completions zsh > ~/.zfunc/_zeroclaw
```
Référence complète des commandes : [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
<!-- markdownlint-disable MD001 MD024 -->
## Prérequis ## Prérequis
<details> <details>
<summary><strong>Windows</strong></summary> <summary><strong>Windows</strong></summary>
### Windows — Requis #### Requis
1. **Visual Studio Build Tools** (fournit le linker MSVC et le Windows SDK) : 1. **Visual Studio Build Tools** (fournit le linker MSVC et le SDK Windows) :
```powershell ```powershell
winget install Microsoft.VisualStudio.2022.BuildTools winget install Microsoft.VisualStudio.2022.BuildTools
@ -183,21 +535,21 @@ Exemple d'échantillon (macOS arm64, mesuré le 18 février 2026) :
cargo --version cargo --version
``` ```
### Windows — Optionnel #### Optionnel
- **Docker Desktop** — requis seulement si vous utilisez le [runtime sandboxé Docker](#support-runtime-actuel) (`runtime.kind = "docker"`). Installez via `winget install Docker.DockerDesktop`. - **Docker Desktop** — requis uniquement si vous utilisez le [runtime sandbox Docker](#support-runtime-actuel) (`runtime.kind = "docker"`). Installez via `winget install Docker.DockerDesktop`.
</details> </details>
<details> <details>
<summary><strong>Linux / macOS</strong></summary> <summary><strong>Linux / macOS</strong></summary>
### Linux / macOS — Requis #### Requis
1. **Outils de build essentiels :** 1. **Outils de compilation essentiels :**
- **Linux (Debian/Ubuntu) :** `sudo apt install build-essential pkg-config` - **Linux (Debian/Ubuntu) :** `sudo apt install build-essential pkg-config`
- **Linux (Fedora/RHEL) :** `sudo dnf group install development-tools && sudo dnf install pkg-config` - **Linux (Fedora/RHEL) :** `sudo dnf group install development-tools && sudo dnf install pkg-config`
- **macOS :** Installez les Outils de Ligne de Commande Xcode : `xcode-select --install` - **macOS :** Installez Xcode Command Line Tools : `xcode-select --install`
2. **Toolchain Rust :** 2. **Toolchain Rust :**
@ -207,243 +559,152 @@ Exemple d'échantillon (macOS arm64, mesuré le 18 février 2026) :
Voir [rustup.rs](https://rustup.rs) pour les détails. Voir [rustup.rs](https://rustup.rs) pour les détails.
3. **Vérifiez :** 3. **Vérifiez** que les deux fonctionnent :
```bash ```bash
rustc --version rustc --version
cargo --version cargo --version
``` ```
### Linux / macOS — Optionnel #### Installateur en une ligne
- **Docker** — requis seulement si vous utilisez le [runtime sandboxé Docker](#support-runtime-actuel) (`runtime.kind = "docker"`). Ou passez les étapes ci-dessus et installez tout (dépendances système, Rust, ZeroClaw) en une seule commande :
- **Linux (Debian/Ubuntu) :** voir [docs.docker.com](https://docs.docker.com/engine/install/ubuntu/)
- **Linux (Fedora/RHEL) :** voir [docs.docker.com](https://docs.docker.com/engine/install/fedora/) ```bash
- **macOS :** installez Docker Desktop via [docker.com/products/docker-desktop](https://www.docker.com/products/docker-desktop/) curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash
```
#### Besoins en ressources pour la compilation
Compiler depuis le code source nécessite plus de ressources que l'exécution du binaire résultant :
| Ressource | Minimum | Recommandé |
| -------------- | ------- | ----------- |
| **RAM + swap** | 2 Go | 4 Go+ |
| **Disque libre**| 6 Go | 10 Go+ |
Si votre hôte est en dessous du minimum, utilisez les binaires précompilés :
```bash
./install.sh --prefer-prebuilt
```
Pour exiger une installation binaire uniquement sans compilation de secours :
```bash
./install.sh --prebuilt-only
```
#### Optionnel
- **Docker** — requis uniquement si vous utilisez le [runtime sandbox Docker](#support-runtime-actuel) (`runtime.kind = "docker"`). Installez via votre gestionnaire de paquets ou [docker.com](https://docs.docker.com/engine/install/).
> **Note :** Le `cargo build --release` par défaut utilise `codegen-units=1` pour réduire la pression maximale de compilation. Pour des builds plus rapides sur des machines puissantes, utilisez `cargo build --profile release-fast`.
</details> </details>
## Démarrage Rapide <!-- markdownlint-enable MD001 MD024 -->
### Option 1 : Configuration automatisée (recommandée) ### Binaires précompilés
Le script `install.sh` installe Rust, clone ZeroClaw, le compile, et configure votre environnement de développement initial : Les assets de release sont publiés pour :
```bash - Linux : `x86_64`, `aarch64`, `armv7`
curl -fsSL https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash - macOS : `x86_64`, `aarch64`
``` - Windows : `x86_64`
Ceci va : Téléchargez les derniers assets depuis :
<https://github.com/zeroclaw-labs/zeroclaw/releases/latest>
1. Installer Rust (si absent) ## Documentation
2. Cloner le dépôt ZeroClaw
3. Compiler ZeroClaw en mode release
4. Installer `zeroclaw` dans `~/.cargo/bin/`
5. Créer la structure de workspace par défaut dans `~/.zeroclaw/workspace/`
6. Générer un fichier de configuration `~/.zeroclaw/workspace/config.toml` de démarrage
Après le bootstrap, relancez votre shell ou exécutez `source ~/.cargo/env` pour utiliser la commande `zeroclaw` globalement. Utilisez ces ressources lorsque vous avez dépassé le flux d'onboarding et voulez la référence approfondie.
### Option 2 : Installation manuelle - Commencez par l'[index de la documentation](docs/README.md) pour la navigation et "qu'est-ce qui est où."
- Lisez la [vue d'ensemble de l'architecture](docs/architecture.md) pour le modèle complet du système.
- Utilisez la [référence de configuration](docs/reference/api/config-reference.md) quand vous avez besoin de chaque clé et exemple.
- Exécutez le Gateway selon les règles avec le [runbook opérationnel](docs/ops/operations-runbook.md).
- Suivez [ZeroClaw Onboard](#démarrage-rapide) pour une configuration guidée.
- Déboguez les erreurs courantes avec le [guide de dépannage](docs/ops/troubleshooting.md).
- Consultez les [conseils de sécurité](docs/security/README.md) avant d'exposer quoi que ce soit.
<details> ### Documentation de référence
<summary><strong>Cliquez pour voir les étapes d'installation manuelle</strong></summary>
```bash
# 1. Clonez le dépôt
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
# 2. Compilez en release
cargo build --release --locked
# 3. Installez le binaire
cargo install --path . --locked
# 4. Initialisez le workspace
zeroclaw init
# 5. Vérifiez l'installation
zeroclaw --version
zeroclaw status
```
</details>
### Après l'installation
Une fois installé (via bootstrap ou manuellement), vous devriez voir :
```
~/.zeroclaw/workspace/
├── config.toml # Configuration principale
├── .pairing # Secrets de pairing (généré au premier lancement)
├── logs/ # Journaux de daemon/agent
├── skills/ # Compétences personnalisées
└── memory/ # Stockage de contexte conversationnel
```
**Prochaines étapes :**
1. Configurez vos fournisseurs d'IA dans `~/.zeroclaw/workspace/config.toml`
2. Consultez la [référence de configuration](docs/reference/api/config-reference.md) pour les options avancées
3. Lancez l'agent : `zeroclaw agent start`
4. Testez via votre canal préféré (voir [référence des canaux](docs/reference/api/channels-reference.md))
## Configuration
Éditez `~/.zeroclaw/workspace/config.toml` pour configurer les fournisseurs, canaux et comportement du système.
### Référence de Configuration Rapide
```toml
[providers.anthropic]
api_key = "sk-ant-..."
model = "claude-sonnet-4-20250514"
[providers.openai]
api_key = "sk-..."
model = "gpt-4o"
[channels.telegram]
enabled = true
bot_token = "123456:ABC-DEF..."
[channels.matrix]
enabled = true
homeserver_url = "https://matrix.org"
username = "@bot:matrix.org"
password = "..."
[memory]
kind = "markdown" # ou "sqlite" ou "none"
[runtime]
kind = "native" # ou "docker" (nécessite Docker)
```
**Documents de référence complets :**
- [Référence de Configuration](docs/reference/api/config-reference.md) — tous les paramètres, validations, valeurs par défaut
- [Référence des Fournisseurs](docs/reference/api/providers-reference.md) — configurations spécifiques aux fournisseurs d'IA
- [Référence des Canaux](docs/reference/api/channels-reference.md) — Telegram, Matrix, Slack, Discord et plus
- [Opérations](docs/ops/operations-runbook.md) — surveillance en production, rotation des secrets, mise à l'échelle
### Support Runtime (actuel)
ZeroClaw prend en charge deux backends d'exécution de code :
- **`native`** (par défaut) — exécution de processus directe, chemin le plus rapide, idéal pour les environnements de confiance
- **`docker`** — isolation complète du conteneur, politiques de sécurité renforcées, nécessite Docker
Utilisez `runtime.kind = "docker"` si vous avez besoin d'un sandboxing strict ou de l'isolation réseau. Voir [référence de configuration](docs/reference/api/config-reference.md#runtime) pour les détails complets.
## Commandes
```bash
# Gestion du workspace
zeroclaw init # Initialise un nouveau workspace
zeroclaw status # Affiche l'état du daemon/agent
zeroclaw config validate # Vérifie la syntaxe et les valeurs de config.toml
# Gestion du daemon
zeroclaw daemon start # Démarre le daemon en arrière-plan
zeroclaw daemon stop # Arrête le daemon en cours d'exécution
zeroclaw daemon restart # Redémarre le daemon (rechargement de config)
zeroclaw daemon logs # Affiche les journaux du daemon
# Gestion de l'agent
zeroclaw agent start # Démarre l'agent (nécessite daemon en cours d'exécution)
zeroclaw agent stop # Arrête l'agent
zeroclaw agent restart # Redémarre l'agent (rechargement de config)
# Opérations de pairing
zeroclaw pairing init # Génère un nouveau secret de pairing
zeroclaw pairing rotate # Fait tourner le secret de pairing existant
# Tunneling (pour exposition publique)
zeroclaw tunnel start # Démarre un tunnel vers le daemon local
zeroclaw tunnel stop # Arrête le tunnel actif
# Diagnostic
zeroclaw doctor # Exécute les vérifications de santé du système
zeroclaw version # Affiche la version et les informations de build
```
Voir [Référence des Commandes](docs/reference/cli/commands-reference.md) pour les options et exemples complets.
## Collaboration & Docs
Commencez par le hub de documentation pour une carte basée sur les tâches :
- Hub de documentation : [`docs/README.md`](docs/README.md)
- Table des matières unifiée docs : [`docs/SUMMARY.md`](docs/SUMMARY.md)
- Référence des commandes : [`docs/reference/cli/commands-reference.md`](docs/reference/cli/commands-reference.md)
- Référence de configuration : [`docs/reference/api/config-reference.md`](docs/reference/api/config-reference.md)
- Référence des fournisseurs : [`docs/reference/api/providers-reference.md`](docs/reference/api/providers-reference.md)
- Référence des canaux : [`docs/reference/api/channels-reference.md`](docs/reference/api/channels-reference.md)
- Runbook des opérations : [`docs/ops/operations-runbook.md`](docs/ops/operations-runbook.md)
- Dépannage : [`docs/ops/troubleshooting.md`](docs/ops/troubleshooting.md)
- Inventaire/classification docs : [`docs/maintainers/docs-inventory.md`](docs/maintainers/docs-inventory.md)
- Instantané triage PR/Issue (au 18 février 2026) : [`docs/maintainers/project-triage-snapshot-2026-02-18.md`](docs/maintainers/project-triage-snapshot-2026-02-18.md)
Références de collaboration principales :
- Hub de documentation : [docs/README.md](docs/README.md) - Hub de documentation : [docs/README.md](docs/README.md)
- Modèle de documentation : [docs/contributing/doc-template.md](docs/contributing/doc-template.md) - TOC unifiée des docs : [docs/SUMMARY.md](docs/SUMMARY.md)
- Checklist de modification de documentation : [docs/README.md#4-documentation-change-checklist](docs/README.md#4-documentation-change-checklist) - Référence des commandes : [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
- Référence de configuration des canaux : [docs/reference/api/channels-reference.md](docs/reference/api/channels-reference.md) - Référence de configuration : [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
- Opérations de salles chiffrées Matrix : [docs/security/matrix-e2ee-guide.md](docs/security/matrix-e2ee-guide.md) - Référence des fournisseurs : [docs/reference/api/providers-reference.md](docs/reference/api/providers-reference.md)
- Référence des canaux : [docs/reference/api/channels-reference.md](docs/reference/api/channels-reference.md)
- Runbook opérationnel : [docs/ops/operations-runbook.md](docs/ops/operations-runbook.md)
- Dépannage : [docs/ops/troubleshooting.md](docs/ops/troubleshooting.md)
### Documentation de collaboration
- Guide de contribution : [CONTRIBUTING.md](CONTRIBUTING.md) - Guide de contribution : [CONTRIBUTING.md](CONTRIBUTING.md)
- Politique de workflow PR : [docs/contributing/pr-workflow.md](docs/contributing/pr-workflow.md) - Politique de workflow PR : [docs/contributing/pr-workflow.md](docs/contributing/pr-workflow.md)
- Playbook du relecteur (triage + revue approfondie) : [docs/contributing/reviewer-playbook.md](docs/contributing/reviewer-playbook.md) - Guide du workflow CI : [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Carte de propriété et triage CI : [docs/contributing/ci-map.md](docs/contributing/ci-map.md) - Manuel du réviseur : [docs/contributing/reviewer-playbook.md](docs/contributing/reviewer-playbook.md)
- Politique de divulgation de sécurité : [SECURITY.md](SECURITY.md) - Politique de divulgation de sécurité : [SECURITY.md](SECURITY.md)
- Modèle de documentation : [docs/contributing/doc-template.md](docs/contributing/doc-template.md)
Pour le déploiement et les opérations runtime : ### Déploiement + opérations
- Guide de déploiement réseau : [docs/ops/network-deployment.md](docs/ops/network-deployment.md) - Guide de déploiement réseau : [docs/ops/network-deployment.md](docs/ops/network-deployment.md)
- Playbook d'agent proxy : [docs/ops/proxy-agent-playbook.md](docs/ops/proxy-agent-playbook.md) - Manuel de l'agent proxy : [docs/ops/proxy-agent-playbook.md](docs/ops/proxy-agent-playbook.md)
- Guides matériels : [docs/hardware/README.md](docs/hardware/README.md)
## Smooth Crab 🦀
ZeroClaw a été construit pour le crabe lisse 🦀, un assistant IA rapide et efficace. Construit par Argenis De La Rosa et la communauté.
- [zeroclawlabs.ai](https://zeroclawlabs.ai)
- [@zeroclawlabs](https://x.com/zeroclawlabs)
## Soutenir ZeroClaw ## Soutenir ZeroClaw
Si ZeroClaw aide votre travail et que vous souhaitez soutenir le développement continu, vous pouvez faire un don ici : Si ZeroClaw vous aide dans votre travail et que vous souhaitez soutenir le développement continu, vous pouvez faire un don ici :
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee" alt="Offrez-moi un café" /></a> <a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
### 🙏 Remerciements Spéciaux ### 🙏 Remerciements spéciaux
Un remerciement sincère aux communautés et institutions qui inspirent et alimentent ce travail open-source : Un sincère remerciement aux communautés et institutions qui inspirent et alimentent ce travail open source :
- **Harvard University** — pour favoriser la curiosité intellectuelle et repousser les limites du possible. - **Harvard University** — pour nourrir la curiosité intellectuelle et repousser les limites du possible.
- **MIT** — pour défendre la connaissance ouverte, l'open source, et la conviction que la technologie devrait être accessible à tous. - **MIT** — pour défendre le savoir ouvert, l'open source et la conviction que la technologie doit être accessible à tous.
- **Sundai Club** — pour la communauté, l'énergie, et la volonté incessante de construire des choses qui comptent. - **Sundai Club** — pour la communauté, l'énergie et la volonté incessante de construire des choses qui comptent.
- **Le Monde & Au-Delà** 🌍✨ — à chaque contributeur, rêveur, et constructeur là-bas qui fait de l'open source une force pour le bien. C'est pour vous. - **Le Monde et Au-delà** 🌍✨ — à chaque contributeur, rêveur et constructeur qui fait de l'open source une force pour le bien. C'est pour vous.
Nous construisons en open source parce que les meilleures idées viennent de partout. Si vous lisez ceci, vous en faites partie. Bienvenue. 🦀❤️ Nous construisons ouvertement parce que les meilleures idées viennent de partout. Si vous lisez ceci, vous en faites partie. Bienvenue. 🦀❤️
## Contribuer
Nouveau sur ZeroClaw ? Recherchez les issues étiquetées [`good first issue`](https://github.com/zeroclaw-labs/zeroclaw/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) — consultez notre [Guide de contribution](CONTRIBUTING.md#first-time-contributors) pour savoir comment commencer. Les PRs IA/vibe-coded sont les bienvenus ! 🤖
Voir [CONTRIBUTING.md](CONTRIBUTING.md) et [CLA.md](docs/contributing/cla.md). Implémentez un trait, soumettez un PR :
- Guide du workflow CI : [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Nouveau `Provider``src/providers/`
- Nouveau `Channel``src/channels/`
- Nouveau `Observer``src/observability/`
- Nouveau `Tool``src/tools/`
- Nouveau `Memory``src/memory/`
- Nouveau `Tunnel``src/tunnel/`
- Nouveau `Peripheral``src/peripherals/`
- Nouveau `Skill``~/.zeroclaw/workspace/skills/<name>/`
<!-- BEGIN:RECENT_CONTRIBUTORS --> <!-- BEGIN:RECENT_CONTRIBUTORS -->
### 🌟 Recent Contributors (v0.3.1)
3 contributors shipped features, fixes, and improvements in this release cycle:
- **Argenis**
- **argenis de la rosa**
- **Claude Opus 4.6**
Thank you to everyone who opened issues, reviewed PRs, translated docs, and helped test. Every contribution matters. 🦀
<!-- END:RECENT_CONTRIBUTORS --> <!-- END:RECENT_CONTRIBUTORS -->
## ⚠️ Dépôt Officiel & Avertissement d'Usurpation d'Identité ## ⚠️ Dépôt officiel et avertissement d'usurpation
**Ceci est le seul dépôt officiel ZeroClaw :** **Ceci est le seul dépôt officiel de ZeroClaw :**
> <https://github.com/zeroclaw-labs/zeroclaw> > https://github.com/zeroclaw-labs/zeroclaw
Tout autre dépôt, organisation, domaine ou package prétendant être "ZeroClaw" ou impliquant une affiliation avec ZeroClaw Labs est **non autorisé et non affilié à ce projet**. Les forks non autorisés connus seront listés dans [TRADEMARK.md](docs/maintainers/trademark.md). Tout autre dépôt, organisation, domaine ou package prétendant être "ZeroClaw" ou impliquant une affiliation avec ZeroClaw Labs est **non autorisé et non affilié à ce projet**. Les forks non autorisés connus seront listés dans [TRADEMARK.md](docs/maintainers/trademark.md).
Si vous rencontrez une usurpation d'identité ou une utilisation abusive de marque, veuillez [ouvrir une issue](https://github.com/zeroclaw-labs/zeroclaw/issues). Si vous rencontrez une usurpation d'identité ou un usage abusif de la marque, veuillez [ouvrir une issue](https://github.com/zeroclaw-labs/zeroclaw/issues).
--- ---
@ -451,49 +712,44 @@ Si vous rencontrez une usurpation d'identité ou une utilisation abusive de marq
ZeroClaw est sous double licence pour une ouverture maximale et la protection des contributeurs : ZeroClaw est sous double licence pour une ouverture maximale et la protection des contributeurs :
| Licence | Cas d'utilisation | | Licence | Cas d'utilisation |
| ---------------------------- | ------------------------------------------------------------ | |---|---|
| [MIT](LICENSE-MIT) | Open-source, recherche, académique, usage personnel | | [MIT](LICENSE-MIT) | Open source, recherche, académique, usage personnel |
| [Apache 2.0](LICENSE-APACHE) | Protection de brevet, institutionnel, déploiement commercial | | [Apache 2.0](LICENSE-APACHE) | Protection par brevet, institutionnel, déploiement commercial |
Vous pouvez choisir l'une ou l'autre licence. **Les contributeurs accordent automatiquement des droits sous les deux** — voir [CLA.md](docs/contributing/cla.md) pour l'accord de contributeur complet. Vous pouvez choisir l'une ou l'autre licence. **Les contributeurs accordent automatiquement des droits sous les deux** — voir [CLA.md](docs/contributing/cla.md) pour l'accord complet des contributeurs.
### Marque ### Marque déposée
Le nom **ZeroClaw** et le logo sont des marques déposées de ZeroClaw Labs. Cette licence n'accorde pas la permission de les utiliser pour impliquer une approbation ou une affiliation. Voir [TRADEMARK.md](docs/maintainers/trademark.md) pour les utilisations permises et interdites. Le nom et le logo **ZeroClaw** sont des marques de ZeroClaw Labs. Cette licence n'accorde pas la permission de les utiliser pour impliquer un soutien ou une affiliation. Voir [TRADEMARK.md](docs/maintainers/trademark.md) pour les usages autorisés et interdits.
### Protections des Contributeurs ### Protections des contributeurs
- Vous **conservez les droits d'auteur** de vos contributions - Vous **conservez le copyright** de vos contributions
- **Concession de brevet** (Apache 2.0) vous protège contre les réclamations de brevet par d'autres contributeurs - **Concession de brevet** (Apache 2.0) vous protège des revendications de brevets d'autres contributeurs
- Vos contributions sont **attribuées de manière permanente** dans l'historique des commits et [NOTICE](NOTICE) - Vos contributions sont **attribuées de manière permanente** dans l'historique des commits et [NOTICE](NOTICE)
- Aucun droit de marque n'est transféré en contribuant - Aucun droit de marque n'est transféré en contribuant
## Contribuer
Voir [CONTRIBUTING.md](CONTRIBUTING.md) et [CLA.md](docs/contributing/cla.md). Implémentez un trait, soumettez une PR :
- Guide de workflow CI : [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Nouveau `Provider``src/providers/`
- Nouveau `Channel``src/channels/`
- Nouveau `Observer``src/observability/`
- Nouveau `Tool``src/tools/`
- Nouvelle `Memory``src/memory/`
- Nouveau `Tunnel``src/tunnel/`
- Nouvelle `Skill``~/.zeroclaw/workspace/skills/<n>/`
--- ---
**ZeroClaw** — Zéro surcharge. Zéro compromis. Déployez n'importe où. Échangez n'importe quoi. 🦀 **ZeroClaw** — Zéro overhead. Zéro compromis. Déployez partout. Échangez n'importe quoi. 🦀
## Historique des Étoiles ## Contributeurs
<a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors">
<img src="https://contrib.rocks/image?repo=zeroclaw-labs/zeroclaw" alt="ZeroClaw contributors" />
</a>
Cette liste est générée à partir du graphique des contributeurs GitHub et se met à jour automatiquement.
## Historique des étoiles
<p align="center"> <p align="center">
<a href="https://www.star-history.com/#zeroclaw-labs/zeroclaw&type=date&legend=top-left"> <a href="https://www.star-history.com/#zeroclaw-labs/zeroclaw&type=date&legend=top-left">
<picture> <picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&theme=dark&legend=top-left" /> <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&theme=dark&legend=top-left" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" /> <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
<img alt="Graphique Historique des Étoiles" src="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" /> <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
</picture> </picture>
</a> </a>
</p> </p>

View File

@ -1,26 +1,32 @@
<p align="center"> <p align="center">
<img src="zeroclaw.png" alt="ZeroClaw" width="200" /> <img src="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/docs/assets/zeroclaw-banner.png" alt="ZeroClaw" width="600" />
</p> </p>
<h1 align="center">ZeroClaw 🦀</h1> <h1 align="center">🦀 ZeroClaw — עוזר AI אישי</h1>
<p align="center" dir="rtl"> <p align="center">
<strong>תקורת אפס. אין פשרות. 100% Rust. 100% אגנוסטי.</strong><br> <strong>אפס תקורה. אפס פשרות. 100% Rust. 100% אגנוסטי.</strong><br>
⚡️ <strong>פועל על חומרה ב-$10 עם <5MB זיכרון: זה 99% פחות זיכרון מ-OpenClaw ו-98% זול יותר מ-Mac mini!</strong> ⚡️ <strong>רץ על חומרה של $10 עם פחות מ-5MB RAM: זה 99% פחות זיכרון מ-OpenClaw ו-98% זול יותר מ-Mac mini!</strong>
</p> </p>
<p align="center"> <p align="center">
<a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a> <a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
<a href="NOTICE"><img src="https://img.shields.io/badge/contributors-27+-green.svg" alt="Contributors" /></a> <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors"><img src="https://img.shields.io/github/contributors/zeroclaw-labs/zeroclaw?color=green" alt="Contributors" /></a>
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a> <a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
<a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a> <a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a>
<a href="https://zeroclawlabs.cn/group.jpg"><img src="https://img.shields.io/badge/WeChat-Group-B7D7A8?logo=wechat&logoColor=white" alt="WeChat Group" /></a> <a href="https://www.facebook.com/groups/zeroclawlabs"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a>
<a href="https://www.xiaohongshu.com/user/profile/67cbfc43000000000d008307?xsec_token=AB73VnYnGNx5y36EtnnZfGmAmS-6Wzv8WMuGpfwfkg6Yc%3D&xsec_source=pc_search"><img src="https://img.shields.io/badge/Xiaohongshu-Official-FF2442?style=flat" alt="Xiaohongshu: Official" /></a> <a href="https://discord.com/invite/wDshRVqRjx"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://t.me/zeroclawlabs"><img src="https://img.shields.io/badge/Telegram-%40zeroclawlabs-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @zeroclawlabs" /></a> <a href="https://www.instagram.com/therealzeroclaw"><img src="https://img.shields.io/badge/Instagram-%40therealzeroclaw-E4405F?style=flat&logo=instagram&logoColor=white" alt="Instagram: @therealzeroclaw" /></a>
<a href="https://www.facebook.com/groups/zeroclaw"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a> <a href="https://www.tiktok.com/@zeroclawlabs"><img src="https://img.shields.io/badge/TikTok-%40zeroclawlabs-000000?style=flat&logo=tiktok&logoColor=white" alt="TikTok: @zeroclawlabs" /></a>
<a href="https://www.rednote.com/user/profile/69b735e6000000002603927e"><img src="https://img.shields.io/badge/RedNote-Official-FF2442?style=flat" alt="RedNote" /></a>
<a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a>
</p> </p>
<p align="center" dir="rtl"> <p align="center">
נבנה על ידי סטודנטים וחברים מקהילות Harvard, MIT ו-Sundai.Club.
</p>
<p align="center">
🌐 <strong>שפות:</strong> 🌐 <strong>שפות:</strong>
<a href="README.md">🇺🇸 English</a> · <a href="README.md">🇺🇸 English</a> ·
<a href="README.zh-CN.md">🇨🇳 简体中文</a> · <a href="README.zh-CN.md">🇨🇳 简体中文</a> ·
@ -55,167 +61,695 @@
<a href="README.nb.md">🇳🇴 Norsk</a> <a href="README.nb.md">🇳🇴 Norsk</a>
</p> </p>
--- ZeroClaw הוא עוזר AI אישי שאתה מריץ על המכשירים שלך. הוא עונה לך בערוצים שאתה כבר משתמש בהם (WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, ועוד). יש לו לוח בקרה אינטרנטי לשליטה בזמן אמת ויכול להתחבר להתקנים היקפיים (ESP32, STM32, Arduino, Raspberry Pi). ה-Gateway הוא רק מישור הבקרה — המוצר הוא העוזר.
<!-- BEGIN:WHATS_NEW --> אם אתה רוצה עוזר אישי למשתמש יחיד שמרגיש מקומי, מהיר ותמיד פעיל, זה הוא.
### 🚀 What's New in v0.3.1 (March 2026) <p align="center">
<a href="https://zeroclawlabs.ai">אתר</a> ·
| Area | Highlights | <a href="docs/README.md">תיעוד</a> ·
|---|---| <a href="docs/architecture.md">ארכיטקטורה</a> ·
| ci | add Termux (aarch64-linux-android) release target | <a href="#התחלה-מהירה">התחלה</a> ·
<a href="#מיגרציה-מ-openclaw">מיגרציה מ-OpenClaw</a> ·
<!-- END:WHATS_NEW --> <a href="docs/ops/troubleshooting.md">פתרון בעיות</a> ·
<a href="https://discord.com/invite/wDshRVqRjx">Discord</a>
## מה זה ZeroClaw?
<p align="center" dir="rtl">
ZeroClaw הוא תשתית עוזר AI קלת משקל, מוטטבילית וניתנת להרחבה שנבנתה ב-Rust. היא מחברת ספקי LLM שונים (Anthropic, OpenAI, Google, Ollama, וכו') דרך ממשק מאוחד ותומכת בערוצים מרובים (Telegram, Matrix, CLI, וכו').
</p> </p>
### תכונות עיקריות > **הגדרה מועדפת:** הרץ `zeroclaw onboard` בטרמינל שלך. ZeroClaw Onboard מנחה אותך שלב אחר שלב בהגדרת ה-gateway, סביבת העבודה, הערוצים והספק. זהו נתיב ההגדרה המומלץ ועובד על macOS, Linux ו-Windows (דרך WSL2). התקנה חדשה? התחל כאן: [התחלה](#התחלה-מהירה)
<p align="center" dir="rtl"> ### אימות מנוי (OAuth)
- **🦀 נכתב ב-Rust**: ביצועים גבוהים, אבטחת זיכרון, ואבסטרקציות ללא עלות
- **🔌 אגנוסטי לספקים**: תמיכה ב-OpenAI, Anthropic, Google Gemini, Ollama, ואחרים
- **📱 ערוצים מרובים**: Telegram, Matrix (עם E2EE), CLI, ואחרים
- **🧠 זיכרון ניתן להחלפה**: Backend של SQLite ו-Markdown
- **🛠️ כלים ניתנים להרחבה**: הוסף כלים מותאמים אישית בקלות
- **🔒 אבטחה תחילה**: פרוקסי הפוך, עיצוב מותחל על פרטיות
</p>
--- - **OpenAI Codex** (מנוי ChatGPT)
- **Gemini** (Google OAuth)
- **Anthropic** (מפתח API או אסימון אימות)
## התחלה מהירה הערה על מודלים: בעוד שספקים/מודלים רבים נתמכים, לחוויה הטובה ביותר השתמש במודל הדור האחרון החזק ביותר הזמין לך. ראה [הכניסה](#התחלה-מהירה).
### דרישות מוקדמות הגדרות מודלים + CLI: [מדריך ספקים](docs/reference/api/providers-reference.md)
רוטציית פרופיל אימות (OAuth מול מפתחות API) + מעבר בכשל: [מעבר מודלים בכשל](docs/reference/api/providers-reference.md)
<p align="center" dir="rtl"> ## התקנה (מומלץ)
- Rust 1.70+
- מפתח API של ספק LLM (Anthropic, OpenAI, וכו')
</p>
### התקנה סביבת ריצה: שרשרת כלים יציבה של Rust. בינארי יחיד, ללא תלויות סביבת ריצה.
### Homebrew (macOS/Linuxbrew)
```bash
brew install zeroclaw
```
### התקנה בלחיצה אחת
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./install.sh
```
`zeroclaw onboard` רץ אוטומטית לאחר ההתקנה כדי להגדיר את סביבת העבודה והספק שלך.
## התחלה מהירה (TL;DR)
מדריך מתחילים מלא (אימות, צימוד, ערוצים): [התחלה](docs/setup-guides/one-click-bootstrap.md)
```bash
# Install + onboard
./install.sh --api-key "sk-..." --provider openrouter
# Start the gateway (webhook server + web dashboard)
zeroclaw gateway # default: 127.0.0.1:42617
zeroclaw gateway --port 0 # random port (security hardened)
# Talk to the assistant
zeroclaw agent -m "Hello, ZeroClaw!"
# Interactive mode
zeroclaw agent
# Start full autonomous runtime (gateway + channels + cron + hands)
zeroclaw daemon
# Check status
zeroclaw status
# Run diagnostics
zeroclaw doctor
```
משדרג? הרץ `zeroclaw doctor` לאחר העדכון.
### מקוד מקור (פיתוח)
```bash ```bash
# שכפל את המאגר
git clone https://github.com/zeroclaw-labs/zeroclaw.git git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw cd zeroclaw
# בנה cargo build --release --locked
cargo build --release cargo install --path . --force --locked
# הפעל zeroclaw onboard
cargo run --release
``` ```
### עם Docker > **חלופת פיתוח (ללא התקנה גלובלית):** הוסף `cargo run --release --` לפני פקודות (דוגמה: `cargo run --release -- status`).
## מיגרציה מ-OpenClaw
ZeroClaw יכול לייבא את סביבת העבודה, הזיכרון וההגדרות של OpenClaw שלך:
```bash ```bash
docker run -d \ # Preview what will be migrated (safe, read-only)
--name zeroclaw \ zeroclaw migrate openclaw --dry-run
-e ANTHROPIC_API_KEY=your_key \
-v zeroclaw-data:/app/data \ # Run the migration
zeroclaw/zeroclaw:latest zeroclaw migrate openclaw
``` ```
--- זה מעביר את רשומות הזיכרון, קבצי סביבת העבודה וההגדרות מ-`~/.openclaw/` ל-`~/.zeroclaw/`. ההגדרות מומרות אוטומטית מ-JSON ל-TOML.
## קונפיגורציה ## ברירות מחדל אבטחה (גישת DM)
<p align="center" dir="rtl"> ZeroClaw מתחבר למשטחי הודעות אמיתיים. התייחס ל-DM נכנסים כקלט לא מהימן.
ZeroClaw משתמש בקובץ קונפיגורציה YAML. כברירת מחדל, הוא מחפש `config.yaml`.
מדריך אבטחה מלא: [SECURITY.md](SECURITY.md)
התנהגות ברירת מחדל בכל הערוצים:
- **צימוד DM** (ברירת מחדל): שולחים לא מוכרים מקבלים קוד צימוד קצר והבוט לא מעבד את ההודעה שלהם.
- אשר עם: `zeroclaw pairing approve <channel> <code>` (ואז השולח נוסף לרשימת היתרים מקומית).
- DM נכנסים ציבוריים דורשים הסכמה מפורשת ב-`config.toml`.
- הרץ `zeroclaw doctor` כדי לחשוף מדיניות DM מסוכנת או שגויה.
**רמות אוטונומיה:**
| רמה | התנהגות |
|------|----------|
| `ReadOnly` | הסוכן יכול לצפות אבל לא לפעול |
| `Supervised` (ברירת מחדל) | הסוכן פועל עם אישור לפעולות בסיכון בינוני/גבוה |
| `Full` | הסוכן פועל באופן אוטונומי בגבולות המדיניות |
**שכבות ארגז חול:** בידוד סביבת עבודה, חסימת מעבר נתיבים, רשימות היתר לפקודות, נתיבים אסורים (`/etc`, `/root`, `~/.ssh`), הגבלת קצב (מקסימום פעולות/שעה, מגבלות עלות/יום).
<!-- BEGIN:WHATS_NEW -->
<!-- END:WHATS_NEW -->
### 📢 הודעות
השתמש בלוח זה להודעות חשובות (שינויים שוברים, ייעוץ אבטחה, חלונות תחזוקה וחוסמי שחרור).
| תאריך (UTC) | רמה | הודעה | פעולה |
| ---------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2026-02-19 | _קריטי_ | אנחנו **לא מזוהים** עם `openagen/zeroclaw`, `zeroclaw.org` או `zeroclaw.net`. הדומיינים `zeroclaw.org` ו-`zeroclaw.net` מפנים כרגע ל-fork `openagen/zeroclaw`, ואותו דומיין/מאגר מתחזים לאתר/פרויקט הרשמי שלנו. | אל תסמוך על מידע, בינאריים, גיוס כספים או הודעות ממקורות אלה. השתמש רק ב[מאגר זה](https://github.com/zeroclaw-labs/zeroclaw) ובחשבונות החברתיים המאומתים שלנו. |
| 2026-02-21 | _חשוב_ | האתר הרשמי שלנו כעת פעיל: [zeroclawlabs.ai](https://zeroclawlabs.ai). תודה על הסבלנות בזמן שהכנו את ההשקה. אנחנו עדיין רואים ניסיונות התחזות, לכן **אל** תצטרפו לפעילות השקעה או גיוס כספים הטוענת לשם ZeroClaw אלא אם היא מפורסמת דרך הערוצים הרשמיים שלנו. | השתמש ב[מאגר זה](https://github.com/zeroclaw-labs/zeroclaw) כמקור האמת היחיד. עקוב אחרי [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21), [Facebook (Group)](https://www.facebook.com/groups/zeroclawlabs) ו-[Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/) לעדכונים רשמיים. |
| 2026-02-19 | _חשוב_ | Anthropic עדכנה את תנאי Authentication and Credential Use ב-2026-02-19. אסימוני Claude Code OAuth (Free, Pro, Max) מיועדים אך ורק ל-Claude Code ול-Claude.ai; שימוש באסימוני OAuth מ-Claude Free/Pro/Max בכל מוצר, כלי או שירות אחר (כולל Agent SDK) אינו מותר ועלול להפר את תנאי השירות לצרכן. | אנא הימנעו זמנית מאינטגרציות Claude Code OAuth כדי למנוע אובדן פוטנציאלי. סעיף מקורי: [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use). |
## יתרונות עיקריים
- **סביבת ריצה קלה כברירת מחדל** — תהליכי CLI וסטטוס שגרתיים רצים במעטפת זיכרון של כמה מגה-בייט על בנייות שחרור.
- **פריסה חסכונית** — מתוכנן ללוחות של $10 ומופעי ענן קטנים, ללא תלויות סביבת ריצה כבדות.
- **התחלה קרה מהירה** — סביבת ריצה Rust בבינארי יחיד שומרת על הפעלת פקודות ודמון כמעט מיידית.
- **ארכיטקטורה ניידת** — בינארי אחד על ARM, x86 ו-RISC-V עם ספקים/ערוצים/כלים להחלפה.
- **Gateway מקומי-תחילה** — מישור בקרה יחיד לסשנים, ערוצים, כלים, cron, SOPs ואירועים.
- **תיבת דואר רב-ערוצית** — WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WebSocket, ועוד.
- **תזמור רב-סוכנים (Hands)** — נחילי סוכנים אוטונומיים הפועלים לפי לוח זמנים ומשתפרים עם הזמן.
- **נהלי הפעלה סטנדרטיים (SOPs)** — אוטומציית תהליכי עבודה מונעת אירועים עם MQTT, webhook, cron וטריגרים של התקנים היקפיים.
- **לוח בקרה אינטרנטי** — ממשק משתמש React 19 + Vite עם צ'אט בזמן אמת, דפדפן זיכרון, עורך הגדרות, מנהל cron ומפקח כלים.
- **התקנים היקפיים** — ESP32, STM32 Nucleo, Arduino, Raspberry Pi GPIO דרך trait `Peripheral`.
- **כלים מדרגה ראשונה** — shell, קריאה/כתיבה/עריכת קבצים, git, שליפת/חיפוש אינטרנט, MCP, Jira, Notion, Google Workspace, ו-70+ נוספים.
- **הוקים של מחזור חיים** — יירוט ושינוי קריאות LLM, הרצות כלים והודעות בכל שלב.
- **פלטפורמת מיומנויות** — מיומנויות מובנות, קהילתיות וסביבת עבודה עם ביקורת אבטחה.
- **תמיכה במנהרות** — Cloudflare, Tailscale, ngrok, OpenVPN ומנהרות מותאמות לגישה מרחוק.
### למה צוותים בוחרים ב-ZeroClaw
- **קל כברירת מחדל:** בינארי Rust קטן, הפעלה מהירה, טביעת רגל זיכרון נמוכה.
- **מאובטח מהתכנון:** צימוד, ארגז חול מחמיר, רשימות היתר מפורשות, תיחום סביבת עבודה.
- **ניתן להחלפה מלאה:** מערכות ליבה הן traits (ספקים, ערוצים, כלים, זיכרון, מנהרות).
- **ללא נעילת ספק:** תמיכה בספקים תואמי OpenAI + נקודות קצה מותאמות הניתנות לחיבור.
## תמונת מצב של ביצועים (ZeroClaw מול OpenClaw, ניתן לשחזור)
מדד מהיר על מכונה מקומית (macOS arm64, פברואר 2026) מנורמל לחומרת edge בתדר 0.8GHz.
| | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 |
| ------------------------- | ------------- | -------------- | --------------- | -------------------- |
| **שפה** | TypeScript | Python | Go | **Rust** |
| **RAM** | > 1GB | > 100MB | < 10MB | **< 5MB** |
| **הפעלה (ליבת 0.8GHz)** | > 500s | > 30s | < 1s | **< 10ms** |
| **גודל בינארי** | ~28MB (dist) | N/A (Scripts) | ~8MB | **~8.8 MB** |
| **עלות** | Mac Mini $599 | Linux SBC ~$50 | Linux Board $10 | **כל חומרה $10** |
> הערות: תוצאות ZeroClaw נמדדו על בנייות שחרור באמצעות `/usr/bin/time -l`. OpenClaw דורש סביבת ריצה Node.js (בדרך כלל ~390MB תקורת זיכרון נוספת), בעוד NanoBot דורש סביבת ריצה Python. PicoClaw ו-ZeroClaw הם בינאריים סטטיים. נתוני ה-RAM למעלה הם זיכרון סביבת ריצה; דרישות קומפילציה בזמן בנייה גבוהות יותר.
<p align="center">
<img src="docs/assets/zeroclaw-comparison.jpeg" alt="ZeroClaw vs OpenClaw Comparison" width="800" />
</p> </p>
```yaml ### מדידה מקומית ניתנת לשחזור
# ספק ברירת מחדל
provider: anthropic
# קונפיגורציית ספקים ```bash
providers: cargo build --release
anthropic: ls -lh target/release/zeroclaw
api_key: ${ANTHROPIC_API_KEY}
model: claude-3-5-sonnet-20241022
openai:
api_key: ${OPENAI_API_KEY}
model: gpt-4o
# קונפיגורציית זיכרון /usr/bin/time -l target/release/zeroclaw --help
memory: /usr/bin/time -l target/release/zeroclaw status
backend: sqlite
path: data/memory.db
# קונפיגורציית ערוצים
channels:
telegram:
token: ${TELEGRAM_BOT_TOKEN}
``` ```
--- ## כל מה שבנינו עד כה
### פלטפורמת ליבה
- Gateway HTTP/WS/SSE מישור בקרה עם סשנים, נוכחות, הגדרות, cron, webhooks, לוח בקרה אינטרנטי וצימוד.
- משטח CLI: `gateway`, `agent`, `onboard`, `doctor`, `status`, `service`, `migrate`, `auth`, `cron`, `channel`, `skills`.
- לולאת תזמור סוכן עם שליחת כלים, בניית פרומפט, סיווג הודעות וטעינת זיכרון.
- מודל סשנים עם אכיפת מדיניות אבטחה, רמות אוטונומיה ושער אישור.
- מעטפת ספק עמידה עם מעבר בכשל, ניסיון חוזר וניתוב מודלים על פני 20+ ממשקי LLM.
### ערוצים
ערוצים: WhatsApp (מקורי), Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, DingTalk, Lark, Mattermost, Nextcloud Talk, Nostr, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WATI, Mochat, Linq, Notion, WebSocket, ClawdTalk.
מוגבלי-תכונה: Matrix (`channel-matrix`), Lark (`channel-lark`), Nostr (`channel-nostr`).
### לוח בקרה אינטרנטי
לוח בקרה React 19 + Vite 6 + Tailwind CSS 4 מוגש ישירות מה-Gateway:
- **לוח בקרה** — סקירת מערכת, מצב בריאות, זמן פעילות, מעקב עלויות
- **צ'אט סוכן** — צ'אט אינטראקטיבי עם הסוכן
- **זיכרון** — דפדוף וניהול רשומות זיכרון
- **הגדרות** — צפייה ועריכת הגדרות
- **Cron** — ניהול משימות מתוזמנות
- **כלים** — דפדוף בכלים זמינים
- **יומנים** — צפייה ביומני פעילות הסוכן
- **עלות** — שימוש בטוקנים ומעקב עלויות
- **דוקטור** — אבחון בריאות המערכת
- **אינטגרציות** — מצב אינטגרציות והגדרה
- **צימוד** — ניהול צימוד מכשירים
### יעדי קושחה
| יעד | פלטפורמה | מטרה |
|--------|----------|---------|
| ESP32 | Espressif ESP32 | סוכן היקפי אלחוטי |
| ESP32-UI | ESP32 + Display | סוכן עם ממשק חזותי |
| STM32 Nucleo | STM32 (ARM Cortex-M) | התקן היקפי תעשייתי |
| Arduino | Arduino | גשר חיישן/מפעיל בסיסי |
| Uno Q Bridge | Arduino Uno | גשר סריאלי לסוכן |
### כלים + אוטומציה
- **ליבה:** shell, קריאה/כתיבה/עריכת קבצים, פעולות git, חיפוש glob, חיפוש תוכן
- **אינטרנט:** שליטה בדפדפן, web fetch, web search, צילום מסך, מידע תמונה, קריאת PDF
- **אינטגרציות:** Jira, Notion, Google Workspace, Microsoft 365, LinkedIn, Composio, Pushover
- **MCP:** מעטפת כלי Model Context Protocol + סטים של כלים מושהים
- **תזמון:** cron add/remove/update/run, כלי תזמון
- **זיכרון:** recall, store, forget, knowledge, project intel
- **מתקדם:** delegate (סוכן-לסוכן), swarm, החלפת/ניתוב מודל, פעולות אבטחה, פעולות ענן
- **חומרה:** מידע לוח, מפת זיכרון, קריאת זיכרון (מוגבל-תכונה)
### סביבת ריצה + אבטחה
- **רמות אוטונומיה:** ReadOnly, Supervised (ברירת מחדל), Full.
- **ארגז חול:** בידוד סביבת עבודה, חסימת מעבר נתיבים, רשימות היתר לפקודות, נתיבים אסורים, Landlock (Linux), Bubblewrap.
- **הגבלת קצב:** מקסימום פעולות בשעה, מקסימום עלות ביום (ניתן להגדרה).
- **שער אישור:** אישור אינטראקטיבי לפעולות בסיכון בינוני/גבוה.
- **עצירת חירום:** יכולת כיבוי חירום.
- **129+ מבחני אבטחה** ב-CI אוטומטי.
### תפעול + אריזה
- לוח בקרה אינטרנטי מוגש ישירות מה-Gateway.
- תמיכה במנהרות: Cloudflare, Tailscale, ngrok, OpenVPN, פקודה מותאמת.
- מתאם סביבת ריצה Docker להרצה בקונטיינרים.
- CI/CD: בטא (אוטומטי בדחיפה) → יציב (שליחה ידנית) → Docker, crates.io, Scoop, AUR, Homebrew, ציוץ.
- בינאריים מוכנים מראש ל-Linux (x86_64, aarch64, armv7), macOS (x86_64, aarch64), Windows (x86_64).
## הגדרות
מינימלי `~/.zeroclaw/config.toml`:
```toml
default_provider = "anthropic"
api_key = "sk-ant-..."
```
מדריך הגדרות מלא: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md).
### הגדרת ערוצים
**Telegram:**
```toml
[channels.telegram]
bot_token = "123456:ABC-DEF..."
```
**Discord:**
```toml
[channels.discord]
token = "your-bot-token"
```
**Slack:**
```toml
[channels.slack]
bot_token = "xoxb-..."
app_token = "xapp-..."
```
**WhatsApp:**
```toml
[channels.whatsapp]
enabled = true
```
**Matrix:**
```toml
[channels.matrix]
homeserver_url = "https://matrix.org"
username = "@bot:matrix.org"
password = "..."
```
**Signal:**
```toml
[channels.signal]
phone_number = "+1234567890"
```
### הגדרת מנהרות
```toml
[tunnel]
kind = "cloudflare" # or "tailscale", "ngrok", "openvpn", "custom", "none"
```
פרטים: [מדריך ערוצים](docs/reference/api/channels-reference.md) · [מדריך הגדרות](docs/reference/api/config-reference.md)
### תמיכה בסביבת ריצה (נוכחי)
- **`native`** (ברירת מחדל) — הרצת תהליך ישירה, הנתיב המהיר ביותר, אידיאלי לסביבות מהימנות.
- **`docker`** — בידוד קונטיינר מלא, מדיניות אבטחה נאכפת, דורש Docker.
הגדר `runtime.kind = "docker"` לארגז חול מחמיר או בידוד רשת.
## אימות מנוי (OpenAI Codex / Claude Code / Gemini)
ZeroClaw תומך בפרופילי אימות מקוריים למנוי (רב-חשבוני, מוצפן במנוחה).
- קובץ אחסון: `~/.zeroclaw/auth-profiles.json`
- מפתח הצפנה: `~/.zeroclaw/.secret_key`
- פורמט מזהה פרופיל: `<provider>:<profile_name>` (דוגמה: `openai-codex:work`)
```bash
# OpenAI Codex OAuth (ChatGPT subscription)
zeroclaw auth login --provider openai-codex --device-code
# Gemini OAuth
zeroclaw auth login --provider gemini --profile default
# Anthropic setup-token
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# Check / refresh / switch profile
zeroclaw auth status
zeroclaw auth refresh --provider openai-codex --profile default
zeroclaw auth use --provider openai-codex --profile work
# Run the agent with subscription auth
zeroclaw agent --provider openai-codex -m "hello"
zeroclaw agent --provider anthropic -m "hello"
```
## סביבת עבודה של הסוכן + מיומנויות
שורש סביבת עבודה: `~/.zeroclaw/workspace/` (ניתן להגדרה דרך ההגדרות).
קבצי פרומפט מוזרקים:
- `IDENTITY.md` — אישיות ותפקיד הסוכן
- `USER.md` — הקשר והעדפות המשתמש
- `MEMORY.md` — עובדות ולקחים לטווח ארוך
- `AGENTS.md` — מוסכמות סשן וכללי אתחול
- `SOUL.md` — זהות ליבה ועקרונות הפעלה
מיומנויות: `~/.zeroclaw/workspace/skills/<skill>/SKILL.md` או `SKILL.toml`.
```bash
# List installed skills
zeroclaw skills list
# Install from git
zeroclaw skills install https://github.com/user/my-skill.git
# Security audit before install
zeroclaw skills audit https://github.com/user/my-skill.git
# Remove a skill
zeroclaw skills remove my-skill
```
## פקודות CLI
```bash
# Workspace management
zeroclaw onboard # Guided setup wizard
zeroclaw status # Show daemon/agent status
zeroclaw doctor # Run system diagnostics
# Gateway + daemon
zeroclaw gateway # Start gateway server (127.0.0.1:42617)
zeroclaw daemon # Start full autonomous runtime
# Agent
zeroclaw agent # Interactive chat mode
zeroclaw agent -m "message" # Single message mode
# Service management
zeroclaw service install # Install as OS service (launchd/systemd)
zeroclaw service start|stop|restart|status
# Channels
zeroclaw channel list # List configured channels
zeroclaw channel doctor # Check channel health
zeroclaw channel bind-telegram 123456789
# Cron + scheduling
zeroclaw cron list # List scheduled jobs
zeroclaw cron add "*/5 * * * *" --prompt "Check system health"
zeroclaw cron remove <id>
# Memory
zeroclaw memory list # List memory entries
zeroclaw memory get <key> # Retrieve a memory
zeroclaw memory stats # Memory statistics
# Auth profiles
zeroclaw auth login --provider <name>
zeroclaw auth status
zeroclaw auth use --provider <name> --profile <profile>
# Hardware peripherals
zeroclaw hardware discover # Scan for connected devices
zeroclaw peripheral list # List connected peripherals
zeroclaw peripheral flash # Flash firmware to device
# Migration
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw
# Shell completions
source <(zeroclaw completions bash)
zeroclaw completions zsh > ~/.zfunc/_zeroclaw
```
מדריך פקודות מלא: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
<!-- markdownlint-disable MD001 MD024 -->
## דרישות מקדימות
<details>
<summary><strong>Windows</strong></summary>
#### נדרש
1. **Visual Studio Build Tools** (מספק את מקשר MSVC ו-Windows SDK):
```powershell
winget install Microsoft.VisualStudio.2022.BuildTools
```
במהלך ההתקנה (או דרך Visual Studio Installer), בחר את עומס העבודה **"Desktop development with C++"**.
2. **שרשרת כלים Rust:**
```powershell
winget install Rustlang.Rustup
```
לאחר ההתקנה, פתח טרמינל חדש והרץ `rustup default stable` כדי לוודא ששרשרת הכלים היציבה פעילה.
3. **אמת** ששניהם עובדים:
```powershell
rustc --version
cargo --version
```
#### אופציונלי
- **Docker Desktop** — נדרש רק אם משתמשים ב[סביבת ריצה Docker בארגז חול](#תמיכה-בסביבת-ריצה-נוכחי) (`runtime.kind = "docker"`). התקן דרך `winget install Docker.DockerDesktop`.
</details>
<details>
<summary><strong>Linux / macOS</strong></summary>
#### נדרש
1. **כלי בנייה:**
- **Linux (Debian/Ubuntu):** `sudo apt install build-essential pkg-config`
- **Linux (Fedora/RHEL):** `sudo dnf group install development-tools && sudo dnf install pkg-config`
- **macOS:** התקן Xcode Command Line Tools: `xcode-select --install`
2. **שרשרת כלים Rust:**
```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
ראה [rustup.rs](https://rustup.rs) לפרטים.
3. **אמת** ששניהם עובדים:
```bash
rustc --version
cargo --version
```
#### מתקין בשורה אחת
או דלג על השלבים למעלה והתקן הכל (תלויות מערכת, Rust, ZeroClaw) בפקודה אחת:
```bash
curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash
```
#### דרישות משאבי קומפילציה
בנייה מקוד מקור דורשת יותר משאבים מהרצת הבינארי המתקבל:
| משאב | מינימום | מומלץ |
| -------------- | ------- | ----------- |
| **RAM + swap** | 2 GB | 4 GB+ |
| **דיסק פנוי** | 6 GB | 10 GB+ |
אם המארח שלך מתחת למינימום, השתמש בבינאריים מוכנים מראש:
```bash
./install.sh --prefer-prebuilt
```
כדי לדרוש התקנת בינארי בלבד ללא חלופת מקור:
```bash
./install.sh --prebuilt-only
```
#### אופציונלי
- **Docker** — נדרש רק אם משתמשים ב[סביבת ריצה Docker בארגז חול](#תמיכה-בסביבת-ריצה-נוכחי) (`runtime.kind = "docker"`). התקן דרך מנהל החבילות שלך או [docker.com](https://docs.docker.com/engine/install/).
> **הערה:** ברירת המחדל `cargo build --release` משתמשת ב-`codegen-units=1` כדי להפחית לחץ קומפילציה שיא. לבנייות מהירות יותר על מכונות חזקות, השתמש ב-`cargo build --profile release-fast`.
</details>
<!-- markdownlint-enable MD001 MD024 -->
### בינאריים מוכנים מראש
נכסי שחרור מפורסמים עבור:
- Linux: `x86_64`, `aarch64`, `armv7`
- macOS: `x86_64`, `aarch64`
- Windows: `x86_64`
הורד את הנכסים האחרונים מ:
<https://github.com/zeroclaw-labs/zeroclaw/releases/latest>
## תיעוד ## תיעוד
<p align="center" dir="rtl"> השתמש באלה כשעברת את תהליך ההכניסה ורוצה את המדריך המעמיק יותר.
לתיעוד מפורט, ראה:
</p>
- [מרכז התיעוד](docs/README.md) - התחל עם [אינדקס התיעוד](docs/README.md) לניווט ו"מה נמצא איפה."
- [הפניה לפקודות](docs/commands-reference.md) - קרא את [סקירת הארכיטקטורה](docs/architecture.md) למודל המערכת המלא.
- [הפניה לספקים](docs/providers-reference.md) - השתמש ב[מדריך ההגדרות](docs/reference/api/config-reference.md) כשאתה צריך כל מפתח ודוגמה.
- [הפניה לערוצים](docs/channels-reference.md) - הפעל את ה-Gateway לפי הספר עם [מדריך התפעול](docs/ops/operations-runbook.md).
- [הפניה לקונפיגורציה](docs/config-reference.md) - עקוב אחרי [ZeroClaw Onboard](#התחלה-מהירה) להגדרה מונחית.
- אבחן כשלים נפוצים עם [מדריך פתרון בעיות](docs/ops/troubleshooting.md).
- סקור את [הנחיות האבטחה](docs/security/README.md) לפני חשיפת משהו.
--- ### תיעוד מדריכים
## תרומות - מרכז תיעוד: [docs/README.md](docs/README.md)
- תוכן עניינים מאוחד: [docs/SUMMARY.md](docs/SUMMARY.md)
- מדריך פקודות: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
- מדריך הגדרות: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
- מדריך ספקים: [docs/reference/api/providers-reference.md](docs/reference/api/providers-reference.md)
- מדריך ערוצים: [docs/reference/api/channels-reference.md](docs/reference/api/channels-reference.md)
- מדריך תפעול: [docs/ops/operations-runbook.md](docs/ops/operations-runbook.md)
- פתרון בעיות: [docs/ops/troubleshooting.md](docs/ops/troubleshooting.md)
<p align="center" dir="rtl"> ### תיעוד שיתוף פעולה
תרומות מוזמנות! אנא קרא את [מדריך התרומות](CONTRIBUTING.md).
</p> - מדריך תרומה: [CONTRIBUTING.md](CONTRIBUTING.md)
- מדיניות תהליך PR: [docs/contributing/pr-workflow.md](docs/contributing/pr-workflow.md)
- מדריך תהליך CI: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- מדריך סוקר: [docs/contributing/reviewer-playbook.md](docs/contributing/reviewer-playbook.md)
- מדיניות חשיפת אבטחה: [SECURITY.md](SECURITY.md)
- תבנית תיעוד: [docs/contributing/doc-template.md](docs/contributing/doc-template.md)
### פריסה + תפעול
- מדריך פריסת רשת: [docs/ops/network-deployment.md](docs/ops/network-deployment.md)
- מדריך סוכן פרוקסי: [docs/ops/proxy-agent-playbook.md](docs/ops/proxy-agent-playbook.md)
- מדריכי חומרה: [docs/hardware/README.md](docs/hardware/README.md)
## Smooth Crab 🦀
ZeroClaw נבנה עבור ה-smooth crab 🦀, עוזר AI מהיר ויעיל. נבנה על ידי Argenis De La Rosa והקהילה.
- [zeroclawlabs.ai](https://zeroclawlabs.ai)
- [@zeroclawlabs](https://x.com/zeroclawlabs)
## תמוך ב-ZeroClaw
אם ZeroClaw עוזר לעבודה שלך ואתה רוצה לתמוך בפיתוח המתמשך, אתה יכול לתרום כאן:
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
### 🙏 תודה מיוחדת
תודה מכל הלב לקהילות ולמוסדות שמעוררים השראה ומניעים את עבודת הקוד הפתוח הזו:
- **Harvard University** — על טיפוח סקרנות אינטלקטואלית ודחיפת גבולות האפשרי.
- **MIT** — על קידום ידע פתוח, קוד פתוח והאמונה שטכנולוגיה צריכה להיות נגישה לכולם.
- **Sundai Club** — על הקהילה, האנרגיה והמאמץ הבלתי פוסק לבנות דברים שחשובים.
- **העולם ומעבר** 🌍✨ — לכל תורם, חולם ובונה שם שהופך קוד פתוח לכוח לטובה. זה בשבילכם.
אנחנו בונים בגלוי כי הרעיונות הטובים ביותר מגיעים מכל מקום. אם אתה קורא את זה, אתה חלק מזה. ברוך הבא. 🦀❤️
## תרומה
חדש ב-ZeroClaw? חפש בעיות עם התווית [`good first issue`](https://github.com/zeroclaw-labs/zeroclaw/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) — ראה את [מדריך התרומה](CONTRIBUTING.md#first-time-contributors) שלנו כדי להתחיל. PR של AI/vibe-coded מתקבלים בברכה! 🤖
ראה [CONTRIBUTING.md](CONTRIBUTING.md) ו-[CLA.md](docs/contributing/cla.md). ממש trait, שלח PR:
- מדריך תהליך CI: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- `Provider` חדש → `src/providers/`
- `Channel` חדש → `src/channels/`
- `Observer` חדש → `src/observability/`
- `Tool` חדש → `src/tools/`
- `Memory` חדש → `src/memory/`
- `Tunnel` חדש → `src/tunnel/`
- `Peripheral` חדש → `src/peripherals/`
- `Skill` חדש → `~/.zeroclaw/workspace/skills/<name>/`
<!-- BEGIN:RECENT_CONTRIBUTORS -->
<!-- END:RECENT_CONTRIBUTORS -->
## ⚠️ מאגר רשמי ואזהרת התחזות
**זהו מאגר ZeroClaw הרשמי היחיד:**
> https://github.com/zeroclaw-labs/zeroclaw
כל מאגר, ארגון, דומיין או חבילה אחרים הטוענים להיות "ZeroClaw" או מרמזים על שיוך ל-ZeroClaw Labs הם **לא מורשים ולא מזוהים עם פרויקט זה**. פורקים לא מורשים ידועים ירשמו ב-[TRADEMARK.md](docs/maintainers/trademark.md).
אם אתה נתקל בהתחזות או שימוש לרעה בסימן מסחרי, אנא [פתח issue](https://github.com/zeroclaw-labs/zeroclaw/issues).
--- ---
## רישיון ## רישיון
<p align="center" dir="rtl"> ZeroClaw מורשה ברישיון כפול לפתיחות מקסימלית והגנה על תורמים:
פרויקט זה מורשה ברישיון כפול:
</p>
- MIT License | רישיון | מקרה שימוש |
- Apache License, גרסה 2.0 |---|---|
| [MIT](LICENSE-MIT) | קוד פתוח, מחקר, אקדמי, שימוש אישי |
| [Apache 2.0](LICENSE-APACHE) | הגנת פטנטים, מוסדי, פריסה מסחרית |
<p align="center" dir="rtl"> אתה יכול לבחור כל רישיון. **תורמים מעניקים זכויות באופן אוטומטי תחת שניהם** — ראה [CLA.md](docs/contributing/cla.md) להסכם התורם המלא.
ראה [LICENSE-APACHE](LICENSE-APACHE) ו-[LICENSE-MIT](LICENSE-MIT) לפרטים.
</p> ### סימן מסחרי
השם והלוגו של **ZeroClaw** הם סימנים מסחריים של ZeroClaw Labs. רישיון זה אינו מעניק הרשאה להשתמש בהם כדי לרמוז על תמיכה או שיוך. ראה [TRADEMARK.md](docs/maintainers/trademark.md) לשימושים מותרים ואסורים.
### הגנות על תורמים
- אתה **שומר על זכויות יוצרים** על תרומותיך
- **הענקת פטנט** (Apache 2.0) מגנה עליך מתביעות פטנט של תורמים אחרים
- תרומותיך **מיוחסות באופן קבוע** בהיסטוריית הקומיטים וב-[NOTICE](NOTICE)
- לא מועברות זכויות סימן מסחרי על ידי תרומה
--- ---
## קהילה **ZeroClaw** — אפס תקורה. אפס פשרות. פרוס בכל מקום. החלף הכל. 🦀
- [Telegram](https://t.me/zeroclawlabs) ## תורמים
- [Facebook Group](https://www.facebook.com/groups/zeroclaw)
- [WeChat Group](https://zeroclawlabs.cn/group.jpg)
--- <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors">
<img src="https://contrib.rocks/image?repo=zeroclaw-labs/zeroclaw" alt="ZeroClaw contributors" />
</a>
## נותני חסות רשימה זו נוצרת מגרף התורמים של GitHub ומתעדכנת אוטומטית.
<p align="center" dir="rtl"> ## היסטוריית כוכבים
אם ZeroClaw שימושי עבורך, אנא שקול לקנות לנו קפה:
<p align="center">
<a href="https://www.star-history.com/#zeroclaw-labs/zeroclaw&type=date&legend=top-left">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&theme=dark&legend=top-left" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
</picture>
</a>
</p> </p>
[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee)](https://buymeacoffee.com/argenistherose)
<!-- BEGIN:RECENT_CONTRIBUTORS -->
### 🌟 Recent Contributors (v0.3.1)
3 contributors shipped features, fixes, and improvements in this release cycle:
- **Argenis**
- **argenis de la rosa**
- **Claude Opus 4.6**
Thank you to everyone who opened issues, reviewed PRs, translated docs, and helped test. Every contribution matters. 🦀
<!-- END:RECENT_CONTRIBUTORS -->

View File

@ -1,23 +1,29 @@
<p align="center"> <p align="center">
<img src="zeroclaw.png" alt="ZeroClaw" width="200" /> <img src="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/docs/assets/zeroclaw-banner.png" alt="ZeroClaw" width="600" />
</p> </p>
<h1 align="center">ZeroClaw 🦀</h1> <h1 align="center">🦀 ZeroClaw — व्यक्तिगत AI सहायक</h1>
<p align="center"> <p align="center">
<strong>शून्य ओवरहेड। शून्य समझौता। 100% रस्ट। 100% अज्ञेयवादी।</strong><br> <strong>शून्य ओवरहेड। शून्य समझौता। 100% Rust। 100% अज्ञेयवादी।</strong><br>
⚡️ <strong>$10 हार्डवेयर पर <5MB RAM के चलत है: यह OpenClaw से 99% कम मेम और Mac mini से 98% सस्त है!</strong> ⚡️ <strong>$10 के हार्डवेयर पर <5MB RAM के चलत है: यह OpenClaw से 99% कम मेम और Mac mini से 98% सस्त है!</strong>
</p> </p>
<p align="center"> <p align="center">
<a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a> <a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
<a href="NOTICE"><img src="https://img.shields.io/badge/contributors-27+-green.svg" alt="Contributors" /></a> <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors"><img src="https://img.shields.io/github/contributors/zeroclaw-labs/zeroclaw?color=green" alt="Contributors" /></a>
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a> <a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
<a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a> <a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a>
<a href="https://zeroclawlabs.cn/group.jpg"><img src="https://img.shields.io/badge/WeChat-Group-B7D7A8?logo=wechat&logoColor=white" alt="WeChat Group" /></a> <a href="https://www.facebook.com/groups/zeroclawlabs"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a>
<a href="https://www.xiaohongshu.com/user/profile/67cbfc43000000000d008307?xsec_token=AB73VnYnGNx5y36EtnnZfGmAmS-6Wzv8WMuGpfwfkg6Yc%3D&xsec_source=pc_search"><img src="https://img.shields.io/badge/Xiaohongshu-Official-FF2442?style=flat" alt="Xiaohongshu: Official" /></a> <a href="https://discord.com/invite/wDshRVqRjx"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://t.me/zeroclawlabs"><img src="https://img.shields.io/badge/Telegram-%40zeroclawlabs-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @zeroclawlabs" /></a> <a href="https://www.instagram.com/therealzeroclaw"><img src="https://img.shields.io/badge/Instagram-%40therealzeroclaw-E4405F?style=flat&logo=instagram&logoColor=white" alt="Instagram: @therealzeroclaw" /></a>
<a href="https://www.facebook.com/groups/zeroclaw"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a> <a href="https://www.tiktok.com/@zeroclawlabs"><img src="https://img.shields.io/badge/TikTok-%40zeroclawlabs-000000?style=flat&logo=tiktok&logoColor=white" alt="TikTok: @zeroclawlabs" /></a>
<a href="https://www.rednote.com/user/profile/69b735e6000000002603927e"><img src="https://img.shields.io/badge/RedNote-Official-FF2442?style=flat" alt="RedNote" /></a>
<a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a>
</p>
<p align="center">
Harvard, MIT, और Sundai.Club समुदायों के छात्रों और सदस्यों द्वारा निर्मित।
</p> </p>
<p align="center"> <p align="center">
@ -55,149 +61,695 @@
<a href="README.nb.md">🇳🇴 Norsk</a> <a href="README.nb.md">🇳🇴 Norsk</a>
</p> </p>
--- ZeroClaw एक व्यक्तिगत AI सहायक है जिसे आप अपने उपकरणों पर चलाते हैं। यह आपको उन चैनलों पर जवाब देता है जो आप पहले से उपयोग करते हैं (WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, और अन्य)। इसमें रियल-टाइम नियंत्रण के लिए एक वेब डैशबोर्ड है और यह हार्डवेयर पेरीफेरल (ESP32, STM32, Arduino, Raspberry Pi) से जुड़ सकता है। Gateway केवल कंट्रोल प्लेन है — उत्पाद सहायक है।
<!-- BEGIN:WHATS_NEW --> यदि आप एक व्यक्तिगत, एकल-उपयोगकर्ता सहायक चाहते हैं जो स्थानीय, तेज़ और हमेशा चालू महसूस हो, तो यह है।
### 🚀 What's New in v0.3.1 (March 2026) <p align="center">
<a href="https://zeroclawlabs.ai">वेबसाइट</a> ·
<a href="docs/README.md">दस्तावेज़</a> ·
<a href="docs/architecture.md">आर्किटेक्चर</a> ·
<a href="#त्वरित-शुरुआत">शुरू करें</a> ·
<a href="#openclaw-से-माइग्रेशन">OpenClaw से माइग्रेशन</a> ·
<a href="docs/ops/troubleshooting.md">समस्या निवारण</a> ·
<a href="https://discord.com/invite/wDshRVqRjx">Discord</a>
</p>
| Area | Highlights | > **पसंदीदा सेटअप:** अपने टर्मिनल में `zeroclaw onboard` चलाएँ। ZeroClaw Onboard आपको gateway, workspace, channels, और provider सेट करने में कदम-दर-कदम मार्गदर्शन करता है। यह अनुशंसित सेटअप पथ है और macOS, Linux, और Windows (WSL2 के माध्यम से) पर काम करता है। नया इंस्टॉल? यहाँ से शुरू करें: [शुरू करें](#त्वरित-शुरुआत)
|---|---|
| ci | add Termux (aarch64-linux-android) release target |
<!-- END:WHATS_NEW --> ### सब्सक्रिप्शन ऑथ (OAuth)
## ZeroClaw क्या है? - **OpenAI Codex** (ChatGPT सब्सक्रिप्शन)
- **Gemini** (Google OAuth)
- **Anthropic** (API key या auth token)
ZeroClaw एक हल्का, म्यूटेबल और एक्स्टेंसिबल AI असिस्टेंट इन्फ्रास्ट्रक्चर है जो रस्ट में बनाया गया है। यह विभिन्न LLM प्रदाताओं (Anthropic, OpenAI, Google, Ollama, आदि) को एक एकीकृत इंटरफेस के माध्यम से कनेक्ट करता है और कई चैनलों (Telegram, Matrix, CLI, आदि) का समर्थन करता है। मॉडल नोट: जबकि कई प्रदाताओं/मॉडलों का समर्थन किया जाता है, सर्वोत्तम अनुभव के लिए अपने पास उपलब्ध सबसे मजबूत नवीनतम पीढ़ी के मॉडल का उपयोग करें। देखें [ऑनबोर्डिंग](#त्वरित-शुरुआत)
### मुख्य विशेषताएं मॉडल कॉन्फ़िग + CLI: [प्रदाता संदर्भ](docs/reference/api/providers-reference.md)
ऑथ प्रोफ़ाइल रोटेशन (OAuth बनाम API keys) + फ़ेलओवर: [मॉडल फ़ेलओवर](docs/reference/api/providers-reference.md)
- **🦀 रस्ट में लिखा गया**: उच्च प्रदर्शन, मेमोरी सुरक्षा, और शून्य-लागत एब्सट्रैक्शन ## इंस्टॉल (अनुशंसित)
- **🔌 प्रदाता-अज्ञेयवादी**: OpenAI, Anthropic, Google Gemini, Ollama, और अन्य का समर्थन
- **📱 बहु-चैनल**: Telegram, Matrix (E2EE के साथ), CLI, और अन्य
- **🧠 प्लगेबल मेमोरी**: SQLite और Markdown बैकएंड
- **🛠️ विस्तार योग्य टूल**: आसानी से कस्टम टूल जोड़ें
- **🔒 सुरक्षा-पहले**: रिवर्स-प्रॉक्सी, गोपनीयता-पहले डिज़ाइन
--- रनटाइम: Rust स्थिर टूलचेन। एकल बाइनरी, कोई रनटाइम निर्भरता नहीं।
## त्वरित शुरुआत ### Homebrew (macOS/Linuxbrew)
### आवश्यकताएं ```bash
brew install zeroclaw
- रस्ट 1.70+ ```
- एक LLM प्रदाता API कुंजी (Anthropic, OpenAI, आदि)
### एक-क्लिक बूटस्ट्रैप
### इंस्टॉलेशन
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./install.sh
```
`zeroclaw onboard` इंस्टॉल के बाद स्वचालित रूप से चलता है ताकि आपका workspace और provider कॉन्फ़िगर हो सके।
## त्वरित शुरुआत (TL;DR)
पूर्ण शुरुआती गाइड (ऑथ, पेयरिंग, चैनल): [शुरू करें](docs/setup-guides/one-click-bootstrap.md)
```bash
# Install + onboard
./install.sh --api-key "sk-..." --provider openrouter
# Start the gateway (webhook server + web dashboard)
zeroclaw gateway # default: 127.0.0.1:42617
zeroclaw gateway --port 0 # random port (security hardened)
# Talk to the assistant
zeroclaw agent -m "Hello, ZeroClaw!"
# Interactive mode
zeroclaw agent
# Start full autonomous runtime (gateway + channels + cron + hands)
zeroclaw daemon
# Check status
zeroclaw status
# Run diagnostics
zeroclaw doctor
```
अपग्रेड कर रहे हैं? अपडेट के बाद `zeroclaw doctor` चलाएँ।
### स्रोत से (विकास)
```bash ```bash
# रिपॉजिटरी क्लोन करें
git clone https://github.com/zeroclaw-labs/zeroclaw.git git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw cd zeroclaw
# बिल्ड करें cargo build --release --locked
cargo build --release cargo install --path . --force --locked
# चलाएं zeroclaw onboard
cargo run --release
``` ```
### Docker के साथ > **विकास फ़ॉलबैक (कोई ग्लोबल इंस्टॉल नहीं):** कमांड के आगे `cargo run --release --` लगाएँ (उदाहरण: `cargo run --release -- status`)।
## OpenClaw से माइग्रेशन
ZeroClaw आपके OpenClaw workspace, मेमोरी, और कॉन्फ़िगरेशन आयात कर सकता है:
```bash ```bash
docker run -d \ # Preview what will be migrated (safe, read-only)
--name zeroclaw \ zeroclaw migrate openclaw --dry-run
-e ANTHROPIC_API_KEY=your_key \
-v zeroclaw-data:/app/data \ # Run the migration
zeroclaw/zeroclaw:latest zeroclaw migrate openclaw
``` ```
--- यह आपकी मेमोरी प्रविष्टियों, workspace फ़ाइलों, और कॉन्फ़िगरेशन को `~/.openclaw/` से `~/.zeroclaw/` में माइग्रेट करता है। कॉन्फ़िग स्वचालित रूप से JSON से TOML में परिवर्तित हो जाता है।
## सुरक्षा डिफ़ॉल्ट (DM एक्सेस)
ZeroClaw वास्तविक मैसेजिंग सतहों से जुड़ता है। इनबाउंड DMs को अविश्वसनीय इनपुट के रूप में मानें।
पूर्ण सुरक्षा गाइड: [SECURITY.md](SECURITY.md)
सभी चैनलों पर डिफ़ॉल्ट व्यवहार:
- **DM पेयरिंग** (डिफ़ॉल्ट): अज्ञात प्रेषकों को एक छोटा पेयरिंग कोड मिलता है और बॉट उनका संदेश प्रोसेस नहीं करता।
- इससे स्वीकृति दें: `zeroclaw pairing approve <channel> <code>` (फिर प्रेषक स्थानीय अनुमति सूची में जोड़ा जाता है)।
- सार्वजनिक इनबाउंड DMs के लिए `config.toml` में स्पष्ट ऑप्ट-इन आवश्यक है।
- जोखिमपूर्ण या गलत कॉन्फ़िगर DM नीतियों को सामने लाने के लिए `zeroclaw doctor` चलाएँ।
**स्वायत्तता स्तर:**
| स्तर | व्यवहार |
|-------|----------|
| `ReadOnly` | एजेंट देख सकता है लेकिन कार्य नहीं कर सकता |
| `Supervised` (डिफ़ॉल्ट) | एजेंट मध्यम/उच्च जोखिम संचालन के लिए स्वीकृति के साथ कार्य करता है |
| `Full` | एजेंट नीति सीमाओं के भीतर स्वायत्त रूप से कार्य करता है |
**सैंडबॉक्सिंग परतें:** workspace आइसोलेशन, पथ ट्रैवर्सल ब्लॉकिंग, कमांड अनुमति सूची, प्रतिबंधित पथ (`/etc`, `/root`, `~/.ssh`), दर सीमित करना (अधिकतम कार्य/घंटा, लागत/दिन सीमा)।
<!-- BEGIN:WHATS_NEW -->
<!-- END:WHATS_NEW -->
### 📢 घोषणाएँ
महत्वपूर्ण सूचनाओं (ब्रेकिंग बदलाव, सुरक्षा सलाह, रखरखाव विंडो, और रिलीज़ ब्लॉकर) के लिए इस बोर्ड का उपयोग करें।
| तिथि (UTC) | स्तर | सूचना | कार्रवाई |
| ---------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2026-02-19 | _गंभीर_ | हम `openagen/zeroclaw`, `zeroclaw.org` या `zeroclaw.net` से **संबद्ध नहीं** हैं। `zeroclaw.org` और `zeroclaw.net` डोमेन वर्तमान में `openagen/zeroclaw` फ़ोर्क की ओर इशारा करते हैं, और वह डोमेन/रिपॉजिटरी हमारी आधिकारिक वेबसाइट/प्रोजेक्ट का रूप धारण कर रहे हैं। | उन स्रोतों से जानकारी, बाइनरी, फंडरेजिंग, या घोषणाओं पर भरोसा न करें। केवल [यह रिपॉजिटरी](https://github.com/zeroclaw-labs/zeroclaw) और हमारे सत्यापित सोशल अकाउंट्स का उपयोग करें। |
| 2026-02-21 | _महत्वपूर्ण_ | हमारी आधिकारिक वेबसाइट अब लाइव है: [zeroclawlabs.ai](https://zeroclawlabs.ai)। लॉन्च की तैयारी करते समय आपके धैर्य के लिए धन्यवाद। हम अभी भी प्रतिरूपण प्रयास देख रहे हैं, इसलिए किसी भी निवेश या फंडरेजिंग गतिविधि में **शामिल न हों** जो ZeroClaw नाम का दावा करती है जब तक कि यह हमारे आधिकारिक चैनलों के माध्यम से प्रकाशित न हो। | [यह रिपॉजिटरी](https://github.com/zeroclaw-labs/zeroclaw) को सत्य के एकमात्र स्रोत के रूप में उपयोग करें। आधिकारिक अपडेट के लिए [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21), [Facebook (Group)](https://www.facebook.com/groups/zeroclawlabs), और [Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/) को फ़ॉलो करें। |
| 2026-02-19 | _महत्वपूर्ण_ | Anthropic ने 2026-02-19 को Authentication and Credential Use शर्तें अपडेट कीं। Claude Code OAuth टोकन (Free, Pro, Max) विशेष रूप से Claude Code और Claude.ai के लिए हैं; Claude Free/Pro/Max से OAuth टोकन का किसी अन्य उत्पाद, उपकरण, या सेवा (Agent SDK सहित) में उपयोग अनुमत नहीं है और उपभोक्ता सेवा की शर्तों का उल्लंघन हो सकता है। | संभावित नुकसान को रोकने के लिए कृपया Claude Code OAuth एकीकरण से अस्थायी रूप से बचें। मूल खंड: [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use)। |
## मुख्य विशेषताएँ
- **डिफ़ॉल्ट रूप से हल्का रनटाइम** — सामान्य CLI और स्थिति वर्कफ़्लो रिलीज़ बिल्ड पर कुछ-मेगाबाइट मेमोरी एन्वेलप में चलते हैं।
- **लागत-कुशल डिप्लॉयमेंट** — $10 बोर्ड और छोटे क्लाउड इंस्टेंस के लिए डिज़ाइन किया गया, कोई भारी रनटाइम निर्भरता नहीं।
- **तेज़ कोल्ड स्टार्ट** — एकल-बाइनरी Rust रनटाइम कमांड और डेमन स्टार्टअप को लगभग तत्काल रखता है।
- **पोर्टेबल आर्किटेक्चर** — ARM, x86, और RISC-V पर एक बाइनरी जिसमें स्वैपेबल प्रदाता/चैनल/उपकरण हैं।
- **लोकल-फर्स्ट Gateway** — सेशन, चैनल, टूल, cron, SOPs, और इवेंट के लिए एकल कंट्रोल प्लेन।
- **मल्टी-चैनल इनबॉक्स** — WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WebSocket, और अन्य।
- **मल्टी-एजेंट ऑर्केस्ट्रेशन (Hands)** — स्वायत्त एजेंट स्वार्म जो शेड्यूल पर चलते हैं और समय के साथ स्मार्ट होते जाते हैं।
- **मानक संचालन प्रक्रियाएँ (SOPs)** — MQTT, webhook, cron, और पेरीफेरल ट्रिगर के साथ इवेंट-ड्रिवन वर्कफ़्लो ऑटोमेशन।
- **वेब डैशबोर्ड** — React 19 + Vite वेब UI जिसमें रियल-टाइम चैट, मेमोरी ब्राउज़र, कॉन्फ़िग एडिटर, cron मैनेजर, और टूल इंस्पेक्टर है।
- **हार्डवेयर पेरीफेरल**`Peripheral` trait के माध्यम से ESP32, STM32 Nucleo, Arduino, Raspberry Pi GPIO।
- **प्रथम-श्रेणी उपकरण** — shell, फ़ाइल I/O, browser, git, वेब fetch/search, MCP, Jira, Notion, Google Workspace, और 70+ अन्य।
- **लाइफसाइकल हुक** — हर चरण पर LLM कॉल, टूल निष्पादन, और संदेशों को इंटरसेप्ट और संशोधित करें।
- **स्किल प्लेटफ़ॉर्म** — बंडल, समुदाय, और workspace स्किल जिनमें सुरक्षा ऑडिटिंग है।
- **टनल सपोर्ट** — रिमोट एक्सेस के लिए Cloudflare, Tailscale, ngrok, OpenVPN, और कस्टम टनल।
### टीमें ZeroClaw क्यों चुनती हैं
- **डिफ़ॉल्ट रूप से हल्का:** छोटी Rust बाइनरी, तेज़ स्टार्टअप, कम मेमोरी फुटप्रिंट।
- **डिज़ाइन से सुरक्षित:** पेयरिंग, सख्त सैंडबॉक्सिंग, स्पष्ट अनुमति सूचियाँ, workspace स्कोपिंग।
- **पूरी तरह से स्वैपेबल:** कोर सिस्टम traits हैं (providers, channels, tools, memory, tunnels)।
- **कोई लॉक-इन नहीं:** OpenAI-संगत प्रदाता समर्थन + प्लगेबल कस्टम एंडपॉइंट।
## बेंचमार्क स्नैपशॉट (ZeroClaw बनाम OpenClaw, प्रतिलिपि योग्य)
स्थानीय मशीन त्वरित बेंचमार्क (macOS arm64, फ़रवरी 2026) 0.8GHz एज हार्डवेयर के लिए सामान्यीकृत।
| | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 |
| ------------------------- | ------------- | -------------- | --------------- | -------------------- |
| **भाषा** | TypeScript | Python | Go | **Rust** |
| **RAM** | > 1GB | > 100MB | < 10MB | **< 5MB** |
| **स्टार्टअप (0.8GHz कोर)** | > 500s | > 30s | < 1s | **< 10ms** |
| **बाइनरी आकार** | ~28MB (dist) | N/A (Scripts) | ~8MB | **~8.8 MB** |
| **लागत** | Mac Mini $599 | Linux SBC ~$50 | Linux Board $10 | **कोई भी हार्डवेयर $10** |
> नोट: ZeroClaw परिणाम `/usr/bin/time -l` का उपयोग करके रिलीज़ बिल्ड पर मापे गए हैं। OpenClaw को Node.js रनटाइम की आवश्यकता है (आमतौर पर ~390MB अतिरिक्त मेमोरी ओवरहेड), जबकि NanoBot को Python रनटाइम की आवश्यकता है। PicoClaw और ZeroClaw स्टैटिक बाइनरी हैं। ऊपर दिए गए RAM आँकड़े रनटाइम मेमोरी हैं; बिल्ड-टाइम कंपाइलेशन आवश्यकताएँ अधिक हैं।
<p align="center">
<img src="docs/assets/zeroclaw-comparison.jpeg" alt="ZeroClaw vs OpenClaw Comparison" width="800" />
</p>
### प्रतिलिपि योग्य स्थानीय माप
```bash
cargo build --release
ls -lh target/release/zeroclaw
/usr/bin/time -l target/release/zeroclaw --help
/usr/bin/time -l target/release/zeroclaw status
```
## अब तक हमने जो कुछ बनाया है
### कोर प्लेटफ़ॉर्म
- Gateway HTTP/WS/SSE कंट्रोल प्लेन जिसमें सेशन, प्रेज़ेंस, कॉन्फ़िग, cron, webhooks, वेब डैशबोर्ड, और पेयरिंग है।
- CLI सरफेस: `gateway`, `agent`, `onboard`, `doctor`, `status`, `service`, `migrate`, `auth`, `cron`, `channel`, `skills`
- एजेंट ऑर्केस्ट्रेशन लूप जिसमें टूल डिस्पैच, प्रॉम्प्ट निर्माण, संदेश वर्गीकरण, और मेमोरी लोडिंग है।
- सुरक्षा नीति प्रवर्तन, स्वायत्तता स्तर, और अनुमोदन गेटिंग के साथ सेशन मॉडल।
- 20+ LLM बैकएंड पर फ़ेलओवर, रिट्राई, और मॉडल रूटिंग के साथ रेज़िलिएंट प्रदाता रैपर।
### चैनल
चैनल: WhatsApp (नेटिव), Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, DingTalk, Lark, Mattermost, Nextcloud Talk, Nostr, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WATI, Mochat, Linq, Notion, WebSocket, ClawdTalk।
फ़ीचर-गेटेड: Matrix (`channel-matrix`), Lark (`channel-lark`), Nostr (`channel-nostr`)।
### वेब डैशबोर्ड
React 19 + Vite 6 + Tailwind CSS 4 वेब डैशबोर्ड सीधे Gateway से सर्व किया जाता है:
- **डैशबोर्ड** — सिस्टम अवलोकन, स्वास्थ्य स्थिति, अपटाइम, लागत ट्रैकिंग
- **एजेंट चैट** — एजेंट के साथ इंटरैक्टिव चैट
- **मेमोरी** — मेमोरी प्रविष्टियाँ ब्राउज़ और प्रबंधित करें
- **कॉन्फ़िग** — कॉन्फ़िगरेशन देखें और संपादित करें
- **Cron** — शेड्यूल किए गए कार्य प्रबंधित करें
- **टूल्स** — उपलब्ध उपकरण ब्राउज़ करें
- **लॉग्स** — एजेंट गतिविधि लॉग देखें
- **लागत** — टोकन उपयोग और लागत ट्रैकिंग
- **डॉक्टर** — सिस्टम स्वास्थ्य डायग्नोस्टिक्स
- **इंटीग्रेशन** — इंटीग्रेशन स्थिति और सेटअप
- **पेयरिंग** — डिवाइस पेयरिंग प्रबंधन
### फ़र्मवेयर लक्ष्य
| लक्ष्य | प्लेटफ़ॉर्म | उद्देश्य |
|--------|----------|---------|
| ESP32 | Espressif ESP32 | वायरलेस पेरीफेरल एजेंट |
| ESP32-UI | ESP32 + Display | विज़ुअल इंटरफ़ेस वाला एजेंट |
| STM32 Nucleo | STM32 (ARM Cortex-M) | औद्योगिक पेरीफेरल |
| Arduino | Arduino | बेसिक सेंसर/एक्चुएटर ब्रिज |
| Uno Q Bridge | Arduino Uno | एजेंट के लिए सीरियल ब्रिज |
### उपकरण + ऑटोमेशन
- **कोर:** shell, फ़ाइल read/write/edit, git ऑपरेशन, glob search, content search
- **वेब:** ब्राउज़र नियंत्रण, web fetch, web search, screenshot, image info, PDF read
- **इंटीग्रेशन:** Jira, Notion, Google Workspace, Microsoft 365, LinkedIn, Composio, Pushover
- **MCP:** Model Context Protocol टूल रैपर + डिफ़र्ड टूल सेट
- **शेड्यूलिंग:** cron add/remove/update/run, schedule tool
- **मेमोरी:** recall, store, forget, knowledge, project intel
- **उन्नत:** delegate (एजेंट-टू-एजेंट), swarm, model switch/routing, security ops, cloud ops
- **हार्डवेयर:** board info, memory map, memory read (फ़ीचर-गेटेड)
### रनटाइम + सुरक्षा
- **स्वायत्तता स्तर:** ReadOnly, Supervised (डिफ़ॉल्ट), Full।
- **सैंडबॉक्सिंग:** workspace आइसोलेशन, पथ ट्रैवर्सल ब्लॉकिंग, कमांड अनुमति सूचियाँ, प्रतिबंधित पथ, Landlock (Linux), Bubblewrap।
- **दर सीमित:** प्रति घंटे अधिकतम कार्य, प्रति दिन अधिकतम लागत (कॉन्फ़िगर योग्य)।
- **अनुमोदन गेटिंग:** मध्यम/उच्च जोखिम संचालन के लिए इंटरैक्टिव अनुमोदन।
- **आपातकालीन रोक:** आपातकालीन शटडाउन क्षमता।
- **129+ सुरक्षा परीक्षण** स्वचालित CI में।
### ऑप्स + पैकेजिंग
- वेब डैशबोर्ड सीधे Gateway से सर्व किया जाता है।
- टनल सपोर्ट: Cloudflare, Tailscale, ngrok, OpenVPN, कस्टम कमांड।
- कंटेनराइज़्ड निष्पादन के लिए Docker रनटाइम एडेप्टर।
- CI/CD: बीटा (पुश पर ऑटो) → स्टेबल (मैनुअल डिस्पैच) → Docker, crates.io, Scoop, AUR, Homebrew, ट्वीट।
- Linux (x86_64, aarch64, armv7), macOS (x86_64, aarch64), Windows (x86_64) के लिए प्री-बिल्ट बाइनरी।
## कॉन्फ़िगरेशन ## कॉन्फ़िगरेशन
ZeroClaw एक YAML कॉन्फ़िगरेशन फ़ाइल का उपयोग करता है। डिफ़ॉल्ट रूप से, यह `config.yaml` देखता है। न्यूनतम `~/.zeroclaw/config.toml`:
```yaml ```toml
# डिफ़ॉल्ट प्रदाता default_provider = "anthropic"
provider: anthropic api_key = "sk-ant-..."
# प्रदाता कॉन्फ़िगरेशन
providers:
anthropic:
api_key: ${ANTHROPIC_API_KEY}
model: claude-3-5-sonnet-20241022
openai:
api_key: ${OPENAI_API_KEY}
model: gpt-4o
# मेमोरी कॉन्फ़िगरेशन
memory:
backend: sqlite
path: data/memory.db
# चैनल कॉन्फ़िगरेशन
channels:
telegram:
token: ${TELEGRAM_BOT_TOKEN}
``` ```
--- पूर्ण कॉन्फ़िगरेशन संदर्भ: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)।
## दस्तावेज़ीकरण ### चैनल कॉन्फ़िगरेशन
विस्तृत दस्तावेज़ीकरण के लिए, देखें: **Telegram:**
```toml
[channels.telegram]
bot_token = "123456:ABC-DEF..."
```
- [दस्तावेज़ीकरण हब](docs/README.md) **Discord:**
- [कमांड संदर्भ](docs/commands-reference.md) ```toml
- [प्रदाता संदर्भ](docs/providers-reference.md) [channels.discord]
- [चैनल संदर्भ](docs/channels-reference.md) token = "your-bot-token"
- [कॉन्फ़िगरेशन संदर्भ](docs/config-reference.md) ```
--- **Slack:**
```toml
[channels.slack]
bot_token = "xoxb-..."
app_token = "xapp-..."
```
**WhatsApp:**
```toml
[channels.whatsapp]
enabled = true
```
**Matrix:**
```toml
[channels.matrix]
homeserver_url = "https://matrix.org"
username = "@bot:matrix.org"
password = "..."
```
**Signal:**
```toml
[channels.signal]
phone_number = "+1234567890"
```
### टनल कॉन्फ़िगरेशन
```toml
[tunnel]
kind = "cloudflare" # or "tailscale", "ngrok", "openvpn", "custom", "none"
```
विवरण: [चैनल संदर्भ](docs/reference/api/channels-reference.md) · [कॉन्फ़िग संदर्भ](docs/reference/api/config-reference.md)
### रनटाइम सपोर्ट (वर्तमान)
- **`native`** (डिफ़ॉल्ट) — सीधा प्रोसेस निष्पादन, सबसे तेज़ पथ, विश्वसनीय वातावरण के लिए आदर्श।
- **`docker`** — पूर्ण कंटेनर आइसोलेशन, लागू सुरक्षा नीतियाँ, Docker आवश्यक।
सख्त सैंडबॉक्सिंग या नेटवर्क आइसोलेशन के लिए `runtime.kind = "docker"` सेट करें।
## सब्सक्रिप्शन ऑथ (OpenAI Codex / Claude Code / Gemini)
ZeroClaw सब्सक्रिप्शन-नेटिव ऑथ प्रोफ़ाइल का समर्थन करता है (मल्टी-अकाउंट, रेस्ट पर एन्क्रिप्टेड)।
- स्टोर फ़ाइल: `~/.zeroclaw/auth-profiles.json`
- एन्क्रिप्शन कुंजी: `~/.zeroclaw/.secret_key`
- प्रोफ़ाइल id फ़ॉर्मेट: `<provider>:<profile_name>` (उदाहरण: `openai-codex:work`)
```bash
# OpenAI Codex OAuth (ChatGPT subscription)
zeroclaw auth login --provider openai-codex --device-code
# Gemini OAuth
zeroclaw auth login --provider gemini --profile default
# Anthropic setup-token
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# Check / refresh / switch profile
zeroclaw auth status
zeroclaw auth refresh --provider openai-codex --profile default
zeroclaw auth use --provider openai-codex --profile work
# Run the agent with subscription auth
zeroclaw agent --provider openai-codex -m "hello"
zeroclaw agent --provider anthropic -m "hello"
```
## एजेंट workspace + स्किल
Workspace रूट: `~/.zeroclaw/workspace/` (कॉन्फ़िग के माध्यम से कॉन्फ़िगर करने योग्य)।
इंजेक्ट किए गए प्रॉम्प्ट फ़ाइलें:
- `IDENTITY.md` — एजेंट का व्यक्तित्व और भूमिका
- `USER.md` — उपयोगकर्ता संदर्भ और प्राथमिकताएँ
- `MEMORY.md` — दीर्घकालिक तथ्य और सबक
- `AGENTS.md` — सेशन सम्मेलन और इनिशियलाइज़ेशन नियम
- `SOUL.md` — कोर पहचान और संचालन सिद्धांत
स्किल: `~/.zeroclaw/workspace/skills/<skill>/SKILL.md` या `SKILL.toml`
```bash
# List installed skills
zeroclaw skills list
# Install from git
zeroclaw skills install https://github.com/user/my-skill.git
# Security audit before install
zeroclaw skills audit https://github.com/user/my-skill.git
# Remove a skill
zeroclaw skills remove my-skill
```
## CLI कमांड
```bash
# Workspace management
zeroclaw onboard # Guided setup wizard
zeroclaw status # Show daemon/agent status
zeroclaw doctor # Run system diagnostics
# Gateway + daemon
zeroclaw gateway # Start gateway server (127.0.0.1:42617)
zeroclaw daemon # Start full autonomous runtime
# Agent
zeroclaw agent # Interactive chat mode
zeroclaw agent -m "message" # Single message mode
# Service management
zeroclaw service install # Install as OS service (launchd/systemd)
zeroclaw service start|stop|restart|status
# Channels
zeroclaw channel list # List configured channels
zeroclaw channel doctor # Check channel health
zeroclaw channel bind-telegram 123456789
# Cron + scheduling
zeroclaw cron list # List scheduled jobs
zeroclaw cron add "*/5 * * * *" --prompt "Check system health"
zeroclaw cron remove <id>
# Memory
zeroclaw memory list # List memory entries
zeroclaw memory get <key> # Retrieve a memory
zeroclaw memory stats # Memory statistics
# Auth profiles
zeroclaw auth login --provider <name>
zeroclaw auth status
zeroclaw auth use --provider <name> --profile <profile>
# Hardware peripherals
zeroclaw hardware discover # Scan for connected devices
zeroclaw peripheral list # List connected peripherals
zeroclaw peripheral flash # Flash firmware to device
# Migration
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw
# Shell completions
source <(zeroclaw completions bash)
zeroclaw completions zsh > ~/.zfunc/_zeroclaw
```
पूर्ण कमांड संदर्भ: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
<!-- markdownlint-disable MD001 MD024 -->
## पूर्वापेक्षाएँ
<details>
<summary><strong>Windows</strong></summary>
#### आवश्यक
1. **Visual Studio Build Tools** (MSVC लिंकर और Windows SDK प्रदान करता है):
```powershell
winget install Microsoft.VisualStudio.2022.BuildTools
```
इंस्टॉलेशन के दौरान (या Visual Studio Installer के माध्यम से), **"Desktop development with C++"** वर्कलोड चुनें।
2. **Rust टूलचेन:**
```powershell
winget install Rustlang.Rustup
```
इंस्टॉलेशन के बाद, एक नया टर्मिनल खोलें और `rustup default stable` चलाएँ ताकि स्थिर टूलचेन सक्रिय हो।
3. **सत्यापित करें** कि दोनों काम कर रहे हैं:
```powershell
rustc --version
cargo --version
```
#### वैकल्पिक
- **Docker Desktop** — केवल तभी आवश्यक जब [Docker सैंडबॉक्स्ड रनटाइम](#रनटाइम-सपोर्ट-वर्तमान) (`runtime.kind = "docker"`) का उपयोग कर रहे हों। `winget install Docker.DockerDesktop` से इंस्टॉल करें।
</details>
<details>
<summary><strong>Linux / macOS</strong></summary>
#### आवश्यक
1. **बिल्ड एसेंशियल:**
- **Linux (Debian/Ubuntu):** `sudo apt install build-essential pkg-config`
- **Linux (Fedora/RHEL):** `sudo dnf group install development-tools && sudo dnf install pkg-config`
- **macOS:** Xcode Command Line Tools इंस्टॉल करें: `xcode-select --install`
2. **Rust टूलचेन:**
```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
विवरण के लिए [rustup.rs](https://rustup.rs) देखें।
3. **सत्यापित करें** कि दोनों काम कर रहे हैं:
```bash
rustc --version
cargo --version
```
#### एक-पंक्ति इंस्टॉलर
या ऊपर के चरणों को छोड़ें और एक ही कमांड में सब कुछ (सिस्टम deps, Rust, ZeroClaw) इंस्टॉल करें:
```bash
curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash
```
#### कंपाइलेशन संसाधन आवश्यकताएँ
स्रोत से बिल्ड करने के लिए परिणामी बाइनरी चलाने से अधिक संसाधनों की आवश्यकता होती है:
| संसाधन | न्यूनतम | अनुशंसित |
| -------------- | ------- | ----------- |
| **RAM + swap** | 2 GB | 4 GB+ |
| **खाली डिस्क** | 6 GB | 10 GB+ |
यदि आपका होस्ट न्यूनतम से नीचे है, तो प्री-बिल्ट बाइनरी का उपयोग करें:
```bash
./install.sh --prefer-prebuilt
```
बिना सोर्स फ़ॉलबैक के केवल बाइनरी इंस्टॉल की आवश्यकता के लिए:
```bash
./install.sh --prebuilt-only
```
#### वैकल्पिक
- **Docker** — केवल तभी आवश्यक जब [Docker सैंडबॉक्स्ड रनटाइम](#रनटाइम-सपोर्ट-वर्तमान) (`runtime.kind = "docker"`) का उपयोग कर रहे हों। अपने पैकेज मैनेजर या [docker.com](https://docs.docker.com/engine/install/) से इंस्टॉल करें।
> **नोट:** डिफ़ॉल्ट `cargo build --release` पीक कंपाइल प्रेशर कम करने के लिए `codegen-units=1` का उपयोग करता है। शक्तिशाली मशीनों पर तेज़ बिल्ड के लिए, `cargo build --profile release-fast` का उपयोग करें।
</details>
<!-- markdownlint-enable MD001 MD024 -->
### प्री-बिल्ट बाइनरी
रिलीज़ एसेट इसके लिए प्रकाशित किए जाते हैं:
- Linux: `x86_64`, `aarch64`, `armv7`
- macOS: `x86_64`, `aarch64`
- Windows: `x86_64`
नवीनतम एसेट यहाँ से डाउनलोड करें:
<https://github.com/zeroclaw-labs/zeroclaw/releases/latest>
## दस्तावेज़
इनका उपयोग तब करें जब आप ऑनबोर्डिंग प्रवाह से आगे हों और गहरा संदर्भ चाहें।
- नेविगेशन और "क्या कहाँ है" के लिए [दस्तावेज़ सूचकांक](docs/README.md) से शुरू करें।
- पूर्ण सिस्टम मॉडल के लिए [आर्किटेक्चर अवलोकन](docs/architecture.md) पढ़ें।
- जब आपको हर कुंजी और उदाहरण चाहिए तो [कॉन्फ़िगरेशन संदर्भ](docs/reference/api/config-reference.md) का उपयोग करें।
- [संचालन रनबुक](docs/ops/operations-runbook.md) के अनुसार Gateway चलाएँ।
- मार्गदर्शित सेटअप के लिए [ZeroClaw Onboard](#त्वरित-शुरुआत) का पालन करें।
- [समस्या निवारण गाइड](docs/ops/troubleshooting.md) से सामान्य विफलताओं का निदान करें।
- कुछ भी एक्सपोज़ करने से पहले [सुरक्षा मार्गदर्शन](docs/security/README.md) की समीक्षा करें।
### संदर्भ दस्तावेज़
- दस्तावेज़ हब: [docs/README.md](docs/README.md)
- एकीकृत दस्तावेज़ TOC: [docs/SUMMARY.md](docs/SUMMARY.md)
- कमांड संदर्भ: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
- कॉन्फ़िग संदर्भ: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
- प्रदाता संदर्भ: [docs/reference/api/providers-reference.md](docs/reference/api/providers-reference.md)
- चैनल संदर्भ: [docs/reference/api/channels-reference.md](docs/reference/api/channels-reference.md)
- संचालन रनबुक: [docs/ops/operations-runbook.md](docs/ops/operations-runbook.md)
- समस्या निवारण: [docs/ops/troubleshooting.md](docs/ops/troubleshooting.md)
### सहयोग दस्तावेज़
- योगदान गाइड: [CONTRIBUTING.md](CONTRIBUTING.md)
- PR वर्कफ़्लो नीति: [docs/contributing/pr-workflow.md](docs/contributing/pr-workflow.md)
- CI वर्कफ़्लो गाइड: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- समीक्षक प्लेबुक: [docs/contributing/reviewer-playbook.md](docs/contributing/reviewer-playbook.md)
- सुरक्षा प्रकटीकरण नीति: [SECURITY.md](SECURITY.md)
- दस्तावेज़ टेम्पलेट: [docs/contributing/doc-template.md](docs/contributing/doc-template.md)
### डिप्लॉयमेंट + संचालन
- नेटवर्क डिप्लॉयमेंट गाइड: [docs/ops/network-deployment.md](docs/ops/network-deployment.md)
- प्रॉक्सी एजेंट प्लेबुक: [docs/ops/proxy-agent-playbook.md](docs/ops/proxy-agent-playbook.md)
- हार्डवेयर गाइड: [docs/hardware/README.md](docs/hardware/README.md)
## Smooth Crab 🦀
ZeroClaw को smooth crab 🦀 के लिए बनाया गया था, एक तेज़ और कुशल AI सहायक। Argenis De La Rosa और समुदाय द्वारा निर्मित।
- [zeroclawlabs.ai](https://zeroclawlabs.ai)
- [@zeroclawlabs](https://x.com/zeroclawlabs)
## ZeroClaw का समर्थन करें
यदि ZeroClaw आपके काम में मदद करता है और आप चल रहे विकास का समर्थन करना चाहते हैं, तो आप यहाँ दान कर सकते हैं:
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
### 🙏 विशेष धन्यवाद
उन समुदायों और संस्थानों को हृदय से धन्यवाद जो इस ओपन-सोर्स कार्य को प्रेरित और ईंधन देते हैं:
- **Harvard University** — बौद्धिक जिज्ञासा को बढ़ावा देने और संभावनाओं की सीमाओं को आगे बढ़ाने के लिए।
- **MIT** — खुले ज्ञान, ओपन सोर्स, और इस विश्वास का समर्थन करने के लिए कि तकनीक सभी के लिए सुलभ होनी चाहिए।
- **Sundai Club** — समुदाय, ऊर्जा, और महत्वपूर्ण चीज़ें बनाने के अथक प्रयास के लिए।
- **दुनिया और उससे परे** 🌍✨ — हर योगदानकर्ता, सपने देखने वाले, और बिल्डर के लिए जो ओपन सोर्स को भलाई की शक्ति बना रहे हैं। यह आपके लिए है।
हम खुले में बना रहे हैं क्योंकि सबसे अच्छे विचार हर जगह से आते हैं। यदि आप यह पढ़ रहे हैं, तो आप इसका हिस्सा हैं। स्वागत है। 🦀❤️
## योगदान ## योगदान
योगदान का स्वागत है! कृपया [योगदान गाइड](CONTRIBUTING.md) पढ़ें। ZeroClaw में नए हैं? [`good first issue`](https://github.com/zeroclaw-labs/zeroclaw/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) लेबल वाले मुद्दों की तलाश करें — शुरू करने का तरीका जानने के लिए हमारा [योगदान गाइड](CONTRIBUTING.md#first-time-contributors) देखें। AI/vibe-coded PRs का स्वागत है! 🤖
[CONTRIBUTING.md](CONTRIBUTING.md) और [CLA.md](docs/contributing/cla.md) देखें। एक trait लागू करें, PR सबमिट करें:
- CI वर्कफ़्लो गाइड: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- नया `Provider``src/providers/`
- नया `Channel``src/channels/`
- नया `Observer``src/observability/`
- नया `Tool``src/tools/`
- नया `Memory``src/memory/`
- नया `Tunnel``src/tunnel/`
- नया `Peripheral``src/peripherals/`
- नया `Skill``~/.zeroclaw/workspace/skills/<name>/`
<!-- BEGIN:RECENT_CONTRIBUTORS -->
<!-- END:RECENT_CONTRIBUTORS -->
## ⚠️ आधिकारिक रिपॉजिटरी और प्रतिरूपण चेतावनी
**यह एकमात्र आधिकारिक ZeroClaw रिपॉजिटरी है:**
> https://github.com/zeroclaw-labs/zeroclaw
कोई भी अन्य रिपॉजिटरी, संगठन, डोमेन, या पैकेज जो "ZeroClaw" होने का दावा करता है या ZeroClaw Labs से संबद्धता का संकेत देता है, **अनधिकृत है और इस प्रोजेक्ट से संबद्ध नहीं है**। ज्ञात अनधिकृत फ़ोर्क [TRADEMARK.md](docs/maintainers/trademark.md) में सूचीबद्ध किए जाएँगे।
यदि आप प्रतिरूपण या ट्रेडमार्क दुरुपयोग का सामना करते हैं, तो कृपया [एक इश्यू खोलें](https://github.com/zeroclaw-labs/zeroclaw/issues)।
--- ---
## लाइसेंस ## लाइसेंस
यह प्रोजेक्ट दोहरे लाइसेंस प्राप्त है: ZeroClaw अधिकतम खुलेपन और योगदानकर्ता सुरक्षा के लिए दोहरे-लाइसेंस प्राप्त है:
- MIT लाइसेंस | लाइसेंस | उपयोग का मामला |
- Apache लाइसेंस, संस्करण 2.0 |---|---|
| [MIT](LICENSE-MIT) | ओपन-सोर्स, अनुसंधान, अकादमिक, व्यक्तिगत उपयोग |
| [Apache 2.0](LICENSE-APACHE) | पेटेंट सुरक्षा, संस्थागत, वाणिज्यिक डिप्लॉयमेंट |
विवरण के लिए [LICENSE-APACHE](LICENSE-APACHE) और [LICENSE-MIT](LICENSE-MIT) देखें। आप कोई भी लाइसेंस चुन सकते हैं। **योगदानकर्ता स्वचालित रूप से दोनों के तहत अधिकार प्रदान करते हैं** — पूर्ण योगदानकर्ता समझौते के लिए [CLA.md](docs/contributing/cla.md) देखें।
### ट्रेडमार्क
**ZeroClaw** नाम और लोगो ZeroClaw Labs के ट्रेडमार्क हैं। यह लाइसेंस समर्थन या संबद्धता का संकेत देने के लिए इनका उपयोग करने की अनुमति नहीं देता। अनुमत और निषिद्ध उपयोग के लिए [TRADEMARK.md](docs/maintainers/trademark.md) देखें।
### योगदानकर्ता सुरक्षा
- आप अपने योगदान का **कॉपीराइट बनाए रखते हैं**
- **पेटेंट अनुदान** (Apache 2.0) आपको अन्य योगदानकर्ताओं द्वारा पेटेंट दावों से बचाता है
- आपके योगदान कमिट इतिहास और [NOTICE](NOTICE) में **स्थायी रूप से श्रेयित** हैं
- योगदान करने से कोई ट्रेडमार्क अधिकार स्थानांतरित नहीं होते
--- ---
## समुदाय **ZeroClaw** — शून्य ओवरहेड। शून्य समझौता। कहीं भी डिप्लॉय करें। कुछ भी स्वैप करें। 🦀
- [Telegram](https://t.me/zeroclawlabs) ## योगदानकर्ता
- [Facebook Group](https://www.facebook.com/groups/zeroclaw)
- [WeChat Group](https://zeroclawlabs.cn/group.jpg)
--- <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors">
<img src="https://contrib.rocks/image?repo=zeroclaw-labs/zeroclaw" alt="ZeroClaw contributors" />
</a>
## प्रायोजक यह सूची GitHub योगदानकर्ता ग्राफ़ से उत्पन्न होती है और स्वचालित रूप से अपडेट होती है।
यदि ZeroClaw आपके लिए उपयोगी है, तो कृपया हमें एक कॉफी खरीदने पर विचार करें: ## स्टार इतिहास
[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee)](https://buymeacoffee.com/argenistherose) <p align="center">
<a href="https://www.star-history.com/#zeroclaw-labs/zeroclaw&type=date&legend=top-left">
<!-- BEGIN:RECENT_CONTRIBUTORS --> <picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&theme=dark&legend=top-left" />
### 🌟 Recent Contributors (v0.3.1) <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
3 contributors shipped features, fixes, and improvements in this release cycle: </picture>
</a>
- **Argenis** </p>
- **argenis de la rosa**
- **Claude Opus 4.6**
Thank you to everyone who opened issues, reviewed PRs, translated docs, and helped test. Every contribution matters. 🦀
<!-- END:RECENT_CONTRIBUTORS -->

View File

@ -1,23 +1,29 @@
<p align="center"> <p align="center">
<img src="zeroclaw.png" alt="ZeroClaw" width="200" /> <img src="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/docs/assets/zeroclaw-banner.png" alt="ZeroClaw" width="600" />
</p> </p>
<h1 align="center">ZeroClaw 🦀</h1> <h1 align="center">🦀 ZeroClaw — Szemelyes MI Asszisztens</h1>
<p align="center"> <p align="center">
<strong>Nulla többletköltség. Nulla kompromisszum. 100% Rust. 100% Agnosztikus.</strong><br> <strong>Nulla terheles. Nulla kompromisszum. 100% Rust. 100% Agnosztikus.</strong><br>
⚡️ <strong>$10-es hardveren fut <5MB RAM-mal: Ez 99%-kal kevesebb memória, mint az OpenClaw és 98%-kal olcsóbb, mint egy Mac mini!</strong> ⚡️ <strong>$10-os hardveren fut <5MB RAM-mal: Ez 99%-kal kevesebb memoria, mint az OpenClaw es 98%-kal olcsobb, mint egy Mac mini!</strong>
</p> </p>
<p align="center"> <p align="center">
<a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a> <a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
<a href="NOTICE"><img src="https://img.shields.io/badge/contributors-27+-green.svg" alt="Contributors" /></a> <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors"><img src="https://img.shields.io/github/contributors/zeroclaw-labs/zeroclaw?color=green" alt="Contributors" /></a>
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a> <a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
<a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a> <a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a>
<a href="https://zeroclawlabs.cn/group.jpg"><img src="https://img.shields.io/badge/WeChat-Group-B7D7A8?logo=wechat&logoColor=white" alt="WeChat Group" /></a> <a href="https://www.facebook.com/groups/zeroclawlabs"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a>
<a href="https://www.xiaohongshu.com/user/profile/67cbfc43000000000d008307?xsec_token=AB73VnYnGNx5y36EtnnZfGmAmS-6Wzv8WMuGpfwfkg6Yc%3D&xsec_source=pc_search"><img src="https://img.shields.io/badge/Xiaohongshu-Official-FF2442?style=flat" alt="Xiaohongshu: Official" /></a> <a href="https://discord.com/invite/wDshRVqRjx"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://t.me/zeroclawlabs"><img src="https://img.shields.io/badge/Telegram-%40zeroclawlabs-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @zeroclawlabs" /></a> <a href="https://www.instagram.com/therealzeroclaw"><img src="https://img.shields.io/badge/Instagram-%40therealzeroclaw-E4405F?style=flat&logo=instagram&logoColor=white" alt="Instagram: @therealzeroclaw" /></a>
<a href="https://www.facebook.com/groups/zeroclaw"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a> <a href="https://www.tiktok.com/@zeroclawlabs"><img src="https://img.shields.io/badge/TikTok-%40zeroclawlabs-000000?style=flat&logo=tiktok&logoColor=white" alt="TikTok: @zeroclawlabs" /></a>
<a href="https://www.rednote.com/user/profile/69b735e6000000002603927e"><img src="https://img.shields.io/badge/RedNote-Official-FF2442?style=flat" alt="RedNote" /></a>
<a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a>
</p>
<p align="center">
A Harvard, MIT es Sundai.Club kozossegek diakjai es tagjai epitettek.
</p> </p>
<p align="center"> <p align="center">
@ -55,149 +61,695 @@
<a href="README.nb.md">🇳🇴 Norsk</a> <a href="README.nb.md">🇳🇴 Norsk</a>
</p> </p>
--- A ZeroClaw egy szemelyes MI asszisztens, amelyet a sajat eszkozeiden futtathatsz. Valaszol a mar hasznalt csatornaidon (WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work es meg tobb). Rendelkezik webes vezerlopulttal valos ideju iranyitashoz, es csatlakoztathat hardver periferiakhoz (ESP32, STM32, Arduino, Raspberry Pi). A Gateway csupan a vezerlesi sik — a termek maga az asszisztens.
<!-- BEGIN:WHATS_NEW --> Ha szemelyes, egyfelhasznalos asszisztenst szeretnel, ami lokalis, gyors es mindig elerheto, ez az.
### 🚀 What's New in v0.3.1 (March 2026) <p align="center">
<a href="https://zeroclawlabs.ai">Weboldal</a> ·
<a href="docs/README.md">Dokumentacio</a> ·
<a href="docs/architecture.md">Architektura</a> ·
<a href="#gyors-inditas-tldr">Kezdes</a> ·
<a href="#atallas-openclawrol">Atallas OpenClawrol</a> ·
<a href="docs/ops/troubleshooting.md">Hibaelharitas</a> ·
<a href="https://discord.com/invite/wDshRVqRjx">Discord</a>
</p>
| Area | Highlights | > **Ajanlott beallitas:** futtasd a `zeroclaw onboard` parancsot a terminalban. A ZeroClaw Onboard lepesrol lepesre vegigvezet a gateway, munkater, csatornak es szolgaltato beallitasan. Ez az ajanlott beallitasi ut, es mukodik macOS-en, Linuxon es Windowson (WSL2-n keresztul). Uj telepites? Kezdd itt: [Kezdes](#gyors-inditas-tldr)
|---|---|
| ci | add Termux (aarch64-linux-android) release target |
<!-- END:WHATS_NEW --> ### Elofizetes hitelesites (OAuth)
## Mi az a ZeroClaw? - **OpenAI Codex** (ChatGPT elofizetes)
- **Gemini** (Google OAuth)
- **Anthropic** (API kulcs vagy hitelesitesi token)
A ZeroClaw egy könnyűsúlyú, változtatható és bővíthető AI asszisztens infrastruktúra, amely Rust nyelven készült. Különböző LLM szolgáltatókat (Anthropic, OpenAI, Google, Ollama stb.) köt össze egy egységes felületen keresztül, és több csatornát támogat (Telegram, Matrix, CLI stb.). Modell megjegyzes: bar sok szolgaltato/modell tamogatott, a legjobb elmeny erdekeben hasznald a legerosebb, legujabb generacios modellt. Lasd [Onboarding](#gyors-inditas-tldr).
### Fő jellemzők Modellek konfiguracio + CLI: [Szolgaltatoi referencia](docs/reference/api/providers-reference.md)
Auth profil rotacio (OAuth vs API kulcsok) + failover: [Modell failover](docs/reference/api/providers-reference.md)
- **🦀 Rust nyelven írva**: Magas teljesítmény, memória biztonság és null költségű absztrakciók ## Telepites (ajanlott)
- **🔌 Szolgáltató-agnosztikus**: OpenAI, Anthropic, Google Gemini, Ollama és mások támogatása
- **📱 Többcsatornás**: Telegram, Matrix (E2EE-vel), CLI és mások
- **🧠 Cserélhető memória**: SQLite és Markdown backendek
- **🛠️ Bővíthető eszközök**: Egyszerűen adjon hozzá egyedi eszközöket
- **🔒 Biztonság először**: Fordított proxy, adatvédelem-elsődleges tervezés
--- Futtato kornyezet: Rust stable toolchain. Egyetlen binaris, nincs futtatasi ideju fuggoseg.
## Gyors Kezdés ### Homebrew (macOS/Linuxbrew)
### Követelmények ```bash
brew install zeroclaw
- Rust 1.70+ ```
- Egy LLM szolgáltató API kulcs (Anthropic, OpenAI stb.)
### Egy kattintasos telepites
### Telepítés
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./install.sh
```
A `zeroclaw onboard` automatikusan lefut a telepites utan a munkater es szolgaltato konfiguralasakor.
## Gyors inditas (TL;DR)
Teljes kezdo utmutato (hitelesites, parositas, csatornak): [Kezdes](docs/setup-guides/one-click-bootstrap.md)
```bash
# Telepites + onboard
./install.sh --api-key "sk-..." --provider openrouter
# Gateway inditasa (webhook szerver + webes vezerlopult)
zeroclaw gateway # alapertelmezett: 127.0.0.1:42617
zeroclaw gateway --port 0 # veletlenszeru port (biztonsagi szilarditas)
# Beszelgess az asszisztenssel
zeroclaw agent -m "Hello, ZeroClaw!"
# Interaktiv mod
zeroclaw agent
# Teljes autonom futtatas inditasa (gateway + csatornak + cron + hands)
zeroclaw daemon
# Allapot ellenorzes
zeroclaw status
# Diagnosztika futtatasa
zeroclaw doctor
```
Frissites? Futtasd a `zeroclaw doctor` parancsot a frissites utan.
### Forrasbol (fejlesztes)
```bash ```bash
# Klónozza a repositoryt
git clone https://github.com/zeroclaw-labs/zeroclaw.git git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw cd zeroclaw
# Építés cargo build --release --locked
cargo build --release cargo install --path . --force --locked
# Futtatás zeroclaw onboard
cargo run --release
``` ```
### Docker-rel > **Fejlesztoi alternativa (globalis telepites nelkul):** a parancsokat prefixeld `cargo run --release --`-vel (pelda: `cargo run --release -- status`).
## Atallas OpenClawrol
A ZeroClaw importalhatja az OpenClaw munkateret, memoriat es konfiguraciot:
```bash ```bash
docker run -d \ # Elonezet az attelepitendo adatokrol (biztonsagos, csak olvasható)
--name zeroclaw \ zeroclaw migrate openclaw --dry-run
-e ANTHROPIC_API_KEY=your_key \
-v zeroclaw-data:/app/data \ # Migracio futtatasa
zeroclaw/zeroclaw:latest zeroclaw migrate openclaw
``` ```
--- Ez migralja a memoriabejegyzeseket, munkater fajlokat es konfiguraciot a `~/.openclaw/` konyvtarbol a `~/.zeroclaw/` konyvtarba. A konfiguracio automatikusan JSON-bol TOML-ra konvertalodik.
## Konfiguráció ## Biztonsagi alapertelmezesek (DM hozzaferes)
A ZeroClaw egy YAML konfigurációs fájlt használ. Alapértelmezés szerint a `config.yaml` fájlt keresi. A ZeroClaw valos uzenetfeluletekkez csatlakozik. Kezeld a bejovo DM-eket nem megbizhato bemenetekkent.
```yaml Teljes biztonsagi utmutato: [SECURITY.md](SECURITY.md)
# Alapértelmezett szolgáltató
provider: anthropic
# Szolgáltató konfiguráció Alapertelmezett viselkedes minden csatornan:
providers:
anthropic:
api_key: ${ANTHROPIC_API_KEY}
model: claude-3-5-sonnet-20241022
openai:
api_key: ${OPENAI_API_KEY}
model: gpt-4o
# Memória konfiguráció - **DM parositas** (alapertelmezett): az ismeretlen feladok rovid parosito kodot kapnak, es a bot nem dolgozza fel az uzenetuket.
memory: - Jovahagy paranccsal: `zeroclaw pairing approve <channel> <code>` (ezutan a felado felkerul egy lokalis engedelyezesi listara).
backend: sqlite - A nyilvanos bejovo DM-ek kifejezett opt-in-t igenyelnek a `config.toml`-ban.
path: data/memory.db - Futtasd a `zeroclaw doctor` parancsot a kockazatos vagy rosszul konfiguralt DM szabalyzatok feltarasahoz.
# Csatorna konfiguráció **Autonomia szintek:**
channels:
telegram: | Szint | Viselkedes |
token: ${TELEGRAM_BOT_TOKEN} |-------|------------|
| `ReadOnly` | Az agens megfigyel, de nem cselekszik |
| `Supervised` (alapertelmezett) | Az agens jovahagyassal cselekszik kozepes/magas kockazatu muveletenel |
| `Full` | Az agens autonoman cselekszik a szabalyzat hataran belul |
**Sandboxing retegek:** munkater izolalas, utvonal-atjaras blokkolas, parancs engedelyezesi listak, tiltott utvonalak (`/etc`, `/root`, `~/.ssh`), sebessegkorlatozas (max muveletek/ora, koltseg/nap korlatok).
<!-- BEGIN:WHATS_NEW -->
<!-- END:WHATS_NEW -->
### 📢 Kozlemenyek
Hasznald ezt a tablat fontos ertesitesekhez (torekenyen kompatibilis valtozasok, biztonsagi tanacsadok, karbantartasi idosavok es kiadasi blokkolok).
| Datum (UTC) | Szint | Ertesites | Teendo |
| ---------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2026-02-19 | _Kritikus_ | **Nem** allunk kapcsolatban az `openagen/zeroclaw`, `zeroclaw.org` vagy `zeroclaw.net` oldalakkal. A `zeroclaw.org` es `zeroclaw.net` domainek jelenleg az `openagen/zeroclaw` fork-ra mutatnak, es az a domain/tarolo megszemelyesiti a hivatalos weboldalunkat/projektunket. | Ne bizz meg az ezekbol a forrasokbol szarmazo informaciokban, binarisokban, adomanygyujtesekben vagy kozlemenyekben. Kizarolag [ezt a tarolot](https://github.com/zeroclaw-labs/zeroclaw) es az ellenorzott kozossegi media fiokjainkat hasznald. |
| 2026-02-21 | _Fontos_ | A hivatalos weboldalunk most mar el: [zeroclawlabs.ai](https://zeroclawlabs.ai). Koszonjuk turelmuket, amig elokeszitettuk az inditast. Meg mindig latunk megszemelyesitesi kiserleteket, ezert **ne** csatlakozz semmilyen befektetesi vagy adomanygyujtesi tevekenyseghez, amely a ZeroClaw nevet hasznalja, hacsak nem a hivatalos csatornainkon keresztul jelenik meg. | Hasznald [ezt a tarolot](https://github.com/zeroclaw-labs/zeroclaw) egyetlen igazsagforraskent. Kovesd az [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21), [Facebook (Group)](https://www.facebook.com/groups/zeroclawlabs) es [Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/) oldalakat a hivatalos frissitesekert. |
| 2026-02-19 | _Fontos_ | Az Anthropic frissitette a Hitelesitesi es Hitellevelek Hasznalara vonatkozo felteteleket 2026-02-19-en. A Claude Code OAuth tokenek (Free, Pro, Max) kizarolag a Claude Code es a Claude.ai szamara keszultek; az OAuth tokenek barmely mas termekben, eszkozben vagy szolgaltatasban valo hasznalata (beleertve az Agent SDK-t) nem megengedett es sertheti a Fogyasztoi Szolgaltatasi Felteteleket. | Kerlek ideiglenesen keruld a Claude Code OAuth integraciokat a potencialis veszteseg megelozese erdekeben. Eredeti kikotes: [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use). |
## Fobb jellemzok
- **Konnyu futtatokornyezet alapertelmezetten** — a szokasos CLI es allapot munkafolyamatok nehany megabajtos memoria burkban futnak release buildekben.
- **Koltseghatekony telepites** — $10-os kartyakhoz es kis cloud peldanyokhoz tervezve, nehez futtatokornyezeti fuggosegek nelkul.
- **Gyors hideg inditas** — az egyetlen binarisbol allo Rust futtatokornyezet szinte azonnali parancs- es daemon-inditast biztosit.
- **Hordozhato architektura** — egy binaris ARM, x86 es RISC-V rendszereken cserelheto szolgaltatok/csatornak/eszkozokkel.
- **Lokalis-eloszor Gateway** — egyetlen vezerlesi sik a munkamenetekhez, csatornakhoz, eszkozokhoz, cron-hoz, SOP-khoz es esemenyekhez.
- **Tobbcsatornas beerkeze** — WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WebSocket es meg tobb.
- **Tobbagens orkesztracio (Hands)** — autonom agens rajok, amelyek utemezetten futnak es idovel okosabbak lesznek.
- **Szabvanyos Muveleti Eljarasok (SOPs)** — esemenyvezeerlt munkafolyamat automatizalas MQTT, webhook, cron es periferia triggerekkel.
- **Webes vezerlopult** — React 19 + Vite webes felulet valos ideju csevegeessel, memoriaboongeszevel, konfiguracioszerkesztovel, cron kezelovel es eszkoz vizsgaloval.
- **Hardver periferiak** — ESP32, STM32 Nucleo, Arduino, Raspberry Pi GPIO a `Peripheral` trait-en keresztul.
- **Elso osztalyu eszkozok** — shell, file I/O, browser, git, web fetch/search, MCP, Jira, Notion, Google Workspace es 70+ tovabb.
- **Eletciklus hookok** — LLM hivasok, eszkozvegrehajtasok es uzenetek elfogasa es modositasa minden szinten.
- **Kepesseg platform** — beepitett, kozossegi es munkater kepessegek biztonsagi auditalassal.
- **Tunnel tamogatas** — Cloudflare, Tailscale, ngrok, OpenVPN es egyedi tunnelek tavoli hozzafereshez.
### Miert valasztjak a csapatok a ZeroClaw-t
- **Konnyu alapertelmezetten:** kis Rust binaris, gyors inditas, alacsony memoriahasznalat.
- **Biztonsagos tervezessel:** parositas, szigoru sandboxing, kifejezett engedelyezesi listak, munkater hatarolás.
- **Teljesen cserelheto:** az alaprendszerek trait-ek (providers, channels, tools, memory, tunnels).
- **Nincs bezartsag:** OpenAI-kompatibilis szolgaltatoi tamogatas + csatlakoztatható egyedi vegpontok.
## Benchmark pillanatkep (ZeroClaw vs OpenClaw, Reprodukalhato)
Lokalis gepi gyors benchmark (macOS arm64, 2026 feb.) normalizalva 0.8GHz edge hardverre.
| | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 |
| ------------------------- | ------------- | -------------- | --------------- | -------------------- |
| **Nyelv** | TypeScript | Python | Go | **Rust** |
| **RAM** | > 1GB | > 100MB | < 10MB | **< 5MB** |
| **Inditas (0.8GHz core)** | > 500s | > 30s | < 1s | **< 10ms** |
| **Binaris meret** | ~28MB (dist) | N/A (Scripts) | ~8MB | **~8.8 MB** |
| **Koltseg** | Mac Mini $599 | Linux SBC ~$50 | Linux Board $10 | **Barmilyen hardver $10** |
> Megjegyzesek: A ZeroClaw eredmenyek release buildeken merve `/usr/bin/time -l` hasznalataval. Az OpenClaw Node.js futtatokornyezetet igenyel (tipikusan ~390MB memoria terheles), mig a NanoBot Python futtatokornyezetet. A PicoClaw es ZeroClaw statikus binarisok. A fenti RAM adatok futtatasi ideju memoriat mutatnak; a forditasi ideju kovetelmenyek magasabbak.
<p align="center">
<img src="docs/assets/zeroclaw-comparison.jpeg" alt="ZeroClaw vs OpenClaw Comparison" width="800" />
</p>
### Reprodukalhato lokalis meres
```bash
cargo build --release
ls -lh target/release/zeroclaw
/usr/bin/time -l target/release/zeroclaw --help
/usr/bin/time -l target/release/zeroclaw status
``` ```
--- ## Minden, amit eddig epitettunk
## Dokumentáció ### Alapplatform
Részletes dokumentációért lásd: - Gateway HTTP/WS/SSE vezerlesi sik munkamenetekkel, jelenleettel, konfiguracioval, cron-nal, webhookkal, webes vezerlopulttal es parositassal.
- CLI felulet: `gateway`, `agent`, `onboard`, `doctor`, `status`, `service`, `migrate`, `auth`, `cron`, `channel`, `skills`.
- Agens orkesztracios hurk eszkoz-kuldessel, prompt epitessel, uzenet osztalyozassal es memoria betoltessel.
- Munkamenet modell biztonsagi szabalyzat ervenyesitessel, autonomia szintekkel es jovahagyasi kapuval.
- Ellenallo szolgaltatoi wrapper failover-rel, ujraprobalassal es modell iranyitassal 20+ LLM backend-en.
- [Dokumentációs Központ](docs/README.md) ### Csatornak
- [Parancs Referencia](docs/commands-reference.md)
- [Szolgáltató Referencia](docs/providers-reference.md)
- [Csatorna Referencia](docs/channels-reference.md)
- [Konfigurációs Referencia](docs/config-reference.md)
--- Csatornak: WhatsApp (native), Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, DingTalk, Lark, Mattermost, Nextcloud Talk, Nostr, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WATI, Mochat, Linq, Notion, WebSocket, ClawdTalk.
## Hozzájárulás Feature-gated: Matrix (`channel-matrix`), Lark (`channel-lark`), Nostr (`channel-nostr`).
A hozzájárulások várják! Kérjük, olvassa el a [Hozzájárulási Útmutatót](CONTRIBUTING.md). ### Webes vezerlopult
React 19 + Vite 6 + Tailwind CSS 4 webes vezerlopult, amelyet kozvetlenul a Gateway szolgaltat ki:
- **Dashboard** — rendszer attekintes, egeszsegi allapot, uzemido, koltsegkovetes
- **Agent Chat** — interaktiv csevegees az agenssel
- **Memory** — memoriabejegyzesek bongeszese es kezelese
- **Config** — konfiguracio megtekintese es szerkesztese
- **Cron** — utemezett feladatok kezelese
- **Tools** — elerheto eszkozok bongeszese
- **Logs** — agens tevekenysegnaplo megtekintese
- **Cost** — token hasznalat es koltsegkovetes
- **Doctor** — rendszer egeszseugyi diagnosztika
- **Integrations** — integracios allapot es beallitas
- **Pairing** — eszkoz parositas kezeles
### Firmware celok
| Cel | Platform | Rendeltetees |
|-----|----------|-------------|
| ESP32 | Espressif ESP32 | Vezetek nelkuli periferia agens |
| ESP32-UI | ESP32 + Display | Agens vizualis feluelettel |
| STM32 Nucleo | STM32 (ARM Cortex-M) | Ipari periferia |
| Arduino | Arduino | Alap szenzor/aktualtor hid |
| Uno Q Bridge | Arduino Uno | Soros hid az agenshez |
### Eszkozok + automatizalas
- **Alap:** shell, file read/write/edit, git operations, glob search, content search
- **Web:** browser control, web fetch, web search, screenshot, image info, PDF read
- **Integraciok:** Jira, Notion, Google Workspace, Microsoft 365, LinkedIn, Composio, Pushover
- **MCP:** Model Context Protocol tool wrapper + deferred tool sets
- **Utemezes:** cron add/remove/update/run, schedule tool
- **Memoria:** recall, store, forget, knowledge, project intel
- **Halado:** delegate (agent-to-agent), swarm, model switch/routing, security ops, cloud ops
- **Hardver:** board info, memory map, memory read (feature-gated)
### Futtatokornyezet + biztonsag
- **Autonomia szintek:** ReadOnly, Supervised (alapertelmezett), Full.
- **Sandboxing:** munkater izolalas, utvonal-atjaras blokkolas, parancs engedelyezesi listak, tiltott utvonalak, Landlock (Linux), Bubblewrap.
- **Sebessegkorlatozas:** max muveletek orankent, max koltseg naponta (konfiguralhato).
- **Jovahagyasi kapu:** interaktiv jovahagy kozepes/magas kockazatu mueveletekhez.
- **E-stop:** veszleallitasi kepesseg.
- **129+ biztonsagi teszt** automatizalt CI-ben.
### Muveletek + csomagolas
- Webes vezerlopult kozvetlenul a Gateway-bol kiszolgalva.
- Tunnel tamogatas: Cloudflare, Tailscale, ngrok, OpenVPN, egyedi parancs.
- Docker runtime adapter konterizalt vegrehajtashoz.
- CI/CD: beta (auto on push) → stable (manual dispatch) → Docker, crates.io, Scoop, AUR, Homebrew, tweet.
- Elore elkeszitett binarisok Linux (x86_64, aarch64, armv7), macOS (x86_64, aarch64), Windows (x86_64) rendszerekhez.
## Konfiguracio
Minimalis `~/.zeroclaw/config.toml`:
```toml
default_provider = "anthropic"
api_key = "sk-ant-..."
```
Teljes konfiguracios referencia: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md).
### Csatorna konfiguracio
**Telegram:**
```toml
[channels.telegram]
bot_token = "123456:ABC-DEF..."
```
**Discord:**
```toml
[channels.discord]
token = "your-bot-token"
```
**Slack:**
```toml
[channels.slack]
bot_token = "xoxb-..."
app_token = "xapp-..."
```
**WhatsApp:**
```toml
[channels.whatsapp]
enabled = true
```
**Matrix:**
```toml
[channels.matrix]
homeserver_url = "https://matrix.org"
username = "@bot:matrix.org"
password = "..."
```
**Signal:**
```toml
[channels.signal]
phone_number = "+1234567890"
```
### Tunnel konfiguracio
```toml
[tunnel]
kind = "cloudflare" # or "tailscale", "ngrok", "openvpn", "custom", "none"
```
Reszletek: [Csatorna referencia](docs/reference/api/channels-reference.md) · [Konfiguracios referencia](docs/reference/api/config-reference.md)
### Futtatokornyezet tamogatas (aktualis)
- **`native`** (alapertelmezett) — kozvetlen folyamat vegrehajtas, leggyorsabb ut, idealis megbizhato kornyezetekhez.
- **`docker`** — teljes kontener izolalas, ervenyesitett biztonsagi szabalyzatok, Docker szukseges.
Allitsd be a `runtime.kind = "docker"` erteket a szigoru sandboxinghoz vagy halozati izolaciohoz.
## Elofizetes hitelesites (OpenAI Codex / Claude Code / Gemini)
A ZeroClaw tamogatja az elofizetes-nativ hitelesitesi profilokat (tobb fiok, titkositva tarolva).
- Tarolo fajl: `~/.zeroclaw/auth-profiles.json`
- Titkositasi kulcs: `~/.zeroclaw/.secret_key`
- Profil azonosito formatum: `<provider>:<profile_name>` (pelda: `openai-codex:work`)
```bash
# OpenAI Codex OAuth (ChatGPT subscription)
zeroclaw auth login --provider openai-codex --device-code
# Gemini OAuth
zeroclaw auth login --provider gemini --profile default
# Anthropic setup-token
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# Check / refresh / switch profile
zeroclaw auth status
zeroclaw auth refresh --provider openai-codex --profile default
zeroclaw auth use --provider openai-codex --profile work
# Run the agent with subscription auth
zeroclaw agent --provider openai-codex -m "hello"
zeroclaw agent --provider anthropic -m "hello"
```
## Agens munkater + kepessegek
Munkater gyoker: `~/.zeroclaw/workspace/` (konfiguralhato a config-on keresztul).
Beinjektalt prompt fajlok:
- `IDENTITY.md` — agens szemelyiseg es szerep
- `USER.md` — felhasznaloi kontextus es prefernciak
- `MEMORY.md` — hosszu tavu tenyek es tanulsagok
- `AGENTS.md` — munkamenet konvenciok es inicializalasi szabalyok
- `SOUL.md` — alapveto identitas es mukodesi elvek
Kepessegek: `~/.zeroclaw/workspace/skills/<skill>/SKILL.md` vagy `SKILL.toml`.
```bash
# List installed skills
zeroclaw skills list
# Install from git
zeroclaw skills install https://github.com/user/my-skill.git
# Security audit before install
zeroclaw skills audit https://github.com/user/my-skill.git
# Remove a skill
zeroclaw skills remove my-skill
```
## CLI parancsok
```bash
# Munkater kezeles
zeroclaw onboard # Vezerelt beallitasi varazslo
zeroclaw status # Daemon/agent allapot megjelenites
zeroclaw doctor # Rendszer diagnosztika futtatasa
# Gateway + daemon
zeroclaw gateway # Gateway szerver inditasa (127.0.0.1:42617)
zeroclaw daemon # Teljes autonom futtatas inditasa
# Agens
zeroclaw agent # Interaktiv csevegesi mod
zeroclaw agent -m "message" # Egyszeri uzenet mod
# Szolgaltatas kezeles
zeroclaw service install # Telepites OS szolgaltataskent (launchd/systemd)
zeroclaw service start|stop|restart|status
# Csatornak
zeroclaw channel list # Konfiguralt csatornak listazasa
zeroclaw channel doctor # Csatorna egeszseg ellenorzes
zeroclaw channel bind-telegram 123456789
# Cron + utemezes
zeroclaw cron list # Utemezett feladatok listazasa
zeroclaw cron add "*/5 * * * *" --prompt "Check system health"
zeroclaw cron remove <id>
# Memoria
zeroclaw memory list # Memoriabejegyzesek listazasa
zeroclaw memory get <key> # Memoria lekerese
zeroclaw memory stats # Memoria statisztikak
# Hitelesitesi profilok
zeroclaw auth login --provider <name>
zeroclaw auth status
zeroclaw auth use --provider <name> --profile <profile>
# Hardver periferiak
zeroclaw hardware discover # Csatlakoztatott eszkozok keresese
zeroclaw peripheral list # Csatlakoztatott periferiak listazasa
zeroclaw peripheral flash # Firmware felirasa eszkozre
# Migracio
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw
# Shell kiegeszitesek
source <(zeroclaw completions bash)
zeroclaw completions zsh > ~/.zfunc/_zeroclaw
```
Teljes parancs referencia: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
<!-- markdownlint-disable MD001 MD024 -->
## Elofeltetelek
<details>
<summary><strong>Windows</strong></summary>
#### Szukseges
1. **Visual Studio Build Tools** (biztositja az MSVC linkert es a Windows SDK-t):
```powershell
winget install Microsoft.VisualStudio.2022.BuildTools
```
A telepites soran (vagy a Visual Studio Installer-en keresztul) valaszd a **"Desktop development with C++"** munkafolyamatot.
2. **Rust toolchain:**
```powershell
winget install Rustlang.Rustup
```
A telepites utan nyiss egy uj terminalt es futtasd a `rustup default stable` parancsot a stabil toolchain aktivalasahoz.
3. **Ellenorzes**, hogy mindketto mukodik:
```powershell
rustc --version
cargo --version
```
#### Opcionalis
- **Docker Desktop** — csak a [Docker sandboxed runtime](#futtatokornyezet-tamogatas-aktualis) hasznalatahoz szukseges (`runtime.kind = "docker"`). Telepites: `winget install Docker.DockerDesktop`.
</details>
<details>
<summary><strong>Linux / macOS</strong></summary>
#### Szukseges
1. **Epitesi alapeszkozok:**
- **Linux (Debian/Ubuntu):** `sudo apt install build-essential pkg-config`
- **Linux (Fedora/RHEL):** `sudo dnf group install development-tools && sudo dnf install pkg-config`
- **macOS:** Telepitsd az Xcode Command Line Tools-t: `xcode-select --install`
2. **Rust toolchain:**
```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
Reszletekert lasd [rustup.rs](https://rustup.rs).
3. **Ellenorzes**, hogy mindketto mukodik:
```bash
rustc --version
cargo --version
```
#### Egyvonalas telepito
Vagy hagyd ki a fenti lepeseket es telepits mindent (rendszer fuggosegek, Rust, ZeroClaw) egyetlen paranccsal:
```bash
curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash
```
#### Forditasi eroforrasigeny
A forrasbol valo epites tobb eroforras igenyel, mint az eredmeny binaris futtatasa:
| Eroforras | Minimum | Ajanlott |
| -------------- | ------- | ----------- |
| **RAM + swap** | 2 GB | 4 GB+ |
| **Szabad lemez** | 6 GB | 10 GB+ |
Ha a gazdageped a minimum alatt van, hasznalj elore elkeszitett binarisokat:
```bash
./install.sh --prefer-prebuilt
```
Kizarolag binaris telepiteshez forras alternativa nelkul:
```bash
./install.sh --prebuilt-only
```
#### Opcionalis
- **Docker** — csak a [Docker sandboxed runtime](#futtatokornyezet-tamogatas-aktualis) hasznalatahoz szukseges (`runtime.kind = "docker"`). Telepites a csomagkezelodon keresztul vagy [docker.com](https://docs.docker.com/engine/install/).
> **Megjegyzes:** Az alapertelmezett `cargo build --release` `codegen-units=1` erteket hasznal a csucs forditasi terheles csokkenteseere. Gyorsabb epitesekhez eros gepeken hasznald a `cargo build --profile release-fast` parancsot.
</details>
<!-- markdownlint-enable MD001 MD024 -->
### Elore elkeszitett binarisok
Kiadas eszkozok az alabbi platformokra kerulnek kozetetelre:
- Linux: `x86_64`, `aarch64`, `armv7`
- macOS: `x86_64`, `aarch64`
- Windows: `x86_64`
Toltsd le a legujabb eszkozoket innen:
<https://github.com/zeroclaw-labs/zeroclaw/releases/latest>
## Dokumentacio
Hasznald ezeket, ha tuljutottal az onboarding folyamaton es melyebb referenciara van szukseged.
- Kezdd a [dokumentacios indexszel](docs/README.md) a navigaciohoz es a "mi hol talalhato" informaciohoz.
- Olvasd el az [architektura attekintest](docs/architecture.md) a teljes rendszermodellhez.
- Hasznald a [konfiguracios referenciat](docs/reference/api/config-reference.md), ha minden kulcsra es peldara szukseged van.
- Futtasd a Gateway-t a konyv szerint az [uzemeltetesi kezikonyvvel](docs/ops/operations-runbook.md).
- Kovesd a [ZeroClaw Onboard](#gyors-inditas-tldr) szolgaltatast a vezerelt beallitashoz.
- Hibakeress a gyakori problemakat a [hibaelharitasi utmutatoval](docs/ops/troubleshooting.md).
- Tekintsd at a [biztonsagi utmutatast](docs/security/README.md) mielott barmit is kiteszel.
### Referencia dokumentaciok
- Dokumentacios kozpont: [docs/README.md](docs/README.md)
- Egysegesitett tartalomjegyzek: [docs/SUMMARY.md](docs/SUMMARY.md)
- Parancs referencia: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
- Konfiguracios referencia: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
- Szolgaltatoi referencia: [docs/reference/api/providers-reference.md](docs/reference/api/providers-reference.md)
- Csatorna referencia: [docs/reference/api/channels-reference.md](docs/reference/api/channels-reference.md)
- Uzemeltetesi kezikonyv: [docs/ops/operations-runbook.md](docs/ops/operations-runbook.md)
- Hibaelharitas: [docs/ops/troubleshooting.md](docs/ops/troubleshooting.md)
### Egyuttmukodesi dokumentaciok
- Hozzajarulasi utmutato: [CONTRIBUTING.md](CONTRIBUTING.md)
- PR munkafolyamat szabalyzat: [docs/contributing/pr-workflow.md](docs/contributing/pr-workflow.md)
- CI munkafolyamat utmutato: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Biraloi kezikonyv: [docs/contributing/reviewer-playbook.md](docs/contributing/reviewer-playbook.md)
- Biztonsagi kozzeteeteli szabalyzat: [SECURITY.md](SECURITY.md)
- Dokumentacios sablon: [docs/contributing/doc-template.md](docs/contributing/doc-template.md)
### Telepites + muveletek
- Halozati telepitesi utmutato: [docs/ops/network-deployment.md](docs/ops/network-deployment.md)
- Proxy agens kezikonyv: [docs/ops/proxy-agent-playbook.md](docs/ops/proxy-agent-playbook.md)
- Hardver utmutatok: [docs/hardware/README.md](docs/hardware/README.md)
## Smooth Crab 🦀
A ZeroClaw a smooth crab 🦀 szamara keszult, egy gyors es hatekony MI asszisztens. Epitette Argenis De La Rosa es a kozosseg.
- [zeroclawlabs.ai](https://zeroclawlabs.ai)
- [@zeroclawlabs](https://x.com/zeroclawlabs)
## Tamogasd a ZeroClaw-t
Ha a ZeroClaw segiti a munkadat es tamogatni szeretned a folyamatos fejlesztest, itt adomanyozhatsz:
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
### 🙏 Kulonos koszonet
Szivbol jovo koszonet a kozossegeknek es intezmenyeknek, amelyek inspiraljak es taplaljak ezt a nyilt forrasu munkat:
- **Harvard University** — az intellektualis kivancsiság apolasaert es a lehetosegek hatarainak tolásáert.
- **MIT** — a nyilt tudas, nyilt forras es azon hit bajnokakent, hogy a technologianak mindenki szamara elerheto kell lennie.
- **Sundai Club** — a kozossegert, az energiaert es a szuntelen torekveseert, hogy fontos dolgokat epitsenek.
- **A Vilag es Azon Tul** 🌍✨ — minden hozzajarulonak, almodonak es epitonek, aki a nyilt forrast a jo erdekeben mukodo erove teszi. Ez neked szol.
Nyiltan epitunk, mert a legjobb otletek mindenhonnan jonnek. Ha ezt olvasod, a resze vagy. Udvozlunk. 🦀❤️
## Hozzajarulas
Uj vagy a ZeroClaw-ban? Keresd a [`good first issue`](https://github.com/zeroclaw-labs/zeroclaw/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) cimkevel ellatott issue-kat — lasd a [Hozzajarulasi utmutatot](CONTRIBUTING.md#first-time-contributors) a kezdeshez. AI/vibe-coded PR-ok szivesen latottak! 🤖
Lasd [CONTRIBUTING.md](CONTRIBUTING.md) es [CLA.md](docs/contributing/cla.md). Implementalj egy trait-et, kuuldj be egy PR-t:
- CI munkafolyamat utmutato: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Uj `Provider``src/providers/`
- Uj `Channel``src/channels/`
- Uj `Observer``src/observability/`
- Uj `Tool``src/tools/`
- Uj `Memory``src/memory/`
- Uj `Tunnel``src/tunnel/`
- Uj `Peripheral``src/peripherals/`
- Uj `Skill``~/.zeroclaw/workspace/skills/<name>/`
<!-- BEGIN:RECENT_CONTRIBUTORS -->
<!-- END:RECENT_CONTRIBUTORS -->
## ⚠️ Hivatalos tarolo es megszemelyesitesi figyelmeztetes
**Ez az egyetlen hivatalos ZeroClaw tarolo:**
> https://github.com/zeroclaw-labs/zeroclaw
Barmely mas tarolo, szervezet, domain vagy csomag, amely azt allitja, hogy "ZeroClaw" vagy kapcsolatot sugall a ZeroClaw Labs-szal, **jogosulatlan es nem all kapcsolatban ezzel a projekttel**. Az ismert jogosulatlan forkok a [TRADEMARK.md](docs/maintainers/trademark.md) fajlban lesznek felsorolva.
Ha megszemelyesitessel vagy vedjeggyel valo visszaelessel talalkozol, kerlek [nyiss egy issue-t](https://github.com/zeroclaw-labs/zeroclaw/issues).
--- ---
## Licenc ## Licenc
Ez a projekt kettős licencelt: A ZeroClaw kettos licenccel rendelkezik a maximalis nyitottsag es hozzajaruloi vedelem erdekeben:
- MIT License | Licenc | Felhasznalasi eset |
- Apache License, 2.0 verzió |---|---|
| [MIT](LICENSE-MIT) | Nyilt forras, kutatas, akademiai, szemelyes haszanalat |
| [Apache 2.0](LICENSE-APACHE) | Szabadalmi vedelem, intezmenyi, kereskedelmi telepites |
Részletekért lásd a [LICENSE-APACHE](LICENSE-APACHE) és [LICENSE-MIT](LICENSE-MIT) fájlokat. Barmely licencet valaszthatod. **A hozzajarulok automatikusan mindketto alatt jogot biztositanak** — lasd [CLA.md](docs/contributing/cla.md) a teljes hozzajarulasi megallapodasert.
### Vedjegy
A **ZeroClaw** nev es logo a ZeroClaw Labs vedjegyei. Ez a licenc nem ad engedelyt arra, hogy tamogatast vagy kapcsolatot sugalljanak. Lasd [TRADEMARK.md](docs/maintainers/trademark.md) a megengedett es tiltott hasznalati modokert.
### Hozzajaruloi vedelmek
- **Megtartod a szerzoi jogot** a hozzajarulasaidon
- **Szabadalmi engedely** (Apache 2.0) vedi meg mas hozzajarulok szabadalmi igenyeitol
- A hozzajarulasaid **veglegesen attribulaltak** a commit tortenelben es a [NOTICE](NOTICE) fajlban
- Nem kerulnek at vedjegyjogok a hozzajarulassal
--- ---
## Közösség **ZeroClaw** — Nulla terheles. Nulla kompromisszum. Telepites barhova. Csere barmire. 🦀
- [Telegram](https://t.me/zeroclawlabs) ## Hozzajarulok
- [Facebook Group](https://www.facebook.com/groups/zeroclaw)
- [WeChat Group](https://zeroclawlabs.cn/group.jpg)
--- <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors">
<img src="https://contrib.rocks/image?repo=zeroclaw-labs/zeroclaw" alt="ZeroClaw contributors" />
</a>
## Szponzorok Ez a lista a GitHub hozzajaruloi grafikonjabol keszul es automatikusan frissul.
Ha a ZeroClaw hasznos az Ön számára, kérjük, fontolja meg, hogy vesz nekünk egy kávét: ## Csillag tortenelem
[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee)](https://buymeacoffee.com/argenistherose) <p align="center">
<a href="https://www.star-history.com/#zeroclaw-labs/zeroclaw&type=date&legend=top-left">
<!-- BEGIN:RECENT_CONTRIBUTORS --> <picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&theme=dark&legend=top-left" />
### 🌟 Recent Contributors (v0.3.1) <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
3 contributors shipped features, fixes, and improvements in this release cycle: </picture>
</a>
- **Argenis** </p>
- **argenis de la rosa**
- **Claude Opus 4.6**
Thank you to everyone who opened issues, reviewed PRs, translated docs, and helped test. Every contribution matters. 🦀
<!-- END:RECENT_CONTRIBUTORS -->

View File

@ -1,23 +1,29 @@
<p align="center"> <p align="center">
<img src="zeroclaw.png" alt="ZeroClaw" width="200" /> <img src="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/docs/assets/zeroclaw-banner.png" alt="ZeroClaw" width="600" />
</p> </p>
<h1 align="center">ZeroClaw 🦀</h1> <h1 align="center">🦀 ZeroClaw — Asisten AI Pribadi</h1>
<p align="center"> <p align="center">
<strong>Nol overhead. Nol kompromi. 100% Rust. 100% Agnostik.</strong><br> <strong>Nol overhead. Nol kompromi. 100% Rust. 100% Agnostik.</strong><br>
⚡️ <strong>Jalan di perangkat $10 dengan <5MB RAM: Itu 99% lebih sedikit memori dari OpenClaw dan 98% lebih murah dari Mac mini!</strong> ⚡️ <strong>Berjalan di perangkat keras $10 dengan RAM <5MB: Itu 99% lebih hemat memori dari OpenClaw dan 98% lebih murah dari Mac mini!</strong>
</p> </p>
<p align="center"> <p align="center">
<a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a> <a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
<a href="NOTICE"><img src="https://img.shields.io/badge/contributors-27+-green.svg" alt="Contributors" /></a> <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors"><img src="https://img.shields.io/github/contributors/zeroclaw-labs/zeroclaw?color=green" alt="Contributors" /></a>
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a> <a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
<a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a> <a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a>
<a href="https://zeroclawlabs.cn/group.jpg"><img src="https://img.shields.io/badge/WeChat-Group-B7D7A8?logo=wechat&logoColor=white" alt="WeChat Group" /></a> <a href="https://www.facebook.com/groups/zeroclawlabs"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a>
<a href="https://www.xiaohongshu.com/user/profile/67cbfc43000000000d008307?xsec_token=AB73VnYnGNx5y36EtnnZfGmAmS-6Wzv8WMuGpfwfkg6Yc%3D&xsec_source=pc_search"><img src="https://img.shields.io/badge/Xiaohongshu-Official-FF2442?style=flat" alt="Xiaohongshu: Official" /></a> <a href="https://discord.com/invite/wDshRVqRjx"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://t.me/zeroclawlabs"><img src="https://img.shields.io/badge/Telegram-%40zeroclawlabs-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @zeroclawlabs" /></a> <a href="https://www.instagram.com/therealzeroclaw"><img src="https://img.shields.io/badge/Instagram-%40therealzeroclaw-E4405F?style=flat&logo=instagram&logoColor=white" alt="Instagram: @therealzeroclaw" /></a>
<a href="https://www.facebook.com/groups/zeroclaw"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a> <a href="https://www.tiktok.com/@zeroclawlabs"><img src="https://img.shields.io/badge/TikTok-%40zeroclawlabs-000000?style=flat&logo=tiktok&logoColor=white" alt="TikTok: @zeroclawlabs" /></a>
<a href="https://www.rednote.com/user/profile/69b735e6000000002603927e"><img src="https://img.shields.io/badge/RedNote-Official-FF2442?style=flat" alt="RedNote" /></a>
<a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a>
</p>
<p align="center">
Dibangun oleh mahasiswa dan anggota komunitas Harvard, MIT, dan Sundai.Club.
</p> </p>
<p align="center"> <p align="center">
@ -55,149 +61,695 @@
<a href="README.nb.md">🇳🇴 Norsk</a> <a href="README.nb.md">🇳🇴 Norsk</a>
</p> </p>
--- ZeroClaw adalah asisten AI pribadi yang Anda jalankan di perangkat sendiri. Ia menjawab Anda melalui saluran yang sudah Anda gunakan (WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, dan lainnya). Ia memiliki dasbor web untuk kontrol real-time dan dapat terhubung ke periferal perangkat keras (ESP32, STM32, Arduino, Raspberry Pi). Gateway hanyalah bidang kendali — produknya adalah asisten.
<!-- BEGIN:WHATS_NEW --> Jika Anda menginginkan asisten pribadi, pengguna tunggal, yang terasa lokal, cepat, dan selalu aktif, inilah solusinya.
### 🚀 What's New in v0.3.1 (March 2026) <p align="center">
<a href="https://zeroclawlabs.ai">Situs Web</a> ·
<a href="docs/README.md">Dokumentasi</a> ·
<a href="docs/architecture.md">Arsitektur</a> ·
<a href="#mulai-cepat">Memulai</a> ·
<a href="#migrasi-dari-openclaw">Migrasi dari OpenClaw</a> ·
<a href="docs/ops/troubleshooting.md">Pemecahan Masalah</a> ·
<a href="https://discord.com/invite/wDshRVqRjx">Discord</a>
</p>
| Area | Highlights | > **Pengaturan yang disarankan:** jalankan `zeroclaw onboard` di terminal Anda. ZeroClaw Onboard memandu Anda langkah demi langkah dalam menyiapkan gateway, workspace, saluran, dan provider. Ini adalah jalur pengaturan yang disarankan dan berfungsi di macOS, Linux, dan Windows (melalui WSL2). Instalasi baru? Mulai di sini: [Memulai](#mulai-cepat)
|---|---|
| ci | add Termux (aarch64-linux-android) release target |
<!-- END:WHATS_NEW --> ### Autentikasi Berlangganan (OAuth)
## Apa itu ZeroClaw? - **OpenAI Codex** (langganan ChatGPT)
- **Gemini** (Google OAuth)
- **Anthropic** (kunci API atau token autentikasi)
ZeroClaw adalah infrastruktur asisten AI yang ringan, dapat diubah, dan dapat diperluas yang dibangun dengan Rust. Ini menghubungkan berbagai penyedia LLM (Anthropic, OpenAI, Google, Ollama, dll.) melalui antarmuka terpadu dan mendukung banyak saluran (Telegram, Matrix, CLI, dll.). Catatan model: meskipun banyak provider/model didukung, untuk pengalaman terbaik gunakan model generasi terbaru terkuat yang tersedia untuk Anda. Lihat [Onboarding](#mulai-cepat).
### Fitur Utama Konfigurasi model + CLI: [Referensi Provider](docs/reference/api/providers-reference.md)
Rotasi profil autentikasi (OAuth vs kunci API) + failover: [Failover Model](docs/reference/api/providers-reference.md)
- **🦀 Ditulis dalam Rust**: Kinerja tinggi, keamanan memori, dan abstraksi tanpa biaya ## Instal (disarankan)
- **🔌 Agnostik penyedia**: Mendukung OpenAI, Anthropic, Google Gemini, Ollama, dan lainnya
- **📱 Multi-saluran**: Telegram, Matrix (dengan E2EE), CLI, dan lainnya
- **🧠 Memori yang dapat dipasang**: Backend SQLite dan Markdown
- **🛠️ Alat yang dapat diperluas**: Tambahkan alat kustom dengan mudah
- **🔒 Keamanan pertama**: Proxy terbalik, desain yang mengutamakan privasi
--- Runtime: Rust stable toolchain. Biner tunggal, tanpa dependensi runtime.
## Mulai Cepat ### Homebrew (macOS/Linuxbrew)
### Persyaratan ```bash
brew install zeroclaw
- Rust 1.70+ ```
- Kunci API penyedia LLM (Anthropic, OpenAI, dll.)
### Bootstrap sekali klik
### Instalasi
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./install.sh
```
`zeroclaw onboard` berjalan otomatis setelah instalasi untuk mengonfigurasi workspace dan provider Anda.
## Mulai cepat (TL;DR)
Panduan lengkap pemula (autentikasi, pairing, saluran): [Memulai](docs/setup-guides/one-click-bootstrap.md)
```bash
# Instal + onboard
./install.sh --api-key "sk-..." --provider openrouter
# Mulai gateway (server webhook + dasbor web)
zeroclaw gateway # default: 127.0.0.1:42617
zeroclaw gateway --port 0 # port acak (keamanan ditingkatkan)
# Bicara ke asisten
zeroclaw agent -m "Hello, ZeroClaw!"
# Mode interaktif
zeroclaw agent
# Mulai runtime otonom penuh (gateway + saluran + cron + hands)
zeroclaw daemon
# Periksa status
zeroclaw status
# Jalankan diagnostik
zeroclaw doctor
```
Memperbarui? Jalankan `zeroclaw doctor` setelah pembaruan.
### Dari sumber (pengembangan)
```bash ```bash
# Klon repositori
git clone https://github.com/zeroclaw-labs/zeroclaw.git git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw cd zeroclaw
# Bangun cargo build --release --locked
cargo build --release cargo install --path . --force --locked
# Jalankan zeroclaw onboard
cargo run --release
``` ```
### Dengan Docker > **Alternatif dev (tanpa instalasi global):** awali perintah dengan `cargo run --release --` (contoh: `cargo run --release -- status`).
## Migrasi dari OpenClaw
ZeroClaw dapat mengimpor workspace, memori, dan konfigurasi OpenClaw Anda:
```bash ```bash
docker run -d \ # Pratinjau apa yang akan dimigrasikan (aman, hanya-baca)
--name zeroclaw \ zeroclaw migrate openclaw --dry-run
-e ANTHROPIC_API_KEY=your_key \
-v zeroclaw-data:/app/data \ # Jalankan migrasi
zeroclaw/zeroclaw:latest zeroclaw migrate openclaw
``` ```
--- Ini memigrasikan entri memori, file workspace, dan konfigurasi Anda dari `~/.openclaw/` ke `~/.zeroclaw/`. Konfigurasi dikonversi dari JSON ke TOML secara otomatis.
## Default keamanan (akses DM)
ZeroClaw terhubung ke permukaan pesan nyata. Perlakukan DM masuk sebagai input tidak tepercaya.
Panduan keamanan lengkap: [SECURITY.md](SECURITY.md)
Perilaku default di semua saluran:
- **Pairing DM** (default): pengirim yang tidak dikenal menerima kode pairing singkat dan bot tidak memproses pesan mereka.
- Setujui dengan: `zeroclaw pairing approve <channel> <code>` (kemudian pengirim ditambahkan ke daftar izin lokal).
- DM masuk publik memerlukan opt-in eksplisit di `config.toml`.
- Jalankan `zeroclaw doctor` untuk menemukan kebijakan DM yang berisiko atau salah konfigurasi.
**Level otonomi:**
| Level | Perilaku |
|-------|----------|
| `ReadOnly` | Agen dapat mengamati tetapi tidak bertindak |
| `Supervised` (default) | Agen bertindak dengan persetujuan untuk operasi risiko menengah/tinggi |
| `Full` | Agen bertindak secara otonom dalam batas kebijakan |
**Lapisan sandboxing:** isolasi workspace, pemblokiran traversal jalur, daftar izin perintah, jalur terlarang (`/etc`, `/root`, `~/.ssh`), pembatasan laju (maksimum tindakan/jam, batas biaya/hari).
<!-- BEGIN:WHATS_NEW -->
<!-- END:WHATS_NEW -->
### 📢 Pengumuman
Gunakan papan ini untuk pemberitahuan penting (perubahan yang merusak, saran keamanan, jendela pemeliharaan, dan pemblokir rilis).
| Tanggal (UTC) | Level | Pemberitahuan | Tindakan |
| ---------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2026-02-19 | _Kritis_ | Kami **tidak berafiliasi** dengan `openagen/zeroclaw`, `zeroclaw.org` atau `zeroclaw.net`. Domain `zeroclaw.org` dan `zeroclaw.net` saat ini mengarah ke fork `openagen/zeroclaw`, dan domain/repositori tersebut menyamar sebagai situs web/proyek resmi kami. | Jangan percaya informasi, biner, penggalangan dana, atau pengumuman dari sumber tersebut. Gunakan hanya [repositori ini](https://github.com/zeroclaw-labs/zeroclaw) dan akun sosial terverifikasi kami. |
| 2026-02-21 | _Penting_ | Situs web resmi kami sekarang aktif: [zeroclawlabs.ai](https://zeroclawlabs.ai). Terima kasih atas kesabaran Anda selama kami mempersiapkan peluncuran. Kami masih melihat upaya peniruan, jadi **jangan** bergabung dengan aktivitas investasi atau penggalangan dana yang mengklaim nama ZeroClaw kecuali dipublikasikan melalui saluran resmi kami. | Gunakan [repositori ini](https://github.com/zeroclaw-labs/zeroclaw) sebagai satu-satunya sumber kebenaran. Ikuti [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21), [Facebook (Group)](https://www.facebook.com/groups/zeroclawlabs), dan [Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/) untuk pembaruan resmi. |
| 2026-02-19 | _Penting_ | Anthropic memperbarui ketentuan Autentikasi dan Penggunaan Kredensial pada 2026-02-19. Token OAuth Claude Code (Free, Pro, Max) ditujukan secara eksklusif untuk Claude Code dan Claude.ai; menggunakan token OAuth dari Claude Free/Pro/Max di produk, alat, atau layanan lain (termasuk Agent SDK) tidak diizinkan dan dapat melanggar Ketentuan Layanan Konsumen. | Harap sementara hindari integrasi OAuth Claude Code untuk mencegah potensi kerugian. Klausul asli: [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use). |
## Sorotan
- **Runtime Ringan secara Default** — alur kerja CLI dan status umum berjalan dalam amplop memori beberapa megabyte pada build rilis.
- **Deployment Hemat Biaya** — dirancang untuk board $10 dan instans cloud kecil, tanpa dependensi runtime berat.
- **Cold Start Cepat** — runtime Rust biner tunggal menjaga startup perintah dan daemon hampir instan.
- **Arsitektur Portabel** — satu biner di ARM, x86, dan RISC-V dengan provider/saluran/alat yang dapat ditukar.
- **Gateway Lokal-Pertama** — bidang kendali tunggal untuk sesi, saluran, alat, cron, SOP, dan peristiwa.
- **Inbox multi-saluran** — WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WebSocket, dan lainnya.
- **Orkestrasi multi-agen (Hands)** — swarm agen otonom yang berjalan sesuai jadwal dan semakin pintar seiring waktu.
- **Standard Operating Procedures (SOP)** — otomasi alur kerja berbasis peristiwa dengan MQTT, webhook, cron, dan pemicu periferal.
- **Dasbor Web** — UI web React 19 + Vite dengan obrolan real-time, browser memori, editor konfigurasi, manajer cron, dan inspektor alat.
- **Periferal perangkat keras** — ESP32, STM32 Nucleo, Arduino, Raspberry Pi GPIO melalui trait `Peripheral`.
- **Alat kelas satu** — shell, file I/O, browser, git, web fetch/search, MCP, Jira, Notion, Google Workspace, dan 70+ lainnya.
- **Hook siklus hidup** — intersep dan modifikasi panggilan LLM, eksekusi alat, dan pesan di setiap tahap.
- **Platform skill** — skill bawaan, komunitas, dan workspace dengan audit keamanan.
- **Dukungan tunnel** — Cloudflare, Tailscale, ngrok, OpenVPN, dan tunnel kustom untuk akses jarak jauh.
### Mengapa tim memilih ZeroClaw
- **Ringan secara default:** biner Rust kecil, startup cepat, jejak memori rendah.
- **Aman secara desain:** pairing, sandboxing ketat, daftar izin eksplisit, pelingkupan workspace.
- **Sepenuhnya dapat ditukar:** sistem inti adalah trait (provider, saluran, alat, memori, tunnel).
- **Tanpa lock-in:** dukungan provider kompatibel OpenAI + endpoint kustom pluggable.
## Cuplikan Benchmark (ZeroClaw vs OpenClaw, Dapat Direproduksi)
Benchmark cepat mesin lokal (macOS arm64, Feb 2026) dinormalisasi untuk perangkat keras edge 0.8GHz.
| | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 |
| ------------------------- | ------------- | -------------- | --------------- | -------------------- |
| **Bahasa** | TypeScript | Python | Go | **Rust** |
| **RAM** | > 1GB | > 100MB | < 10MB | **< 5MB** |
| **Startup (inti 0.8GHz)** | > 500s | > 30s | < 1s | **< 10ms** |
| **Ukuran Biner** | ~28MB (dist) | N/A (Scripts) | ~8MB | **~8.8 MB** |
| **Biaya** | Mac Mini $599 | Linux SBC ~$50 | Linux Board $10 | **Perangkat keras apa pun $10** |
> Catatan: Hasil ZeroClaw diukur pada build rilis menggunakan `/usr/bin/time -l`. OpenClaw memerlukan runtime Node.js (biasanya ~390MB overhead memori tambahan), sedangkan NanoBot memerlukan runtime Python. PicoClaw dan ZeroClaw adalah biner statis. Angka RAM di atas adalah memori runtime; kebutuhan kompilasi saat build lebih tinggi.
<p align="center">
<img src="docs/assets/zeroclaw-comparison.jpeg" alt="ZeroClaw vs OpenClaw Comparison" width="800" />
</p>
### Pengukuran lokal yang dapat direproduksi
```bash
cargo build --release
ls -lh target/release/zeroclaw
/usr/bin/time -l target/release/zeroclaw --help
/usr/bin/time -l target/release/zeroclaw status
```
## Semua yang telah kami bangun sejauh ini
### Platform inti
- Bidang kendali HTTP/WS/SSE Gateway dengan sesi, presence, konfigurasi, cron, webhook, dasbor web, dan pairing.
- Permukaan CLI: `gateway`, `agent`, `onboard`, `doctor`, `status`, `service`, `migrate`, `auth`, `cron`, `channel`, `skills`.
- Loop orkestrasi agen dengan dispatch alat, konstruksi prompt, klasifikasi pesan, dan pemuatan memori.
- Model sesi dengan penegakan kebijakan keamanan, level otonomi, dan gating persetujuan.
- Wrapper provider resilient dengan failover, retry, dan routing model di 20+ backend LLM.
### Saluran
Saluran: WhatsApp (native), Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, DingTalk, Lark, Mattermost, Nextcloud Talk, Nostr, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WATI, Mochat, Linq, Notion, WebSocket, ClawdTalk.
Feature-gated: Matrix (`channel-matrix`), Lark (`channel-lark`), Nostr (`channel-nostr`).
### Dasbor web
Dasbor web React 19 + Vite 6 + Tailwind CSS 4 yang disajikan langsung dari Gateway:
- **Dashboard** — ikhtisar sistem, status kesehatan, uptime, pelacakan biaya
- **Agent Chat** — obrolan interaktif dengan agen
- **Memory** — jelajahi dan kelola entri memori
- **Config** — lihat dan edit konfigurasi
- **Cron** — kelola tugas terjadwal
- **Tools** — jelajahi alat yang tersedia
- **Logs** — lihat log aktivitas agen
- **Cost** — penggunaan token dan pelacakan biaya
- **Doctor** — diagnostik kesehatan sistem
- **Integrations** — status integrasi dan pengaturan
- **Pairing** — manajemen pairing perangkat
### Target firmware
| Target | Platform | Tujuan |
|--------|----------|--------|
| ESP32 | Espressif ESP32 | Agen periferal nirkabel |
| ESP32-UI | ESP32 + Display | Agen dengan antarmuka visual |
| STM32 Nucleo | STM32 (ARM Cortex-M) | Periferal industri |
| Arduino | Arduino | Jembatan sensor/aktuator dasar |
| Uno Q Bridge | Arduino Uno | Jembatan serial ke agen |
### Alat + otomasi
- **Inti:** shell, file read/write/edit, operasi git, glob search, content search
- **Web:** browser control, web fetch, web search, screenshot, image info, PDF read
- **Integrasi:** Jira, Notion, Google Workspace, Microsoft 365, LinkedIn, Composio, Pushover
- **MCP:** Model Context Protocol tool wrapper + deferred tool sets
- **Penjadwalan:** cron add/remove/update/run, schedule tool
- **Memori:** recall, store, forget, knowledge, project intel
- **Lanjutan:** delegate (agen-ke-agen), swarm, model switch/routing, security ops, cloud ops
- **Perangkat keras:** board info, memory map, memory read (feature-gated)
### Runtime + keamanan
- **Level otonomi:** ReadOnly, Supervised (default), Full.
- **Sandboxing:** isolasi workspace, pemblokiran traversal jalur, daftar izin perintah, jalur terlarang, Landlock (Linux), Bubblewrap.
- **Pembatasan laju:** maksimum tindakan per jam, maksimum biaya per hari (dapat dikonfigurasi).
- **Gating persetujuan:** persetujuan interaktif untuk operasi risiko menengah/tinggi.
- **E-stop:** kemampuan shutdown darurat.
- **129+ tes keamanan** dalam CI otomatis.
### Ops + pengemasan
- Dasbor web disajikan langsung dari Gateway.
- Dukungan tunnel: Cloudflare, Tailscale, ngrok, OpenVPN, perintah kustom.
- Adapter runtime Docker untuk eksekusi terkontainerisasi.
- CI/CD: beta (otomatis saat push) → stable (dispatch manual) → Docker, crates.io, Scoop, AUR, Homebrew, tweet.
- Biner pre-built untuk Linux (x86_64, aarch64, armv7), macOS (x86_64, aarch64), Windows (x86_64).
## Konfigurasi ## Konfigurasi
ZeroClaw menggunakan file konfigurasi YAML. Secara default, ini mencari `config.yaml`. Minimal `~/.zeroclaw/config.toml`:
```yaml ```toml
# Penyedia default default_provider = "anthropic"
provider: anthropic api_key = "sk-ant-..."
# Konfigurasi penyedia
providers:
anthropic:
api_key: ${ANTHROPIC_API_KEY}
model: claude-3-5-sonnet-20241022
openai:
api_key: ${OPENAI_API_KEY}
model: gpt-4o
# Konfigurasi memori
memory:
backend: sqlite
path: data/memory.db
# Konfigurasi saluran
channels:
telegram:
token: ${TELEGRAM_BOT_TOKEN}
``` ```
--- Referensi konfigurasi lengkap: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md).
### Konfigurasi saluran
**Telegram:**
```toml
[channels.telegram]
bot_token = "123456:ABC-DEF..."
```
**Discord:**
```toml
[channels.discord]
token = "your-bot-token"
```
**Slack:**
```toml
[channels.slack]
bot_token = "xoxb-..."
app_token = "xapp-..."
```
**WhatsApp:**
```toml
[channels.whatsapp]
enabled = true
```
**Matrix:**
```toml
[channels.matrix]
homeserver_url = "https://matrix.org"
username = "@bot:matrix.org"
password = "..."
```
**Signal:**
```toml
[channels.signal]
phone_number = "+1234567890"
```
### Konfigurasi tunnel
```toml
[tunnel]
kind = "cloudflare" # atau "tailscale", "ngrok", "openvpn", "custom", "none"
```
Detail: [Referensi Saluran](docs/reference/api/channels-reference.md) · [Referensi Konfigurasi](docs/reference/api/config-reference.md)
### Dukungan runtime (saat ini)
- **`native`** (default) — eksekusi proses langsung, jalur tercepat, ideal untuk lingkungan tepercaya.
- **`docker`** — isolasi kontainer penuh, kebijakan keamanan ditegakkan, memerlukan Docker.
Atur `runtime.kind = "docker"` untuk sandboxing ketat atau isolasi jaringan.
## Autentikasi Berlangganan (OpenAI Codex / Claude Code / Gemini)
ZeroClaw mendukung profil autentikasi native berlangganan (multi-akun, terenkripsi saat istirahat).
- File penyimpanan: `~/.zeroclaw/auth-profiles.json`
- Kunci enkripsi: `~/.zeroclaw/.secret_key`
- Format id profil: `<provider>:<profile_name>` (contoh: `openai-codex:work`)
```bash
# OpenAI Codex OAuth (langganan ChatGPT)
zeroclaw auth login --provider openai-codex --device-code
# Gemini OAuth
zeroclaw auth login --provider gemini --profile default
# Anthropic setup-token
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# Periksa / refresh / ganti profil
zeroclaw auth status
zeroclaw auth refresh --provider openai-codex --profile default
zeroclaw auth use --provider openai-codex --profile work
# Jalankan agen dengan auth berlangganan
zeroclaw agent --provider openai-codex -m "hello"
zeroclaw agent --provider anthropic -m "hello"
```
## Workspace agen + skill
Root workspace: `~/.zeroclaw/workspace/` (dapat dikonfigurasi melalui config).
File prompt yang diinjeksi:
- `IDENTITY.md` — kepribadian dan peran agen
- `USER.md` — konteks dan preferensi pengguna
- `MEMORY.md` — fakta dan pelajaran jangka panjang
- `AGENTS.md` — konvensi sesi dan aturan inisialisasi
- `SOUL.md` — identitas inti dan prinsip operasi
Skill: `~/.zeroclaw/workspace/skills/<skill>/SKILL.md` atau `SKILL.toml`.
```bash
# Daftar skill yang terinstal
zeroclaw skills list
# Instal dari git
zeroclaw skills install https://github.com/user/my-skill.git
# Audit keamanan sebelum instalasi
zeroclaw skills audit https://github.com/user/my-skill.git
# Hapus skill
zeroclaw skills remove my-skill
```
## Perintah CLI
```bash
# Manajemen workspace
zeroclaw onboard # Wizard pengaturan terpandu
zeroclaw status # Tampilkan status daemon/agen
zeroclaw doctor # Jalankan diagnostik sistem
# Gateway + daemon
zeroclaw gateway # Mulai server gateway (127.0.0.1:42617)
zeroclaw daemon # Mulai runtime otonom penuh
# Agen
zeroclaw agent # Mode obrolan interaktif
zeroclaw agent -m "message" # Mode pesan tunggal
# Manajemen layanan
zeroclaw service install # Instal sebagai layanan OS (launchd/systemd)
zeroclaw service start|stop|restart|status
# Saluran
zeroclaw channel list # Daftar saluran yang dikonfigurasi
zeroclaw channel doctor # Periksa kesehatan saluran
zeroclaw channel bind-telegram 123456789
# Cron + penjadwalan
zeroclaw cron list # Daftar tugas terjadwal
zeroclaw cron add "*/5 * * * *" --prompt "Check system health"
zeroclaw cron remove <id>
# Memori
zeroclaw memory list # Daftar entri memori
zeroclaw memory get <key> # Ambil memori
zeroclaw memory stats # Statistik memori
# Profil autentikasi
zeroclaw auth login --provider <name>
zeroclaw auth status
zeroclaw auth use --provider <name> --profile <profile>
# Periferal perangkat keras
zeroclaw hardware discover # Pindai perangkat yang terhubung
zeroclaw peripheral list # Daftar periferal yang terhubung
zeroclaw peripheral flash # Flash firmware ke perangkat
# Migrasi
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw
# Pelengkapan shell
source <(zeroclaw completions bash)
zeroclaw completions zsh > ~/.zfunc/_zeroclaw
```
Referensi perintah lengkap: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
<!-- markdownlint-disable MD001 MD024 -->
## Prasyarat
<details>
<summary><strong>Windows</strong></summary>
#### Diperlukan
1. **Visual Studio Build Tools** (menyediakan linker MSVC dan Windows SDK):
```powershell
winget install Microsoft.VisualStudio.2022.BuildTools
```
Selama instalasi (atau melalui Visual Studio Installer), pilih beban kerja **"Desktop development with C++"**.
2. **Rust toolchain:**
```powershell
winget install Rustlang.Rustup
```
Setelah instalasi, buka terminal baru dan jalankan `rustup default stable` untuk memastikan toolchain stabil aktif.
3. **Verifikasi** keduanya berfungsi:
```powershell
rustc --version
cargo --version
```
#### Opsional
- **Docker Desktop** — diperlukan hanya jika menggunakan [runtime Docker sandboxed](#dukungan-runtime-saat-ini) (`runtime.kind = "docker"`). Instal melalui `winget install Docker.DockerDesktop`.
</details>
<details>
<summary><strong>Linux / macOS</strong></summary>
#### Diperlukan
1. **Build essentials:**
- **Linux (Debian/Ubuntu):** `sudo apt install build-essential pkg-config`
- **Linux (Fedora/RHEL):** `sudo dnf group install development-tools && sudo dnf install pkg-config`
- **macOS:** Instal Xcode Command Line Tools: `xcode-select --install`
2. **Rust toolchain:**
```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
Lihat [rustup.rs](https://rustup.rs) untuk detail.
3. **Verifikasi** keduanya berfungsi:
```bash
rustc --version
cargo --version
```
#### Installer Satu Baris
Atau lewati langkah di atas dan instal semuanya (dependensi sistem, Rust, ZeroClaw) dalam satu perintah:
```bash
curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash
```
#### Kebutuhan sumber daya kompilasi
Membangun dari sumber memerlukan lebih banyak sumber daya daripada menjalankan biner yang dihasilkan:
| Sumber Daya | Minimum | Disarankan |
| -------------- | ------- | ----------- |
| **RAM + swap** | 2 GB | 4 GB+ |
| **Disk kosong**| 6 GB | 10 GB+ |
Jika host Anda di bawah minimum, gunakan biner pre-built:
```bash
./install.sh --prefer-prebuilt
```
Untuk memerlukan instalasi hanya-biner tanpa fallback sumber:
```bash
./install.sh --prebuilt-only
```
#### Opsional
- **Docker** — diperlukan hanya jika menggunakan [runtime Docker sandboxed](#dukungan-runtime-saat-ini) (`runtime.kind = "docker"`). Instal melalui manajer paket Anda atau [docker.com](https://docs.docker.com/engine/install/).
> **Catatan:** Default `cargo build --release` menggunakan `codegen-units=1` untuk menurunkan tekanan kompilasi puncak. Untuk build lebih cepat di mesin yang kuat, gunakan `cargo build --profile release-fast`.
</details>
<!-- markdownlint-enable MD001 MD024 -->
### Biner pre-built
Aset rilis dipublikasikan untuk:
- Linux: `x86_64`, `aarch64`, `armv7`
- macOS: `x86_64`, `aarch64`
- Windows: `x86_64`
Unduh aset terbaru dari:
<https://github.com/zeroclaw-labs/zeroclaw/releases/latest>
## Dokumentasi ## Dokumentasi
Untuk dokumentasi terperinci, lihat: Gunakan ini ketika Anda sudah melewati alur onboarding dan menginginkan referensi yang lebih mendalam.
- [Hub Dokumentasi](docs/README.md) - Mulai dengan [indeks dokumentasi](docs/README.md) untuk navigasi dan "apa di mana."
- [Referensi Perintah](docs/commands-reference.md) - Baca [ikhtisar arsitektur](docs/architecture.md) untuk model sistem lengkap.
- [Referensi Penyedia](docs/providers-reference.md) - Gunakan [referensi konfigurasi](docs/reference/api/config-reference.md) ketika Anda memerlukan setiap kunci dan contoh.
- [Referensi Saluran](docs/channels-reference.md) - Jalankan Gateway sesuai buku dengan [runbook operasional](docs/ops/operations-runbook.md).
- [Referensi Konfigurasi](docs/config-reference.md) - Ikuti [ZeroClaw Onboard](#mulai-cepat) untuk pengaturan terpandu.
- Debug kegagalan umum dengan [panduan pemecahan masalah](docs/ops/troubleshooting.md).
- Tinjau [panduan keamanan](docs/security/README.md) sebelum mengekspos apa pun.
--- ### Dokumentasi referensi
- Hub dokumentasi: [docs/README.md](docs/README.md)
- TOC dokumentasi terpadu: [docs/SUMMARY.md](docs/SUMMARY.md)
- Referensi perintah: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
- Referensi konfigurasi: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
- Referensi provider: [docs/reference/api/providers-reference.md](docs/reference/api/providers-reference.md)
- Referensi saluran: [docs/reference/api/channels-reference.md](docs/reference/api/channels-reference.md)
- Runbook operasional: [docs/ops/operations-runbook.md](docs/ops/operations-runbook.md)
- Pemecahan masalah: [docs/ops/troubleshooting.md](docs/ops/troubleshooting.md)
### Dokumentasi kolaborasi
- Panduan kontribusi: [CONTRIBUTING.md](CONTRIBUTING.md)
- Kebijakan alur kerja PR: [docs/contributing/pr-workflow.md](docs/contributing/pr-workflow.md)
- Panduan alur kerja CI: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Playbook reviewer: [docs/contributing/reviewer-playbook.md](docs/contributing/reviewer-playbook.md)
- Kebijakan pengungkapan keamanan: [SECURITY.md](SECURITY.md)
- Template dokumentasi: [docs/contributing/doc-template.md](docs/contributing/doc-template.md)
### Deployment + operasi
- Panduan deployment jaringan: [docs/ops/network-deployment.md](docs/ops/network-deployment.md)
- Playbook proxy agent: [docs/ops/proxy-agent-playbook.md](docs/ops/proxy-agent-playbook.md)
- Panduan perangkat keras: [docs/hardware/README.md](docs/hardware/README.md)
## Smooth Crab 🦀
ZeroClaw dibangun untuk smooth crab 🦀, asisten AI yang cepat dan efisien. Dibangun oleh Argenis De La Rosa dan komunitas.
- [zeroclawlabs.ai](https://zeroclawlabs.ai)
- [@zeroclawlabs](https://x.com/zeroclawlabs)
## Dukung ZeroClaw
Jika ZeroClaw membantu pekerjaan Anda dan Anda ingin mendukung pengembangan berkelanjutan, Anda dapat berdonasi di sini:
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
### 🙏 Terima Kasih Khusus
Terima kasih yang tulus kepada komunitas dan institusi yang menginspirasi dan mendorong pekerjaan open-source ini:
- **Harvard University** — untuk memupuk rasa ingin tahu intelektual dan mendorong batas dari apa yang mungkin.
- **MIT** — untuk memperjuangkan pengetahuan terbuka, open source, dan keyakinan bahwa teknologi harus dapat diakses oleh semua orang.
- **Sundai Club** — untuk komunitas, energi, dan dorongan tanpa henti untuk membangun hal-hal yang penting.
- **Dunia & Seterusnya** 🌍✨ — kepada setiap kontributor, pemimpi, dan pembangun di luar sana yang menjadikan open source sebagai kekuatan untuk kebaikan. Ini untuk kalian.
Kami membangun secara terbuka karena ide terbaik datang dari mana saja. Jika Anda membaca ini, Anda adalah bagian darinya. Selamat datang. 🦀❤️
## Berkontribusi ## Berkontribusi
Kontribusi diterima! Silakan baca [Panduan Kontribusi](CONTRIBUTING.md). Baru di ZeroClaw? Cari isu berlabel [`good first issue`](https://github.com/zeroclaw-labs/zeroclaw/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) — lihat [Panduan Kontribusi](CONTRIBUTING.md#first-time-contributors) untuk cara memulai. PR yang dibuat dengan AI/vibe-coded dipersilakan! 🤖
Lihat [CONTRIBUTING.md](CONTRIBUTING.md) dan [CLA.md](docs/contributing/cla.md). Implementasikan trait, kirimkan PR:
- Panduan alur kerja CI: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- `Provider` baru → `src/providers/`
- `Channel` baru → `src/channels/`
- `Observer` baru → `src/observability/`
- `Tool` baru → `src/tools/`
- `Memory` baru → `src/memory/`
- `Tunnel` baru → `src/tunnel/`
- `Peripheral` baru → `src/peripherals/`
- `Skill` baru → `~/.zeroclaw/workspace/skills/<name>/`
<!-- BEGIN:RECENT_CONTRIBUTORS -->
<!-- END:RECENT_CONTRIBUTORS -->
## ⚠️ Repositori Resmi & Peringatan Peniruan
**Ini adalah satu-satunya repositori resmi ZeroClaw:**
> https://github.com/zeroclaw-labs/zeroclaw
Repositori, organisasi, domain, atau paket lain yang mengklaim sebagai "ZeroClaw" atau menyiratkan afiliasi dengan ZeroClaw Labs adalah **tidak sah dan tidak berafiliasi dengan proyek ini**. Fork tidak sah yang diketahui akan terdaftar di [TRADEMARK.md](docs/maintainers/trademark.md).
Jika Anda menemukan peniruan atau penyalahgunaan merek dagang, silakan [buka isu](https://github.com/zeroclaw-labs/zeroclaw/issues).
--- ---
## Lisensi ## Lisensi
Proyek ini dilisensikan ganda: ZeroClaw memiliki dual-license untuk keterbukaan maksimum dan perlindungan kontributor:
- MIT License | Lisensi | Kasus penggunaan |
- Apache License, versi 2.0 |---|---|
| [MIT](LICENSE-MIT) | Open-source, riset, akademik, penggunaan pribadi |
| [Apache 2.0](LICENSE-APACHE) | Perlindungan paten, institusional, deployment komersial |
Lihat [LICENSE-APACHE](LICENSE-APACHE) dan [LICENSE-MIT](LICENSE-MIT) untuk detailnya. Anda dapat memilih salah satu lisensi. **Kontributor secara otomatis memberikan hak di bawah keduanya** — lihat [CLA.md](docs/contributing/cla.md) untuk perjanjian kontributor lengkap.
### Merek Dagang
Nama dan logo **ZeroClaw** adalah merek dagang dari ZeroClaw Labs. Lisensi ini tidak memberikan izin untuk menggunakannya untuk menyiratkan dukungan atau afiliasi. Lihat [TRADEMARK.md](docs/maintainers/trademark.md) untuk penggunaan yang diizinkan dan dilarang.
### Perlindungan Kontributor
- Anda **mempertahankan hak cipta** atas kontribusi Anda
- **Hibah paten** (Apache 2.0) melindungi Anda dari klaim paten oleh kontributor lain
- Kontribusi Anda **secara permanen diatribusikan** dalam riwayat commit dan [NOTICE](NOTICE)
- Tidak ada hak merek dagang yang dialihkan dengan berkontribusi
--- ---
## Komunitas **ZeroClaw** — Nol overhead. Nol kompromi. Deploy di mana saja. Tukar apa saja. 🦀
- [Telegram](https://t.me/zeroclawlabs) ## Kontributor
- [Facebook Group](https://www.facebook.com/groups/zeroclaw)
- [WeChat Group](https://zeroclawlabs.cn/group.jpg)
--- <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors">
<img src="https://contrib.rocks/image?repo=zeroclaw-labs/zeroclaw" alt="ZeroClaw contributors" />
</a>
## Sponsor Daftar ini dihasilkan dari grafik kontributor GitHub dan diperbarui secara otomatis.
Jika ZeroClaw berguna bagi Anda, mohon pertimbangkan untuk membelikan kami kopi: ## Riwayat Bintang
[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee)](https://buymeacoffee.com/argenistherose) <p align="center">
<a href="https://www.star-history.com/#zeroclaw-labs/zeroclaw&type=date&legend=top-left">
<!-- BEGIN:RECENT_CONTRIBUTORS --> <picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&theme=dark&legend=top-left" />
### 🌟 Recent Contributors (v0.3.1) <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
3 contributors shipped features, fixes, and improvements in this release cycle: </picture>
</a>
- **Argenis** </p>
- **argenis de la rosa**
- **Claude Opus 4.6**
Thank you to everyone who opened issues, reviewed PRs, translated docs, and helped test. Every contribution matters. 🦀
<!-- END:RECENT_CONTRIBUTORS -->

File diff suppressed because it is too large Load Diff

View File

@ -1,24 +1,33 @@
<p align="center"> <p align="center">
<img src="docs/assets/zeroclaw.png" alt="ZeroClaw" width="200" /> <img src="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/docs/assets/zeroclaw-banner.png" alt="ZeroClaw" width="600" />
</p> </p>
<h1 align="center">ZeroClaw 🦀(日本語)</h1> <h1 align="center">🦀 ZeroClaw — パーソナルAIアシスタント</h1>
<p align="center"> <p align="center">
<strong>Zero overhead. Zero compromise. 100% Rust. 100% Agnostic.</strong> <strong>ゼロオーバーヘッド。ゼロ妥協。100% Rust。100% 非依存。</strong><br>
⚡️ <strong>10ドルのハードウェアで5MB未満のRAMで動作OpenClawより99%少ないメモリ、Mac miniより98%安い!</strong>
</p> </p>
<p align="center"> <p align="center">
<a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a> <a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
<a href="NOTICE"><img src="https://img.shields.io/badge/contributors-27+-green.svg" alt="Contributors" /></a> <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors"><img src="https://img.shields.io/github/contributors/zeroclaw-labs/zeroclaw?color=green" alt="Contributors" /></a>
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a> <a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
<a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a> <a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a>
<a href="https://www.facebook.com/groups/zeroclaw"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a> <a href="https://www.facebook.com/groups/zeroclawlabs"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a>
<a href="https://discord.com/invite/wDshRVqRjx"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://www.instagram.com/therealzeroclaw"><img src="https://img.shields.io/badge/Instagram-%40therealzeroclaw-E4405F?style=flat&logo=instagram&logoColor=white" alt="Instagram: @therealzeroclaw" /></a>
<a href="https://www.tiktok.com/@zeroclawlabs"><img src="https://img.shields.io/badge/TikTok-%40zeroclawlabs-000000?style=flat&logo=tiktok&logoColor=white" alt="TikTok: @zeroclawlabs" /></a>
<a href="https://www.rednote.com/user/profile/69b735e6000000002603927e"><img src="https://img.shields.io/badge/RedNote-Official-FF2442?style=flat" alt="RedNote" /></a>
<a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a> <a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a>
</p> </p>
<p align="center"> <p align="center">
🌐 言語: ハーバード大学、MIT、Sundai.Clubコミュニティの学生とメンバーにより構築。
</p>
<p align="center">
🌐 <strong>Languages:</strong>
<a href="README.md">🇺🇸 English</a> · <a href="README.md">🇺🇸 English</a> ·
<a href="README.zh-CN.md">🇨🇳 简体中文</a> · <a href="README.zh-CN.md">🇨🇳 简体中文</a> ·
<a href="README.ja.md">🇯🇵 日本語</a> · <a href="README.ja.md">🇯🇵 日本語</a> ·
@ -52,85 +61,190 @@
<a href="README.nb.md">🇳🇴 Norsk</a> <a href="README.nb.md">🇳🇴 Norsk</a>
</p> </p>
<p align="center"> ZeroClawは、あなた自身のデバイスで実行するパーソナルAIアシスタントです。既に使用しているチャンネルWhatsApp、Telegram、Slack、Discord、Signal、iMessage、Matrix、IRC、Email、Bluesky、Nostr、Mattermost、Nextcloud Talk、DingTalk、Lark、QQ、Reddit、LinkedIn、Twitter、MQTT、WeChat Workなどで応答します。リアルタイム制御用のウェブダッシュボードを備え、ハードウェア周辺機器ESP32、STM32、Arduino、Raspberry Piに接続できます。Gatewayはコントロールプレーンに過ぎず、製品はアシスタントそのものです。
<a href="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh">ワンクリック導入</a> |
<a href="docs/setup-guides/README.md">導入ガイド</a> | ローカルで高速、常時稼働のパーソナルなシングルユーザーアシスタントが必要なら、これがその答えです。
<a href="docs/README.ja.md">ドキュメントハブ</a> |
<a href="docs/SUMMARY.md">Docs TOC</a>
</p>
<p align="center"> <p align="center">
<strong>クイック分流:</strong> <a href="https://zeroclawlabs.ai">ウェブサイト</a> ·
<a href="docs/reference/README.md">参照</a> · <a href="docs/README.md">ドキュメント</a> ·
<a href="docs/ops/README.md">運用</a> · <a href="docs/architecture.md">アーキテクチャ</a> ·
<a href="docs/ops/troubleshooting.md">障害対応</a> · <a href="#クイックスタートtldr">はじめに</a> ·
<a href="docs/security/README.md">セキュリティ</a> · <a href="#openclawからの移行">OpenClawからの移行</a> ·
<a href="docs/hardware/README.md">ハードウェア</a> · <a href="docs/ops/troubleshooting.md">トラブルシューティング</a> ·
<a href="docs/contributing/README.md">貢献・CI</a> <a href="https://discord.com/invite/wDshRVqRjx">Discord</a>
</p> </p>
> この文書は `README.md` の内容を、正確性と可読性を重視して日本語に整えた版です(逐語訳ではありません)。 > **推奨セットアップ:** ターミナルで `zeroclaw onboard` を実行してください。ZeroClaw Onboardがゲートウェイ、ワークスペース、チャンネル、プロバイダーのセットアップをステップバイステップでガイドします。これは推奨されるセットアップパスで、macOS、Linux、WindowsWSL2経由で動作します。新規インストールここから開始[はじめに](#クイックスタートtldr)
>
> コマンド名、設定キー、API パス、Trait 名などの技術識別子は英語のまま維持しています。 ### サブスクリプション認証OAuth
>
> 最終同期日: **2026-02-19** - **OpenAI Codex**ChatGPTサブスクリプション
- **Gemini**Google OAuth
- **Anthropic**APIキーまたは認証トークン
モデルに関する注意:多くのプロバイダー/モデルがサポートされていますが、最良のエクスペリエンスのために、利用可能な最新世代の最も強力なモデルを使用してください。[オンボーディング](#クイックスタートtldr)を参照。
モデル設定 + CLI[プロバイダーリファレンス](docs/reference/api/providers-reference.md)
認証プロファイルローテーションOAuth vs APIキー+ フェイルオーバー:[モデルフェイルオーバー](docs/reference/api/providers-reference.md)
## インストール(推奨)
ランタイムRust stable ツールチェーン。単一バイナリ、ランタイム依存なし。
### HomebrewmacOS/Linuxbrew
```bash
brew install zeroclaw
```
### ワンクリックブートストラップ
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./install.sh
```
`zeroclaw onboard` はインストール後に自動的に実行され、ワークスペースとプロバイダーを設定します。
## クイックスタートTL;DR
完全な初心者ガイド(認証、ペアリング、チャンネル):[はじめに](docs/setup-guides/one-click-bootstrap.md)
```bash
# インストール + オンボード
./install.sh --api-key "sk-..." --provider openrouter
# ゲートウェイを起動webhookサーバー + ウェブダッシュボード)
zeroclaw gateway # デフォルト127.0.0.1:42617
zeroclaw gateway --port 0 # ランダムポート(セキュリティ強化)
# アシスタントと会話
zeroclaw agent -m "Hello, ZeroClaw!"
# インタラクティブモード
zeroclaw agent
# フル自律ランタイムを起動(ゲートウェイ + チャンネル + cron + hands
zeroclaw daemon
# ステータス確認
zeroclaw status
# 診断を実行
zeroclaw doctor
```
アップグレード?更新後に `zeroclaw doctor` を実行してください。
### ソースからビルド(開発)
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
cargo build --release --locked
cargo install --path . --force --locked
zeroclaw onboard
```
> **開発用代替手段(グローバルインストールなし):** コマンドの前に `cargo run --release --` を付けてください(例:`cargo run --release -- status`)。
## OpenClawからの移行
ZeroClawはOpenClawのワークスペース、メモリ、設定をインポートできます
```bash
# 移行内容のプレビュー(安全、読み取り専用)
zeroclaw migrate openclaw --dry-run
# 移行を実行
zeroclaw migrate openclaw
```
これにより、メモリエントリ、ワークスペースファイル、設定が `~/.openclaw/` から `~/.zeroclaw/` に移行されます。設定はJSONからTOMLに自動変換されます。
## セキュリティデフォルトDMアクセス
ZeroClawは実際のメッセージングサービスに接続します。着信DMを信頼できない入力として扱ってください。
完全なセキュリティガイド:[SECURITY.md](SECURITY.md)
すべてのチャンネルのデフォルト動作:
- **DMペアリング**(デフォルト):不明な送信者には短いペアリングコードが送信され、ボットはメッセージを処理しません。
- 承認方法:`zeroclaw pairing approve <channel> <code>`(送信者がローカル許可リストに追加されます)。
- パブリック着信DMには `config.toml` での明示的なオプトインが必要です。
- `zeroclaw doctor` を実行してリスクのある、または設定ミスのあるDMポリシーを検出します。
**自律レベル:**
| レベル | 動作 |
|--------|------|
| `ReadOnly` | エージェントは観察のみで操作不可 |
| `Supervised`(デフォルト) | エージェントは中/高リスク操作時に承認が必要 |
| `Full` | エージェントはポリシー範囲内で自律的に操作 |
**サンドボックス層:** ワークスペース分離、パストラバーサルブロック、コマンド許可リスト、禁止パス(`/etc`、`/root`、`~/.ssh`)、レート制限(時間あたり最大アクション数、日あたりコスト上限)。
<!-- BEGIN:WHATS_NEW --> <!-- BEGIN:WHATS_NEW -->
### 🚀 What's New in v0.3.1 (March 2026)
| Area | Highlights |
|---|---|
| ci | add Termux (aarch64-linux-android) release target |
<!-- END:WHATS_NEW --> <!-- END:WHATS_NEW -->
## 📢 お知らせボード ### 📢 お知らせ
重要なお知らせ(互換性破壊変更、セキュリティ告知、メンテナンス時間、リリース阻害事項など)をここに掲載します。 このボードは重要な通知(破壊的変更、セキュリティアドバイザリ、メンテナンスウィンドウ、リリースブロッカー)に使用します。
| 日付 (UTC) | レベル | お知らせ | 対応 | | 日付 (UTC) | レベル | 通知 | 対応 |
|---|---|---|---| | ---------- | ------ | ---- | ---- |
| 2026-02-19 | _緊急_ | 私たちは `openagen/zeroclaw` および `zeroclaw.org` とは**一切関係ありません**。`zeroclaw.org` は現在 `openagen/zeroclaw` の fork を指しており、そのドメイン/リポジトリは当プロジェクトの公式サイト・公式プロジェクトを装っています。 | これらの情報源による案内、バイナリ、資金調達情報、公式発表は信頼しないでください。必ず[本リポジトリ](https://github.com/zeroclaw-labs/zeroclaw)と認証済み公式SNSのみを参照してください。 | | 2026-02-19 | _重大_ | 当プロジェクトは `openagen/zeroclaw`、`zeroclaw.org`、`zeroclaw.net` とは**一切関係ありません**。`zeroclaw.org` と `zeroclaw.net` ドメインは現在 `openagen/zeroclaw` フォークを指しており、そのドメイン/リポジトリは当プロジェクトの公式ウェブサイト/プロジェクトを偽装しています。 | それらのソースからの情報、バイナリ、資金調達、告知を信頼しないでください。[このリポジトリ](https://github.com/zeroclaw-labs/zeroclaw)と認証済みのソーシャルアカウントのみを使用してください。 |
| 2026-02-21 | _重要_ | 公式サイトを公開しました: [zeroclawlabs.ai](https://zeroclawlabs.ai)。公開までお待ちいただきありがとうございました。引き続きなりすましの試みを確認しているため、ZeroClaw 名義の投資・資金調達などの案内は、公式チャネルで確認できない限り参加しないでください。 | 情報は[本リポジトリ](https://github.com/zeroclaw-labs/zeroclaw)を最優先で確認し、[X@zeroclawlabs](https://x.com/zeroclawlabs?s=21)、[Telegram@zeroclawlabs](https://t.me/zeroclawlabs)、[Facebookグループ](https://www.facebook.com/groups/zeroclaw)、[Redditr/zeroclawlabs](https://www.reddit.com/r/zeroclawlabs/) と [小紅書アカウント](https://www.xiaohongshu.com/user/profile/67cbfc43000000000d008307?xsec_token=AB73VnYnGNx5y36EtnnZfGmAmS-6Wzv8WMuGpfwfkg6Yc%3D&xsec_source=pc_search) で公式更新を確認してください。 | | 2026-02-21 | _重要_ | 公式ウェブサイトが公開されました:[zeroclawlabs.ai](https://zeroclawlabs.ai)。ローンチ準備中のお待ちいただき、ありがとうございます。引き続き偽装行為が確認されていますので、公式チャンネルを通じて公開されない限り、ZeroClawの名前を使った投資や資金調達活動には**参加しないでください**。 | [このリポジトリ](https://github.com/zeroclaw-labs/zeroclaw)を唯一の信頼できる情報源として使用してください。公式アップデートは [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21)、[Facebook (Group)](https://www.facebook.com/groups/zeroclawlabs)、[Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/) をフォローしてください。 |
| 2026-02-19 | _重要_ | Anthropic は 2026-02-19 に Authentication and Credential Use を更新しました。条文では、OAuth authenticationFree/Pro/Maxは Claude Code と Claude.ai 専用であり、Claude Free/Pro/Max で取得した OAuth トークンを他の製品・ツール・サービスAgent SDK を含むで使用することは許可されず、Consumer Terms of Service 違反に該当すると明記されています。 | 損失回避のため、当面は Claude Code OAuth 連携を試さないでください。原文: [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use)。 | | 2026-02-19 | _重要_ | Anthropicは2026-02-19に認証と資格情報の使用に関する規約を更新しました。Claude Code OAuthトークンFree、Pro、MaxはClaude CodeおよびClaude.ai専用です。Claude Free/Pro/MaxのOAuthトークンを他の製品、ツール、サービスAgent SDKを含むで使用することは許可されておらず、消費者利用規約に違反する可能性があります。 | 潜在的な損失を防ぐため、一時的にClaude Code OAuth統合を避けてください。元の条項[Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use)。 |
## 概要 ## ハイライト
ZeroClaw は、高速・省リソース・高拡張性を重視した自律エージェント実行基盤です。ZeroClawはエージェントワークフローのための**ランタイムオペレーティングシステム**です — モデル、ツール、メモリ、実行を抽象化し、エージェントを一度構築すればどこでも実行できるインフラストラクチャです。 - **デフォルトでリーンなランタイム** — 一般的なCLIとステータスワークフローは、リリースビルドで数メガバイトのメモリエンベロープで実行されます。
- **コスト効率の良いデプロイ** — 10ドルボードや小規模クラウドインスタンス向けに設計、重量級ランタイム依存なし。
- **高速コールドスタート** — シングルバイナリRustランタイムにより、コマンドとデーモンの起動がほぼ瞬時。
- **ポータブルアーキテクチャ** — ARM、x86、RISC-Vにまたがる単一バイナリで、プロバイダー/チャンネル/ツールが交換可能。
- **ローカルファーストゲートウェイ** — セッション、チャンネル、ツール、cron、SOP、イベントの単一コントロールプレーン。
- **マルチチャンネル受信箱** — WhatsApp、Telegram、Slack、Discord、Signal、iMessage、Matrix、IRC、Email、Bluesky、Nostr、Mattermost、Nextcloud Talk、DingTalk、Lark、QQ、Reddit、LinkedIn、Twitter、MQTT、WeChat Work、WebSocketなど。
- **マルチエージェントオーケストレーションHands** — スケジュールに基づいて実行され、時間とともにスマートになる自律エージェントスウォーム。
- **標準運用手順SOPs** — MQTT、webhook、cron、周辺機器トリガーによるイベント駆動ワークフロー自動化。
- **ウェブダッシュボード** — React 19 + Viteウェブ UIで、リアルタイムチャット、メモリブラウザ、設定エディタ、cronマネージャー、ツールインスペクター。
- **ハードウェア周辺機器**`Peripheral` traitを通じてESP32、STM32 Nucleo、Arduino、Raspberry Pi GPIOをサポート。
- **ファーストクラスツール** — shell、ファイルI/O、ブラウザ、git、ウェブフェッチ/検索、MCP、Jira、Notion、Google Workspaceなど70以上。
- **ライフサイクルフック** — あらゆる段階でLLM呼び出し、ツール実行、メッセージをインターセプトおよび変更。
- **スキルプラットフォーム** — バンドル、コミュニティ、ワークスペーススキルとセキュリティ監査。
- **トンネルサポート** — Cloudflare、Tailscale、ngrok、OpenVPN、カスタムトンネルによるリモートアクセス。
- Rust ネイティブ実装、単一バイナリで配布可能 ### チームがZeroClawを選ぶ理由
- Trait ベース設計(`Provider` / `Channel` / `Tool` / `Memory` など)
- セキュアデフォルト(ペアリング、明示 allowlist、サンドボックス、スコープ制御
## ZeroClaw が選ばれる理由 - **デフォルトでリーン:** 小型Rustバイナリ、高速起動、低メモリフットプリント。
- **設計によるセキュリティ:** ペアリング、厳格なサンドボックス、明示的な許可リスト、ワークスペーススコーピング。
- **軽量ランタイムを標準化**: CLI や `status` などの常用操作は数MB級メモリで動作。 - **完全に交換可能:** コアシステムはすべてtraitプロバイダー、チャンネル、ツール、メモリ、トンネル
- **低コスト環境に適合**: 低価格ボードや小規模クラウドでも、重い実行基盤なしで運用可能。 - **ロックインなし:** OpenAI互換プロバイダーサポート + プラガブルなカスタムエンドポイント。
- **高速コールドスタート**: Rust 単一バイナリにより、主要コマンドと daemon 起動が非常に速い。
- **高い移植性**: ARM / x86 / RISC-V を同じ運用モデルで扱え、provider/channel/tool を差し替え可能。
## ベンチマークスナップショットZeroClaw vs OpenClaw、再現可能 ## ベンチマークスナップショットZeroClaw vs OpenClaw、再現可能
以下はローカルのクイック比較macOS arm64、2026年2月を、0.8GHz エッジ CPU 基準で正規化したものです。 ローカルマシンクイックベンチマークmacOS arm64、2026年2月、0.8GHzエッジハードウェア向けに正規化
| | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 | | | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 |
|---|---|---|---|---| | ------------------------- | ------------- | -------------- | --------------- | -------------------- |
| **言語** | TypeScript | Python | Go | **Rust** | | **言語** | TypeScript | Python | Go | **Rust** |
| **RAM** | > 1GB | > 100MB | < 10MB | **< 5MB** | | **RAM** | > 1GB | > 100MB | < 10MB | **< 5MB** |
| **起動時間0.8GHz コア)** | > 500s | > 30s | < 1s | **< 10ms** | | **起動時間0.8GHzコア)** | > 500s | > 30s | < 1s | **< 10ms** |
| **バイナリサイズ** | ~28MBdist | N/Aスクリプト | ~8MB | **~8.8 MB** | | **バイナリサイズ** | ~28MB (dist) | N/A (Scripts) | ~8MB | **~8.8 MB** |
| **コスト** | Mac Mini $599 | Linux SBC ~$50 | Linux ボード $10 | **任意の $10 ハードウェア** | | **コスト** | Mac Mini $599 | Linux SBC ~$50 | Linux Board $10 | **任意のハードウェア $10** |
> 注記: ZeroClaw の結果は release ビルドを `/usr/bin/time -l` で計測したものです。OpenClaw は Node.js ランタイムが必要で、ランタイム由来だけで通常は約390MBの追加メモリを要します。NanoBot は Python ランタイムが必要です。PicoClaw と ZeroClaw は静的バイナリです。 > 注ZeroClawの結果はリリースビルドで `/usr/bin/time -l` を使用して測定されています。OpenClawにはNode.jsランタイム通常約390MBの追加メモリオーバーヘッドが必要で、NanoBotにはPythonランタイムが必要です。PicoClawとZeroClawは静的バイナリです。上記のRAM数値はランタイムメモリです。ビルド時のコンパイル要件はより高くなります。
<p align="center"> <p align="center">
<img src="docs/assets/zeroclaw-comparison.jpeg" alt="ZeroClaw vs OpenClaw Comparison" width="800" /> <img src="docs/assets/zeroclaw-comparison.jpeg" alt="ZeroClaw vs OpenClaw Comparison" width="800" />
</p> </p>
### ローカルで再現可能な測定 ### 再現可能なローカル測定
ベンチマーク値はコードやツールチェーン更新で変わるため、必ず自身の環境で再測定してください。
```bash ```bash
cargo build --release cargo build --release
@ -140,115 +254,502 @@ ls -lh target/release/zeroclaw
/usr/bin/time -l target/release/zeroclaw status /usr/bin/time -l target/release/zeroclaw status
``` ```
README のサンプル値macOS arm64, 2026-02-18: ## これまでに構築したすべて
- Release バイナリ: `8.8M` ### コアプラットフォーム
- `zeroclaw --help`: 約 `0.02s`、ピークメモリ 約 `3.9MB`
- `zeroclaw status`: 約 `0.01s`、ピークメモリ 約 `4.1MB`
## ワンクリック導入 - Gateway HTTP/WS/SSEコントロールプレーンセッション、プレゼンス、設定、cron、webhook、ウェブダッシュボード、ペアリング。
- CLIサーフェス`gateway`、`agent`、`onboard`、`doctor`、`status`、`service`、`migrate`、`auth`、`cron`、`channel`、`skills`。
- エージェントオーケストレーションループ:ツールディスパッチ、プロンプト構築、メッセージ分類、メモリロード。
- セッションモデル:セキュリティポリシー実行、自律レベル、承認ゲーティング。
- レジリエントプロバイダーラッパー20以上のLLMバックエンドにわたるフェイルオーバー、リトライ、モデルルーティング。
```bash ### チャンネル
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw チャンネルWhatsAppネイティブ、Telegram、Slack、Discord、Signal、iMessage、Matrix、IRC、Email、Bluesky、DingTalk、Lark、Mattermost、Nextcloud Talk、Nostr、QQ、Reddit、LinkedIn、Twitter、MQTT、WeChat Work、WATI、Mochat、Linq、Notion、WebSocket、ClawdTalk。
./install.sh
フィーチャーゲートMatrix`channel-matrix`、Lark`channel-lark`、Nostr`channel-nostr`)。
### ウェブダッシュボード
React 19 + Vite 6 + Tailwind CSS 4 ウェブダッシュボード、Gatewayから直接提供
- **ダッシュボード** — システム概要、ヘルスステータス、アップタイム、コストトラッキング
- **エージェントチャット** — エージェントとのインタラクティブチャット
- **メモリ** — メモリエントリの閲覧と管理
- **設定** — 設定の表示と編集
- **Cron** — スケジュールタスクの管理
- **ツール** — 利用可能なツールの閲覧
- **ログ** — エージェントアクティビティログの表示
- **コスト** — トークン使用量とコストトラッキング
- **Doctor** — システムヘルス診断
- **インテグレーション** — インテグレーションステータスとセットアップ
- **ペアリング** — デバイスペアリング管理
### ファームウェアターゲット
| ターゲット | プラットフォーム | 用途 |
|------------|------------------|------|
| ESP32 | Espressif ESP32 | ワイヤレス周辺機器エージェント |
| ESP32-UI | ESP32 + Display | ビジュアルインターフェース付きエージェント |
| STM32 Nucleo | STM32 (ARM Cortex-M) | 産業用周辺機器 |
| Arduino | Arduino | 基本センサー/アクチュエーターブリッジ |
| Uno Q Bridge | Arduino Uno | エージェントへのシリアルブリッジ |
### ツール + 自動化
- **コア:** shell、ファイル読み書き/編集、git操作、glob検索、コンテンツ検索
- **ウェブ:** ブラウザ制御、ウェブフェッチ、ウェブ検索、スクリーンショット、画像情報、PDF読み取り
- **インテグレーション:** Jira、Notion、Google Workspace、Microsoft 365、LinkedIn、Composio、Pushover
- **MCP** Model Context Protocolツールラッパー + 遅延ツールセット
- **スケジューリング:** cron追加/削除/更新/実行、スケジュールツール
- **メモリ:** 想起、保存、忘却、知識、プロジェクトインテル
- **高度:** 委譲(エージェント間)、スウォーム、モデル切り替え/ルーティング、セキュリティオプス、クラウドオプス
- **ハードウェア:** ボード情報、メモリマップ、メモリ読み取り(フィーチャーゲート)
### ランタイム + 安全性
- **自律レベル:** ReadOnly、Supervisedデフォルト、Full。
- **サンドボックス:** ワークスペース分離、パストラバーサルブロック、コマンド許可リスト、禁止パス、LandlockLinux、Bubblewrap。
- **レート制限:** 時間あたり最大アクション数、日あたり最大コスト(設定可能)。
- **承認ゲーティング:** 中/高リスク操作のインタラクティブ承認。
- **緊急停止:** 緊急シャットダウン機能。
- **129以上のセキュリティテスト** が自動化CIに含まれています。
### 運用 + パッケージング
- ウェブダッシュボードはGatewayから直接提供。
- トンネルサポートCloudflare、Tailscale、ngrok、OpenVPN、カスタムコマンド。
- Dockerランタイムアダプターによるコンテナ化実行。
- CI/CDbetaプッシュ時自動→ stable手動ディスパッチ→ Docker、crates.io、Scoop、AUR、Homebrew、tweet。
- プリビルドバイナリLinuxx86_64、aarch64、armv7、macOSx86_64、aarch64、Windowsx86_64
## 設定
最小 `~/.zeroclaw/config.toml`
```toml
default_provider = "anthropic"
api_key = "sk-ant-..."
``` ```
環境ごと初期化する場合: `./install.sh --install-system-deps --install-rust`(システムパッケージで `sudo` が必要な場合があります)。 完全な設定リファレンス:[docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
詳細は [`docs/setup-guides/one-click-bootstrap.md`](docs/setup-guides/one-click-bootstrap.md) を参照してください。 ### チャンネル設定
## クイックスタート **Telegram**
```toml
### HomebrewmacOS/Linuxbrew [channels.telegram]
bot_token = "123456:ABC-DEF..."
```bash
brew install zeroclaw
``` ```
```bash **Discord**
git clone https://github.com/zeroclaw-labs/zeroclaw.git ```toml
cd zeroclaw [channels.discord]
cargo build --release --locked token = "your-bot-token"
cargo install --path . --force --locked
zeroclaw onboard --api-key sk-... --provider openrouter
zeroclaw onboard
zeroclaw agent -m "Hello, ZeroClaw!"
# default: 127.0.0.1:42617
zeroclaw gateway
zeroclaw daemon
``` ```
## Subscription AuthOpenAI Codex / Claude Code **Slack**
```toml
[channels.slack]
bot_token = "xoxb-..."
app_token = "xapp-..."
```
ZeroClaw はサブスクリプションベースのネイティブ認証プロファイルをサポートしています(マルチアカウント対応、保存時暗号化)。 **WhatsApp**
```toml
[channels.whatsapp]
enabled = true
```
- 保存先: `~/.zeroclaw/auth-profiles.json` **Matrix**
- 暗号化キー: `~/.zeroclaw/.secret_key` ```toml
- Profile ID 形式: `<provider>:<profile_name>`(例: `openai-codex:work` [channels.matrix]
homeserver_url = "https://matrix.org"
username = "@bot:matrix.org"
password = "..."
```
OpenAI Codex OAuthChatGPT サブスクリプション): **Signal**
```toml
[channels.signal]
phone_number = "+1234567890"
```
### トンネル設定
```toml
[tunnel]
kind = "cloudflare" # or "tailscale", "ngrok", "openvpn", "custom", "none"
```
詳細:[チャンネルリファレンス](docs/reference/api/channels-reference.md) · [設定リファレンス](docs/reference/api/config-reference.md)
### ランタイムサポート(現在)
- **`native`**(デフォルト)— 直接プロセス実行、最速パス、信頼できる環境に最適。
- **`docker`** — 完全なコンテナ分離、強制セキュリティポリシー、Docker必要。
厳格なサンドボックスまたはネットワーク分離には `runtime.kind = "docker"` を設定してください。
## サブスクリプション認証OpenAI Codex / Claude Code / Gemini
ZeroClawはサブスクリプションネイティブ認証プロファイルマルチアカウント、保存時暗号化をサポートしています。
- ストアファイル:`~/.zeroclaw/auth-profiles.json`
- 暗号化キー:`~/.zeroclaw/.secret_key`
- プロファイルIDフォーマット`<provider>:<profile_name>`(例:`openai-codex:work`
```bash ```bash
# サーバー/ヘッドレス環境向け推奨 # OpenAI Codex OAuthChatGPTサブスクリプション
zeroclaw auth login --provider openai-codex --device-code zeroclaw auth login --provider openai-codex --device-code
# ブラウザ/コールバックフロー(ペーストフォールバック付き) # Gemini OAuth
zeroclaw auth login --provider openai-codex --profile default zeroclaw auth login --provider gemini --profile default
zeroclaw auth paste-redirect --provider openai-codex --profile default
# 確認 / リフレッシュ / プロファイル切替 # Anthropic setup-token
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# チェック / リフレッシュ / プロファイル切り替え
zeroclaw auth status zeroclaw auth status
zeroclaw auth refresh --provider openai-codex --profile default zeroclaw auth refresh --provider openai-codex --profile default
zeroclaw auth use --provider openai-codex --profile work zeroclaw auth use --provider openai-codex --profile work
```
Claude Code / Anthropic setup-token: # サブスクリプション認証でエージェントを実行
```bash
# サブスクリプション/setup token の貼り付けAuthorization header モード)
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# エイリアスコマンド
zeroclaw auth setup-token --provider anthropic --profile default
```
Subscription auth で agent を実行:
```bash
zeroclaw agent --provider openai-codex -m "hello" zeroclaw agent --provider openai-codex -m "hello"
zeroclaw agent --provider openai-codex --auth-profile openai-codex:work -m "hello"
# Anthropic は API key と auth token の両方の環境変数をサポート:
# ANTHROPIC_AUTH_TOKEN, ANTHROPIC_OAUTH_TOKEN, ANTHROPIC_API_KEY
zeroclaw agent --provider anthropic -m "hello" zeroclaw agent --provider anthropic -m "hello"
``` ```
## コントリビュート / ライセンス ## エージェントワークスペース + スキル
- Contributing: [`CONTRIBUTING.md`](CONTRIBUTING.md) ワークスペースルート:`~/.zeroclaw/workspace/`(設定で変更可能)。
- PR Workflow: [`docs/contributing/pr-workflow.md`](docs/contributing/pr-workflow.md)
- Reviewer Playbook: [`docs/contributing/reviewer-playbook.md`](docs/contributing/reviewer-playbook.md) 注入されるプロンプトファイル:
- License: MIT or Apache 2.0[`LICENSE-MIT`](LICENSE-MIT), [`LICENSE-APACHE`](LICENSE-APACHE), [`NOTICE`](NOTICE) - `IDENTITY.md` — エージェントの人格と役割
- `USER.md` — ユーザーコンテキストと好み
- `MEMORY.md` — 長期的な事実と教訓
- `AGENTS.md` — セッション規約と初期化ルール
- `SOUL.md` — コアアイデンティティと運用原則
スキル:`~/.zeroclaw/workspace/skills/<skill>/SKILL.md` または `SKILL.toml`
```bash
# インストール済みスキルの一覧
zeroclaw skills list
# gitからインストール
zeroclaw skills install https://github.com/user/my-skill.git
# インストール前のセキュリティ監査
zeroclaw skills audit https://github.com/user/my-skill.git
# スキルの削除
zeroclaw skills remove my-skill
```
## CLIコマンド
```bash
# ワークスペース管理
zeroclaw onboard # ガイド付きセットアップウィザード
zeroclaw status # デーモン/エージェントのステータス表示
zeroclaw doctor # システム診断を実行
# ゲートウェイ + デーモン
zeroclaw gateway # ゲートウェイサーバーを起動127.0.0.1:42617
zeroclaw daemon # フル自律ランタイムを起動
# エージェント
zeroclaw agent # インタラクティブチャットモード
zeroclaw agent -m "message" # 単一メッセージモード
# サービス管理
zeroclaw service install # OSサービスとしてインストールlaunchd/systemd
zeroclaw service start|stop|restart|status
# チャンネル
zeroclaw channel list # 設定済みチャンネルの一覧
zeroclaw channel doctor # チャンネルヘルスの確認
zeroclaw channel bind-telegram 123456789
# Cron + スケジューリング
zeroclaw cron list # スケジュールタスクの一覧
zeroclaw cron add "*/5 * * * *" --prompt "Check system health"
zeroclaw cron remove <id>
# メモリ
zeroclaw memory list # メモリエントリの一覧
zeroclaw memory get <key> # メモリの取得
zeroclaw memory stats # メモリ統計
# 認証プロファイル
zeroclaw auth login --provider <name>
zeroclaw auth status
zeroclaw auth use --provider <name> --profile <profile>
# ハードウェア周辺機器
zeroclaw hardware discover # 接続デバイスのスキャン
zeroclaw peripheral list # 接続周辺機器の一覧
zeroclaw peripheral flash # デバイスへのファームウェア書き込み
# 移行
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw
# シェル補完
source <(zeroclaw completions bash)
zeroclaw completions zsh > ~/.zfunc/_zeroclaw
```
完全なコマンドリファレンス:[docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
<!-- markdownlint-disable MD001 MD024 -->
## 前提条件
<details>
<summary><strong>Windows</strong></summary>
#### 必須
1. **Visual Studio Build Tools**MSVCリンカーとWindows SDKを提供
```powershell
winget install Microsoft.VisualStudio.2022.BuildTools
```
インストール時またはVisual Studioインストーラーで、**"Desktop development with C++"** ワークロードを選択してください。
2. **Rustツールチェーン**
```powershell
winget install Rustlang.Rustup
```
インストール後、新しいターミナルを開いて `rustup default stable` を実行し、stableツールチェーンがアクティブであることを確認してください。
3. 両方が動作していることを**確認**
```powershell
rustc --version
cargo --version
```
#### オプション
- **Docker Desktop** — [Dockerサンドボックスランタイム](#ランタイムサポート現在)`runtime.kind = "docker"`)を使用する場合のみ必要。`winget install Docker.DockerDesktop` でインストール。
</details>
<details>
<summary><strong>Linux / macOS</strong></summary>
#### 必須
1. **ビルドツール:**
- **Linux (Debian/Ubuntu):** `sudo apt install build-essential pkg-config`
- **Linux (Fedora/RHEL):** `sudo dnf group install development-tools && sudo dnf install pkg-config`
- **macOS:** Xcodeコマンドラインツールをインストール`xcode-select --install`
2. **Rustツールチェーン**
```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
詳細は [rustup.rs](https://rustup.rs) を参照。
3. 両方が動作していることを**確認**
```bash
rustc --version
cargo --version
```
#### ワンラインインストーラー
または、上記のステップをスキップして、単一コマンドですべてをインストールシステム依存、Rust、ZeroClaw
```bash
curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash
```
#### コンパイルリソース要件
ソースからのビルドは、結果のバイナリを実行するよりも多くのリソースが必要です:
| リソース | 最小 | 推奨 |
| -------- | ---- | ---- |
| **RAM + swap** | 2 GB | 4 GB+ |
| **空きディスク** | 6 GB | 10 GB+ |
ホストが最小要件を下回る場合、プリビルドバイナリを使用してください:
```bash
./install.sh --prefer-prebuilt
```
ソースフォールバックなしのバイナリのみインストール:
```bash
./install.sh --prebuilt-only
```
#### オプション
- **Docker** — [Dockerサンドボックスランタイム](#ランタイムサポート現在)`runtime.kind = "docker"`)を使用する場合のみ必要。パッケージマネージャーまたは [docker.com](https://docs.docker.com/engine/install/) からインストール。
> **注意:** デフォルトの `cargo build --release``codegen-units=1` を使用してコンパイルのピーク圧力を低減します。強力なマシンでのビルド高速化には `cargo build --profile release-fast` を使用してください。
</details>
<!-- markdownlint-enable MD001 MD024 -->
### プリビルドバイナリ
リリースアセットは以下で公開されています:
- Linux: `x86_64`、`aarch64`、`armv7`
- macOS: `x86_64`、`aarch64`
- Windows: `x86_64`
最新アセットはこちらからダウンロード:
<https://github.com/zeroclaw-labs/zeroclaw/releases/latest>
## ドキュメント
オンボーディングフローを終えて、より深いリファレンスが必要な場合に使用してください。
- ナビゲーションと「どこに何があるか」は[ドキュメントインデックス](docs/README.md)から。
- [アーキテクチャ概要](docs/architecture.md)で完全なシステムモデルを確認。
- すべてのキーと例は[設定リファレンス](docs/reference/api/config-reference.md)で。
- [運用ランブック](docs/ops/operations-runbook.md)に従ってGatewayを実行。
- [ZeroClaw Onboard](#クイックスタートtldr)でガイド付きセットアップ。
- [トラブルシューティングガイド](docs/ops/troubleshooting.md)で一般的な障害をデバッグ。
- 何かを公開する前に[セキュリティガイダンス](docs/security/README.md)を確認。
### リファレンスドキュメント
- ドキュメントハブ:[docs/README.md](docs/README.md)
- 統一ドキュメント目次:[docs/SUMMARY.md](docs/SUMMARY.md)
- コマンドリファレンス:[docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
- 設定リファレンス:[docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
- プロバイダーリファレンス:[docs/reference/api/providers-reference.md](docs/reference/api/providers-reference.md)
- チャンネルリファレンス:[docs/reference/api/channels-reference.md](docs/reference/api/channels-reference.md)
- 運用ランブック:[docs/ops/operations-runbook.md](docs/ops/operations-runbook.md)
- トラブルシューティング:[docs/ops/troubleshooting.md](docs/ops/troubleshooting.md)
### コラボレーションドキュメント
- 貢献ガイド:[CONTRIBUTING.md](CONTRIBUTING.md)
- PRワークフローポリシー[docs/contributing/pr-workflow.md](docs/contributing/pr-workflow.md)
- CIワークフローガイド[docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- レビューアープレイブック:[docs/contributing/reviewer-playbook.md](docs/contributing/reviewer-playbook.md)
- セキュリティ開示ポリシー:[SECURITY.md](SECURITY.md)
- ドキュメントテンプレート:[docs/contributing/doc-template.md](docs/contributing/doc-template.md)
### デプロイ + 運用
- ネットワークデプロイガイド:[docs/ops/network-deployment.md](docs/ops/network-deployment.md)
- プロキシエージェントプレイブック:[docs/ops/proxy-agent-playbook.md](docs/ops/proxy-agent-playbook.md)
- ハードウェアガイド:[docs/hardware/README.md](docs/hardware/README.md)
## Smooth Crab 🦀
ZeroClawはsmooth crab 🦀のために構築されました。高速で効率的なAIアシスタント。Argenis De La Rosaとコミュニティによって構築されました。
- [zeroclawlabs.ai](https://zeroclawlabs.ai)
- [@zeroclawlabs](https://x.com/zeroclawlabs)
## ZeroClawを支援
ZeroClawがあなたの仕事に役立ち、継続的な開発を支援したい場合は、こちらから寄付できます
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
### 🙏 特別な感謝
このオープンソースの取り組みにインスピレーションと活力を与えてくれたコミュニティと機関に心からの感謝を:
- **ハーバード大学** — 知的好奇心を育み、可能性の限界を押し広げてくれたことに感謝。
- **MIT** — オープンな知識、オープンソース、そしてテクノロジーは誰もがアクセスできるべきという信念を擁護してくれたことに感謝。
- **Sundai Club** — コミュニティ、エネルギー、そして意味のあるものを構築するための弛まぬ努力に感謝。
- **世界とその先** 🌍✨ — オープンソースを良い力にしているすべての貢献者、夢想家、構築者へ。これはあなたのためのものです。
最高のアイデアはあらゆるところから生まれるため、私たちはオープンに構築しています。これを読んでいるなら、あなたはその一部です。ようこそ。🦀❤️
## 貢献
ZeroClaw初心者ですか[`good first issue`](https://github.com/zeroclaw-labs/zeroclaw/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) ラベルの付いた課題を探してください — 始め方は[貢献ガイド](CONTRIBUTING.md#first-time-contributors)を参照。AI/vibe-coded PRも歓迎します🤖
[CONTRIBUTING.md](CONTRIBUTING.md) と [CLA.md](docs/contributing/cla.md) を参照。traitを実装してPRを提出してください
- CIワークフローガイド[docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- 新 `Provider``src/providers/`
- 新 `Channel``src/channels/`
- 新 `Observer``src/observability/`
- 新 `Tool``src/tools/`
- 新 `Memory``src/memory/`
- 新 `Tunnel``src/tunnel/`
- 新 `Peripheral``src/peripherals/`
- 新 `Skill``~/.zeroclaw/workspace/skills/<name>/`
<!-- BEGIN:RECENT_CONTRIBUTORS --> <!-- BEGIN:RECENT_CONTRIBUTORS -->
### 🌟 Recent Contributors (v0.3.1)
3 contributors shipped features, fixes, and improvements in this release cycle:
- **Argenis**
- **argenis de la rosa**
- **Claude Opus 4.6**
Thank you to everyone who opened issues, reviewed PRs, translated docs, and helped test. Every contribution matters. 🦀
<!-- END:RECENT_CONTRIBUTORS --> <!-- END:RECENT_CONTRIBUTORS -->
## ⚠️ 公式リポジトリと偽装警告
**これがZeroClawの唯一の公式リポジトリです**
> https://github.com/zeroclaw-labs/zeroclaw
「ZeroClaw」を名乗る、またはZeroClaw Labsとの提携を示唆する他のリポジトリ、組織、ドメイン、パッケージは**無許可であり、本プロジェクトとは無関係です**。既知の無許可フォークは [TRADEMARK.md](docs/maintainers/trademark.md) に記載されます。
偽装や商標の悪用を見つけた場合は、[issueを作成](https://github.com/zeroclaw-labs/zeroclaw/issues)してください。
--- ---
詳細仕様全コマンド、アーキテクチャ、API 仕様、開発フロー)は英語版の [`README.md`](README.md) を参照してください。 ## ライセンス
ZeroClawは最大限のオープン性と貢献者保護のためにデュアルライセンスです
| ライセンス | 用途 |
|------------|------|
| [MIT](LICENSE-MIT) | オープンソース、研究、学術、個人使用 |
| [Apache 2.0](LICENSE-APACHE) | 特許保護、機関、商用デプロイ |
どちらのライセンスでも選択できます。**貢献者は両方のライセンスの権利を自動的に付与します** — 完全な貢献者契約については [CLA.md](docs/contributing/cla.md) を参照してください。
### 商標
**ZeroClaw** の名称とロゴはZeroClaw Labsの商標です。このライセンスは、推薦や提携を暗示するための使用許可を付与しません。許可された使用と禁止された使用については [TRADEMARK.md](docs/maintainers/trademark.md) を参照してください。
### 貢献者の保護
- あなたは貢献の**著作権を保持**します
- **特許付与**Apache 2.0)により、他の貢献者からの特許請求から保護されます
- あなたの貢献はコミット履歴と [NOTICE](NOTICE) に**永続的に帰属**されます
- 貢献により商標権は移転されません
---
**ZeroClaw** — ゼロオーバーヘッド。ゼロ妥協。どこでもデプロイ。何でも交換。🦀
## 貢献者
<a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors">
<img src="https://contrib.rocks/image?repo=zeroclaw-labs/zeroclaw" alt="ZeroClaw contributors" />
</a>
このリストはGitHub貢献者グラフから生成され、自動的に更新されます。
## Star履歴
<p align="center">
<a href="https://www.star-history.com/#zeroclaw-labs/zeroclaw&type=date&legend=top-left">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&theme=dark&legend=top-left" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
</picture>
</a>
</p>

View File

@ -1,8 +1,8 @@
<p align="center"> <p align="center">
<img src="zeroclaw.png" alt="ZeroClaw" width="200" /> <img src="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/docs/assets/zeroclaw-banner.png" alt="ZeroClaw" width="600" />
</p> </p>
<h1 align="center">ZeroClaw 🦀</h1> <h1 align="center">🦀 ZeroClaw — 개인 AI 어시스턴트</h1>
<p align="center"> <p align="center">
<strong>오버헤드 없음. 타협 없음. 100% Rust. 100% 독립적.</strong><br> <strong>오버헤드 없음. 타협 없음. 100% Rust. 100% 독립적.</strong><br>
@ -11,21 +11,24 @@
<p align="center"> <p align="center">
<a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a> <a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
<a href="NOTICE"><img src="https://img.shields.io/badge/contributors-27+-green.svg" alt="Contributors" /></a> <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors"><img src="https://img.shields.io/github/contributors/zeroclaw-labs/zeroclaw?color=green" alt="Contributors" /></a>
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a> <a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
<a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a> <a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a>
<a href="https://zeroclawlabs.cn/group.jpg"><img src="https://img.shields.io/badge/WeChat-Group-B7D7A8?logo=wechat&logoColor=white" alt="WeChat Group" /></a> <a href="https://www.facebook.com/groups/zeroclawlabs"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a>
<a href="https://www.xiaohongshu.com/user/profile/67cbfc43000000000d008307?xsec_token=AB73VnYnGNx5y36EtnnZfGmAmS-6Wzv8WMuGpfwfkg6Yc%3D&xsec_source=pc_search"><img src="https://img.shields.io/badge/Xiaohongshu-Official-FF2442?style=flat" alt="Xiaohongshu: Official" /></a> <a href="https://discord.com/invite/wDshRVqRjx"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://t.me/zeroclawlabs"><img src="https://img.shields.io/badge/Telegram-%40zeroclawlabs-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @zeroclawlabs" /></a> <a href="https://www.instagram.com/therealzeroclaw"><img src="https://img.shields.io/badge/Instagram-%40therealzeroclaw-E4405F?style=flat&logo=instagram&logoColor=white" alt="Instagram: @therealzeroclaw" /></a>
<a href="https://www.facebook.com/groups/zeroclaw"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a> <a href="https://www.tiktok.com/@zeroclawlabs"><img src="https://img.shields.io/badge/TikTok-%40zeroclawlabs-000000?style=flat&logo=tiktok&logoColor=white" alt="TikTok: @zeroclawlabs" /></a>
<a href="https://www.rednote.com/user/profile/69b735e6000000002603927e"><img src="https://img.shields.io/badge/RedNote-Official-FF2442?style=flat" alt="RedNote" /></a>
<a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a> <a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a>
</p> </p>
<p align="center"> <p align="center">
Harvard, MIT, 그리고 Sundai.Club 커뮤니티의 학생들과 멤버들이 만들었습니다. Harvard, MIT, 그리고 Sundai.Club 커뮤니티의 학생들과 멤버들이 만들었습니다.
</p> </p>
<p align="center"> <p align="center">
🌐 <strong>언어:</strong><a href="README.md">🇺🇸 English</a> · 🌐 <strong>언어:</strong>
<a href="README.md">🇺🇸 English</a> ·
<a href="README.zh-CN.md">🇨🇳 简体中文</a> · <a href="README.zh-CN.md">🇨🇳 简体中文</a> ·
<a href="README.ja.md">🇯🇵 日本語</a> · <a href="README.ja.md">🇯🇵 日本語</a> ·
<a href="README.ko.md">🇰🇷 한국어</a> · <a href="README.ko.md">🇰🇷 한국어</a> ·
@ -58,90 +61,191 @@ Harvard, MIT, 그리고 Sundai.Club 커뮤니티의 학생들과 멤버들이
<a href="README.nb.md">🇳🇴 Norsk</a> <a href="README.nb.md">🇳🇴 Norsk</a>
</p> </p>
<p align="center"> ZeroClaw는 자신의 기기에서 실행하는 개인 AI 어시스턴트입니다. 이미 사용하고 있는 채널(WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work 등)에서 응답합니다. 실시간 제어를 위한 웹 대시보드가 있으며 하드웨어 주변기기(ESP32, STM32, Arduino, Raspberry Pi)에 연결할 수 있습니다. Gateway는 단순한 제어 평면이며, 제품은 어시스턴트 자체입니다.
<a href="#빠른-시작">빠른 시작</a> |
<a href="bootstrap.sh">원클릭 설정</a> | 로컬에서 빠르고 항상 켜져 있는 개인 단일 사용자 어시스턴트를 원한다면 바로 이것입니다.
<a href="docs/README.md">문서 허브</a> |
<a href="docs/SUMMARY.md">문서 목차</a>
</p>
<p align="center"> <p align="center">
<strong>빠른 접근:</strong> <a href="https://zeroclawlabs.ai">웹사이트</a> ·
<a href="docs/reference/README.md">참조</a> · <a href="docs/README.md">문서</a> ·
<a href="docs/operations/README.md">운영</a> · <a href="docs/architecture.md">아키텍처</a> ·
<a href="docs/troubleshooting.md">문제 해결</a> · <a href="#빠른-시작-tldr">시작하기</a> ·
<a href="docs/security/README.md">보안</a> · <a href="#openclaw에서-마이그레이션">OpenClaw에서 마이그레이션</a> ·
<a href="docs/hardware/README.md">하드웨어</a> · <a href="docs/ops/troubleshooting.md">문제 해결</a> ·
<a href="docs/contributing/README.md">기여하기</a> <a href="https://discord.com/invite/wDshRVqRjx">Discord</a>
</p> </p>
<p align="center"> > **권장 설정:** 터미널에서 `zeroclaw onboard`를 실행하세요. ZeroClaw Onboard가 gateway, workspace, 채널, 제공자 설정을 단계별로 안내합니다. macOS, Linux, Windows(WSL2)에서 작동하는 권장 설정 경로입니다. 새로 설치하시나요? 여기서 시작하세요: [시작하기](#빠른-시작-tldr)
<strong>빠르고 가벼우며 완전히 자율적인 AI 어시스턴트 인프라</strong><br />
어디서나 배포. 무엇이든 교체.
</p>
<p align="center"> ### Subscription Auth (OAuth)
ZeroClaw는 에이전트 워크플로우를 위한 <strong>런타임 운영체제</strong>입니다 — 모델, 도구, 메모리, 실행을 추상화하여 한 번 구축하고 어디서나 실행할 수 있는 인프라입니다.
</p>
<p align="center"><code>트레이트 기반 아키텍처 · 기본 보안 런타임 · 교체 가능한 제공자/채널/도구 · 모든 것이 플러그 가능</code></p> - **OpenAI Codex** (ChatGPT 구독)
- **Gemini** (Google OAuth)
- **Anthropic** (API 키 또는 인증 토큰)
모델 참고: 많은 제공자/모델이 지원되지만, 최상의 경험을 위해 사용 가능한 최신 세대의 가장 강력한 모델을 사용하세요. [온보딩](#빠른-시작-tldr)을 참조하세요.
모델 구성 + CLI: [Providers reference](docs/reference/api/providers-reference.md)
인증 프로필 교체(OAuth vs API 키) + 장애 조치: [Model failover](docs/reference/api/providers-reference.md)
## 설치 (권장)
런타임: Rust stable 툴체인. 단일 바이너리, 런타임 의존성 없음.
### Homebrew (macOS/Linuxbrew)
```bash
brew install zeroclaw
```
### 원클릭 부트스트랩
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./install.sh
```
`zeroclaw onboard`는 설치 후 자동으로 실행되어 workspace와 제공자를 구성합니다.
## 빠른 시작 (TL;DR)
전체 초보자 가이드(인증, 페어링, 채널): [시작하기](docs/setup-guides/one-click-bootstrap.md)
```bash
# 설치 + 온보드
./install.sh --api-key "sk-..." --provider openrouter
# Gateway 시작 (webhook 서버 + 웹 대시보드)
zeroclaw gateway # 기본값: 127.0.0.1:42617
zeroclaw gateway --port 0 # 랜덤 포트 (보안 강화)
# 어시스턴트와 대화
zeroclaw agent -m "Hello, ZeroClaw!"
# 대화형 모드
zeroclaw agent
# 완전 자율 런타임 시작 (gateway + 채널 + cron + hands)
zeroclaw daemon
# 상태 확인
zeroclaw status
# 진단 실행
zeroclaw doctor
```
업그레이드 하셨나요? 업데이트 후 `zeroclaw doctor`를 실행하세요.
### 소스에서 빌드 (개발용)
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
cargo build --release --locked
cargo install --path . --force --locked
zeroclaw onboard
```
> **개발 폴백 (글로벌 설치 없이):** 명령 앞에 `cargo run --release --`를 붙이세요 (예: `cargo run --release -- status`).
## OpenClaw에서 마이그레이션
ZeroClaw는 OpenClaw workspace, 메모리, 구성을 가져올 수 있습니다:
```bash
# 마이그레이션 대상 미리보기 (안전, 읽기 전용)
zeroclaw migrate openclaw --dry-run
# 마이그레이션 실행
zeroclaw migrate openclaw
```
이것은 메모리 항목, workspace 파일, 구성을 `~/.openclaw/`에서 `~/.zeroclaw/`로 마이그레이션합니다. 구성은 JSON에서 TOML로 자동 변환됩니다.
## 보안 기본값 (DM 접근)
ZeroClaw는 실제 메시징 서비스에 연결됩니다. 수신 DM을 신뢰할 수 없는 입력으로 취급하세요.
전체 보안 가이드: [SECURITY.md](SECURITY.md)
모든 채널의 기본 동작:
- **DM 페어링** (기본값): 알 수 없는 발신자는 짧은 페어링 코드를 받으며 봇은 메시지를 처리하지 않습니다.
- 승인: `zeroclaw pairing approve <channel> <code>` (발신자가 로컬 허용 목록에 추가됩니다).
- 공개 수신 DM은 `config.toml`에서 명시적 옵트인이 필요합니다.
- `zeroclaw doctor`를 실행하여 위험하거나 잘못 구성된 DM 정책을 확인하세요.
**자율성 수준:**
| 수준 | 동작 |
|-------|----------|
| `ReadOnly` | 에이전트가 관찰만 할 수 있고 행동하지 않음 |
| `Supervised` (기본값) | 에이전트가 중/고위험 작업에 대해 승인을 받고 행동 |
| `Full` | 에이전트가 정책 범위 내에서 자율적으로 행동 |
**샌드박싱 계층:** workspace 격리, 경로 탐색 차단, 명령 허용 목록, 금지 경로 (`/etc`, `/root`, `~/.ssh`), 속도 제한 (시간당 최대 작업 수, 일일 비용 상한).
<!-- BEGIN:WHATS_NEW --> <!-- BEGIN:WHATS_NEW -->
### 🚀 What's New in v0.3.1 (March 2026)
| Area | Highlights |
|---|---|
| ci | add Termux (aarch64-linux-android) release target |
<!-- END:WHATS_NEW --> <!-- END:WHATS_NEW -->
### 📢 공지사항 ### 📢 공지사항
이 표를 사용하여 중요한 공지사항(호환성 변경, 보안 공지, 유지보수 기간, 버전 차단)을 확인하세요. 이 표를 사용하여 중요한 공지사항(호환성 변경, 보안 권고, 유지보수 기간, 릴리스 차단)을 확인하세요.
| 날짜 (UTC) | 수준 | 공지 | 조치 | | 날짜 (UTC) | 수준 | 공지 | 조치 |
| ---------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ---------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2026-02-19 | _중요_ | 우리는 `openagen/zeroclaw` 또는 `zeroclaw.org`**관련이 없습니다**. `zeroclaw.org` 도메인은 현재 `openagen/zeroclaw` 포크를 가리키고 있으며, 이 도메인/저장소는 우리의 공식 웹사이트/프로젝트를 사칭하고 있습니다. | 이 소스의 정보, 바이너리, 펀딩, 공지를 신뢰하지 마세요. [이 저장소](https://github.com/zeroclaw-labs/zeroclaw)와 우리의 확인된 소셜 계정만 사용하세요. | | 2026-02-19 | _치명적_ | 우리는 `openagen/zeroclaw`, `zeroclaw.org` 또는 `zeroclaw.net` **관련이 없습니다**. `zeroclaw.org``zeroclaw.net` 도메인은 현재 `openagen/zeroclaw` 포크를 가리키고 있으며, 해당 도메인/저장소는 우리의 공식 웹사이트/프로젝트를 사칭하고 있습니다. | 해당 소스의 정보, 바이너리, 모금, 공지를 신뢰하지 마세요. [이 저장소](https://github.com/zeroclaw-labs/zeroclaw)와 검증된 소셜 계정만 사용하세요. |
| 2026-02-21 | _중요_ | 우리의 공식 웹사이트가 이제 온라인입니다: [zeroclawlabs.ai](https://zeroclawlabs.ai). 기다려주셔서 감사합니다. 여전히 사칭 시도가 감지되고 있습니다: 공식 채널을 통해 게시되지 않은 ZeroClaw 이름의 모든 투자/펀딩 활동에 참여하지 마세요. | [이 저장소](https://github.com/zeroclaw-labs/zeroclaw)를 유일한 진실의 원천으로 사용하세요. [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21), [Telegram (@zeroclawlabs)](https://t.me/zeroclawlabs), [Facebook (그룹)](https://www.facebook.com/groups/zeroclaw), [Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/), 그리고 [Xiaohongshu](https://www.xiaohongshu.com/user/profile/67cbfc43000000000d008307?xsec_token=AB73VnYnGNx5y36EtnnZfGmAmS-6Wzv8WMuGpfwfkg6Yc%3D&xsec_source=pc_search)를 팔로우하여 공식 업데이트를 받으세요. | | 2026-02-21 | _중요_ | 공식 웹사이트가 이제 온라인입니다: [zeroclawlabs.ai](https://zeroclawlabs.ai). 기다려주셔서 감사합니다. 사칭 시도가 여전히 감지되고 있으므로, 공식 채널을 통해 게시되지 않은 ZeroClaw 이름의 투자나 모금 활동에 참여하지 **마세요**. | [이 저장소](https://github.com/zeroclaw-labs/zeroclaw)를 유일한 진실의 원천으로 사용하세요. [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21), [Facebook (그룹)](https://www.facebook.com/groups/zeroclawlabs), [Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/) 팔로우하여 공식 업데이트를 받으세요. |
| 2026-02-19 | _중요_ | Anthropic이 2026-02-19에 인증 및 자격증명 사용 약관을 업데이트했습니다. OAuth 인증(Free, Pro, Max)은 Claude Code 및 Claude.ai 전용입니다. 다른 제품, 도구 또는 서비스(Agent SDK 포함)에서 Claude Free/Pro/Max OAuth 토큰을 사용하는 것은 허용되지 않으며 소비자 이용약관을 위반할 수 있습니다. | 잠재적인 손실을 방지하기 위해 일시적으로 Claude Code OAuth 통합을 피하세요. 원본 조항: [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use). | | 2026-02-19 | _중요_ | Anthropic이 2026-02-19에 인증 및 자격증명 사용 약관을 업데이트했습니다. Claude Code OAuth 토큰(Free, Pro, Max)은 Claude Code와 Claude.ai 전용입니다. 다른 제품, 도구 또는 서비스(Agent SDK 포함)에서 Claude Free/Pro/Max OAuth 토큰을 사용하는 것은 허용되지 않으며 소비자 이용약관을 위반할 수 있습니다. | 잠재적 손실을 방지하기 위해 일시적으로 Claude Code OAuth 통합을 피하세요. 원본 조항: [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use). |
### ✨ 기능 ## 주요 특징
- 🏎️ **기본 경량 런타임:** 일반적인 CLI 워크플로우와 상태 명령이 프로덕션 빌드에서 몇 메가바이트의 메모리 공간 내에서 실행됩니다. - **기본 경량 런타임** — 일반적인 CLI 및 상태 워크플로우가 릴리스 빌드에서 몇 메가바이트의 메모리 범위 내에서 실행됩니다.
- 💰 **비용 효율적인 배포:** 무거운 런타임 의존성 없이 저비용 보드 및 소규모 클라우드 인스턴스를 위해 설계되었습니다. - **비용 효율적인 배포** — $10 보드와 소규모 클라우드 인스턴스를 위해 설계되었으며, 무거운 런타임 의존성이 없습니다.
- ⚡ **빠른 콜드 스타트:** 단일 Rust 바이너리 런타임이 일상적인 운영을 위해 거의 즉각적인 명령 및 데몬 시작을 유지합니다. - **빠른 콜드 스타트** — 단일 바이너리 Rust 런타임으로 명령 및 데몬 시작이 거의 즉각적입니다.
- 🌍 **이식 가능한 아키텍처:** 교체 가능한 제공자/채널/도구로 ARM, x86, RISC-V에서 단일 바이너리 워크플로우. - **이식 가능한 아키텍처** — 교체 가능한 제공자/채널/도구로 ARM, x86, RISC-V에서 하나의 바이너리.
- **로컬 우선 Gateway** — 세션, 채널, 도구, cron, SOP, 이벤트를 위한 단일 제어 평면.
- **멀티 채널 수신함** — WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WebSocket 등.
- **멀티 에이전트 오케스트레이션 (Hands)** — 스케줄에 따라 실행되고 시간이 지남에 따라 더 똑똑해지는 자율 에이전트 스웜.
- **표준 운영 절차 (SOPs)** — MQTT, webhook, cron, 주변기기 트리거를 통한 이벤트 기반 워크플로우 자동화.
- **웹 대시보드** — 실시간 채팅, 메모리 브라우저, 구성 편집기, cron 관리자, 도구 검사기를 갖춘 React 19 + Vite 웹 UI.
- **하드웨어 주변기기**`Peripheral` 트레이트를 통한 ESP32, STM32 Nucleo, Arduino, Raspberry Pi GPIO.
- **일급 도구** — shell, file I/O, browser, git, web fetch/search, MCP, Jira, Notion, Google Workspace 등 70개 이상.
- **라이프사이클 훅** — 모든 단계에서 LLM 호출, 도구 실행, 메시지를 가로채고 수정.
- **스킬 플랫폼** — 번들, 커뮤니티, workspace 스킬과 보안 감사.
- **터널 지원** — 원격 접속을 위한 Cloudflare, Tailscale, ngrok, OpenVPN, 사용자 정의 터널.
### 왜 팀들이 ZeroClaw를 선택하나요 ### 팀이 ZeroClaw를 선택하는 이유
- **기본 경량:** 작은 Rust 바이너리, 빠른 시작, 낮은 메모리 공간. - **기본 경량:** 작은 Rust 바이너리, 빠른 시작, 낮은 메모리 사용.
- **기본 보안:** 페어링, 엄격한 샌드박싱, 명시적 허용 목록, 작업공간 범위. - **기본 보안:** 페어링, 엄격한 샌드박싱, 명시적 허용 목록, workspace 범위 지정.
- **완전히 교체 가능:** 핵심 시스템이 트레이트입니다(제공자, 채널, 도구, 메모리, 터널). - **완전히 교체 가능:** 핵심 시스템이 트레이트(제공자, 채널, 도구, 메모리, 터널).
- **벤더 락인 없음:** OpenAI 호환 제공자 지원 + 플러그 가능한 사용자 정의 엔드포인트. - **벤더 락인 없음:** OpenAI 호환 제공자 지원 + 플러그 가능한 사용자 정의 엔드포인트.
## 벤치마크 스냅샷 (ZeroClaw vs OpenClaw, 재현 가능) ## 벤치마크 스냅샷 (ZeroClaw vs OpenClaw, 재현 가능)
로컬 머신에서 빠른 벤치마크(macOS arm64, 2026년 2월) 0.8 GHz 엣지 하드웨어로 정규화됨. 로컬 머신 빠른 벤치마크 (macOS arm64, 2026년 2월) 0.8GHz 엣지 하드웨어로 정규화.
| | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 | | | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 |
| ---------------------------- | ------------- | -------------- | --------------- | --------------------- | | ------------------------- | ------------- | -------------- | --------------- | -------------------- |
| **언어** | TypeScript | Python | Go | **Rust** | | **언어** | TypeScript | Python | Go | **Rust** |
| **RAM** | > 1 GB | > 100 MB | < 10 MB | **< 5 MB** | | **RAM** | > 1GB | > 100MB | < 10MB | **< 5MB** |
| **시작 (0.8 GHz 코어)** | > 500s | > 30s | < 1s | **< 10ms** | | **시작 (0.8GHz 코어)** | > 500s | > 30s | < 1s | **< 10ms** |
| **바이너리 크기** | ~28 MB (dist) | N/A (Scripts) | ~8 MB | **3.4 MB** | | **바이너리 크기** | ~28MB (dist) | N/A (Scripts) | ~8MB | **~8.8 MB** |
| **비용** | Mac Mini $599 | Linux SBC ~$50 | Linux 보드 $10 | **모든 하드웨어 $10** | | **비용** | Mac Mini $599 | Linux SBC ~$50 | Linux Board $10 | **모든 하드웨어 $10** |
> 참고: ZeroClaw 결과는 `/usr/bin/time -l`을 사용한 프로덕션 빌드에서 측정되었습니다. OpenClaw는 Node.js 런타임이 필요하며(일반적으로 ~390MB 추가 메모리 오버헤드), NanoBot은 Python 런타임이 필요합니다. PicoClaw와 ZeroClaw는 정적 바이너리입니다. 위 RAM 수치는 런타임 메모리이며, 빌드 시간 컴파일 요구사항은 더 높습니다. > 참고: ZeroClaw 결과는 `/usr/bin/time -l`을 사용한 릴리스 빌드에서 측정되었습니다. OpenClaw는 Node.js 런타임이 필요하며(일반적으로 ~390MB 추가 메모리 오버헤드), NanoBot은 Python 런타임이 필요합니다. PicoClaw와 ZeroClaw는 정적 바이너리입니다. 위 RAM 수치는 런타임 메모리이며, 빌드 시 컴파일 요구사항은 더 높습니다.
<p align="center"> <p align="center">
<img src="zero-claw.jpeg" alt="ZeroClaw vs OpenClaw 비교" width="800" /> <img src="docs/assets/zeroclaw-comparison.jpeg" alt="ZeroClaw vs OpenClaw Comparison" width="800" />
</p> </p>
### 재현 가능한 로컬 측정 ### 재현 가능한 로컬 측정
벤치마크 주장은 코드와 툴체인의 발전에 따라 달라질 수 있으므로 항상 현재 빌드를 로컬에서 측정하세요:
```bash ```bash
cargo build --release cargo build --release
ls -lh target/release/zeroclaw ls -lh target/release/zeroclaw
@ -150,20 +254,266 @@ ls -lh target/release/zeroclaw
/usr/bin/time -l target/release/zeroclaw status /usr/bin/time -l target/release/zeroclaw status
``` ```
샘플 예시(macOS arm64, 2026년 2월 18일 측정): ## 지금까지 구축한 모든 것
- 릴리스 바이너리 크기: `8.8M` ### 핵심 플랫폼
- `zeroclaw --help`: 실제 시간 약 `0.02s`, 최대 메모리 공간 ~`3.9 MB`
- `zeroclaw status`: 실제 시간 약 `0.01s`, 최대 메모리 공간 ~`4.1 MB` - 세션, 프레즌스, 구성, cron, webhook, 웹 대시보드, 페어링을 갖춘 Gateway HTTP/WS/SSE 제어 평면.
- CLI 표면: `gateway`, `agent`, `onboard`, `doctor`, `status`, `service`, `migrate`, `auth`, `cron`, `channel`, `skills`.
- 도구 디스패치, 프롬프트 구성, 메시지 분류, 메모리 로딩을 갖춘 에이전트 오케스트레이션 루프.
- 보안 정책 적용, 자율성 수준, 승인 게이팅을 갖춘 세션 모델.
- 20개 이상의 LLM 백엔드에 걸쳐 장애 조치, 재시도, 모델 라우팅을 갖춘 탄력적 제공자 래퍼.
### 채널
채널: WhatsApp (네이티브), Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, DingTalk, Lark, Mattermost, Nextcloud Talk, Nostr, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WATI, Mochat, Linq, Notion, WebSocket, ClawdTalk.
기능 게이트: Matrix (`channel-matrix`), Lark (`channel-lark`), Nostr (`channel-nostr`).
### 웹 대시보드
Gateway에서 직접 제공하는 React 19 + Vite 6 + Tailwind CSS 4 웹 대시보드:
- **대시보드** — 시스템 개요, 상태, 가동 시간, 비용 추적
- **에이전트 채팅** — 에이전트와의 대화형 채팅
- **메모리** — 메모리 항목 탐색 및 관리
- **구성** — 구성 보기 및 편집
- **Cron** — 예약된 작업 관리
- **도구** — 사용 가능한 도구 탐색
- **로그** — 에이전트 활동 로그 보기
- **비용** — 토큰 사용량 및 비용 추적
- **Doctor** — 시스템 상태 진단
- **통합** — 통합 상태 및 설정
- **페어링** — 기기 페어링 관리
### 펌웨어 대상
| 대상 | 플랫폼 | 용도 |
|--------|----------|---------|
| ESP32 | Espressif ESP32 | 무선 주변기기 에이전트 |
| ESP32-UI | ESP32 + Display | 시각적 인터페이스를 갖춘 에이전트 |
| STM32 Nucleo | STM32 (ARM Cortex-M) | 산업용 주변기기 |
| Arduino | Arduino | 기본 센서/액추에이터 브릿지 |
| Uno Q Bridge | Arduino Uno | 에이전트와의 시리얼 브릿지 |
### 도구 + 자동화
- **코어:** shell, file read/write/edit, git operations, glob search, content search
- **웹:** browser control, web fetch, web search, screenshot, image info, PDF read
- **통합:** Jira, Notion, Google Workspace, Microsoft 365, LinkedIn, Composio, Pushover
- **MCP:** Model Context Protocol tool wrapper + deferred tool sets
- **스케줄링:** cron add/remove/update/run, schedule tool
- **메모리:** recall, store, forget, knowledge, project intel
- **고급:** delegate (agent-to-agent), swarm, model switch/routing, security ops, cloud ops
- **하드웨어:** board info, memory map, memory read (feature-gated)
### 런타임 + 안전
- **자율성 수준:** ReadOnly, Supervised (기본값), Full.
- **샌드박싱:** workspace 격리, 경로 탐색 차단, 명령 허용 목록, 금지 경로, Landlock (Linux), Bubblewrap.
- **속도 제한:** 시간당 최대 작업 수, 일일 최대 비용 (구성 가능).
- **승인 게이팅:** 중/고위험 작업에 대한 대화형 승인.
- **긴급 정지:** 긴급 종료 기능.
- **129개 이상의 보안 테스트** 자동화된 CI에서.
### 운영 + 패키징
- Gateway에서 직접 제공하는 웹 대시보드.
- 터널 지원: Cloudflare, Tailscale, ngrok, OpenVPN, custom command.
- 컨테이너화된 실행을 위한 Docker 런타임 어댑터.
- CI/CD: beta (push 시 자동) → stable (수동 디스패치) → Docker, crates.io, Scoop, AUR, Homebrew, tweet.
- Linux (x86_64, aarch64, armv7), macOS (x86_64, aarch64), Windows (x86_64)용 사전 빌드 바이너리.
## 구성
최소 `~/.zeroclaw/config.toml`:
```toml
default_provider = "anthropic"
api_key = "sk-ant-..."
```
전체 구성 참조: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md).
### 채널 구성
**Telegram:**
```toml
[channels.telegram]
bot_token = "123456:ABC-DEF..."
```
**Discord:**
```toml
[channels.discord]
token = "your-bot-token"
```
**Slack:**
```toml
[channels.slack]
bot_token = "xoxb-..."
app_token = "xapp-..."
```
**WhatsApp:**
```toml
[channels.whatsapp]
enabled = true
```
**Matrix:**
```toml
[channels.matrix]
homeserver_url = "https://matrix.org"
username = "@bot:matrix.org"
password = "..."
```
**Signal:**
```toml
[channels.signal]
phone_number = "+1234567890"
```
### 터널 구성
```toml
[tunnel]
kind = "cloudflare" # 또는 "tailscale", "ngrok", "openvpn", "custom", "none"
```
상세 정보: [Channel reference](docs/reference/api/channels-reference.md) · [Config reference](docs/reference/api/config-reference.md)
### 현재 런타임 지원
- **`native`** (기본값) — 직접 프로세스 실행, 가장 빠른 경로, 신뢰할 수 있는 환경에 적합.
- **`docker`** — 완전한 컨테이너 격리, 강화된 보안 정책, Docker 필요.
엄격한 샌드박싱이나 네트워크 격리를 위해 `runtime.kind = "docker"`를 설정하세요.
## Subscription Auth (OpenAI Codex / Claude Code / Gemini)
ZeroClaw는 구독 기반 인증 프로필(다중 계정, 저장 시 암호화)을 지원합니다.
- 저장 파일: `~/.zeroclaw/auth-profiles.json`
- 암호화 키: `~/.zeroclaw/.secret_key`
- 프로필 id 형식: `<provider>:<profile_name>` (예: `openai-codex:work`)
```bash
# OpenAI Codex OAuth (ChatGPT 구독)
zeroclaw auth login --provider openai-codex --device-code
# Gemini OAuth
zeroclaw auth login --provider gemini --profile default
# Anthropic setup-token
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# 확인 / 갱신 / 프로필 전환
zeroclaw auth status
zeroclaw auth refresh --provider openai-codex --profile default
zeroclaw auth use --provider openai-codex --profile work
# 구독 인증으로 에이전트 실행
zeroclaw agent --provider openai-codex -m "hello"
zeroclaw agent --provider anthropic -m "hello"
```
## 에이전트 workspace + 스킬
Workspace 루트: `~/.zeroclaw/workspace/` (구성을 통해 변경 가능).
주입되는 프롬프트 파일:
- `IDENTITY.md` — 에이전트 성격과 역할
- `USER.md` — 사용자 컨텍스트와 선호도
- `MEMORY.md` — 장기 사실과 교훈
- `AGENTS.md` — 세션 규칙과 초기화 규칙
- `SOUL.md` — 핵심 정체성과 운영 원칙
스킬: `~/.zeroclaw/workspace/skills/<skill>/SKILL.md` 또는 `SKILL.toml`.
```bash
# 설치된 스킬 목록
zeroclaw skills list
# git에서 설치
zeroclaw skills install https://github.com/user/my-skill.git
# 설치 전 보안 감사
zeroclaw skills audit https://github.com/user/my-skill.git
# 스킬 제거
zeroclaw skills remove my-skill
```
## CLI 명령어
```bash
# Workspace 관리
zeroclaw onboard # 안내된 설정 마법사
zeroclaw status # 데몬/에이전트 상태 표시
zeroclaw doctor # 시스템 진단 실행
# Gateway + 데몬
zeroclaw gateway # Gateway 서버 시작 (127.0.0.1:42617)
zeroclaw daemon # 완전 자율 런타임 시작
# 에이전트
zeroclaw agent # 대화형 채팅 모드
zeroclaw agent -m "message" # 단일 메시지 모드
# 서비스 관리
zeroclaw service install # OS 서비스로 설치 (launchd/systemd)
zeroclaw service start|stop|restart|status
# 채널
zeroclaw channel list # 구성된 채널 목록
zeroclaw channel doctor # 채널 상태 확인
zeroclaw channel bind-telegram 123456789
# Cron + 스케줄링
zeroclaw cron list # 예약된 작업 목록
zeroclaw cron add "*/5 * * * *" --prompt "Check system health"
zeroclaw cron remove <id>
# 메모리
zeroclaw memory list # 메모리 항목 목록
zeroclaw memory get <key> # 메모리 조회
zeroclaw memory stats # 메모리 통계
# 인증 프로필
zeroclaw auth login --provider <name>
zeroclaw auth status
zeroclaw auth use --provider <name> --profile <profile>
# 하드웨어 주변기기
zeroclaw hardware discover # 연결된 기기 스캔
zeroclaw peripheral list # 연결된 주변기기 목록
zeroclaw peripheral flash # 기기에 펌웨어 플래시
# 마이그레이션
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw
# 셸 자동완성
source <(zeroclaw completions bash)
zeroclaw completions zsh > ~/.zfunc/_zeroclaw
```
전체 명령어 참조: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
<!-- markdownlint-disable MD001 MD024 -->
## 사전 요구사항 ## 사전 요구사항
<details> <details>
<summary><strong>Windows</strong></summary> <summary><strong>Windows</strong></summary>
### Windows — 필수 #### 필수
1. **Visual Studio Build Tools**(MSVC 링커 및 Windows SDK 제공): 1. **Visual Studio Build Tools** (MSVC 링커와 Windows SDK 제공):
```powershell ```powershell
winget install Microsoft.VisualStudio.2022.BuildTools winget install Microsoft.VisualStudio.2022.BuildTools
@ -177,7 +527,7 @@ ls -lh target/release/zeroclaw
winget install Rustlang.Rustup winget install Rustlang.Rustup
``` ```
설치 후, 새 터미널을 열고 `rustup default stable`을 실행하여 안정적인 툴체인이 활성화되어 있는지 확인하세요. 설치 후 새 터미널을 열고 `rustup default stable`을 실행하여 stable 툴체인이 활성화되었는지 확인하세요.
3. **확인:** 둘 다 작동하는지 확인: 3. **확인:** 둘 다 작동하는지 확인:
```powershell ```powershell
@ -185,18 +535,18 @@ ls -lh target/release/zeroclaw
cargo --version cargo --version
``` ```
### Windows — 선택사항 #### 선택사항
- **Docker Desktop** — [Docker 샌드박스 런타임](#현재-런타임-지원)을 사용하는 경우에만 필요(`runtime.kind = "docker"`). `winget install Docker.DockerDesktop`을 통해 설치. - **Docker Desktop** — [Docker 샌드박스 런타임](#현재-런타임-지원)을 사용하는 경우에만 필요 (`runtime.kind = "docker"`). `winget install Docker.DockerDesktop`으로 설치.
</details> </details>
<details> <details>
<summary><strong>Linux / macOS</strong></summary> <summary><strong>Linux / macOS</strong></summary>
### Linux / macOS — 필수 #### 필수
1. **필수 빌드 도구:** 1. **빌드 필수 도구:**
- **Linux (Debian/Ubuntu):** `sudo apt install build-essential pkg-config` - **Linux (Debian/Ubuntu):** `sudo apt install build-essential pkg-config`
- **Linux (Fedora/RHEL):** `sudo dnf group install development-tools && sudo dnf install pkg-config` - **Linux (Fedora/RHEL):** `sudo dnf group install development-tools && sudo dnf install pkg-config`
- **macOS:** Xcode Command Line Tools 설치: `xcode-select --install` - **macOS:** Xcode Command Line Tools 설치: `xcode-select --install`
@ -209,243 +559,152 @@ ls -lh target/release/zeroclaw
자세한 내용은 [rustup.rs](https://rustup.rs)를 참조하세요. 자세한 내용은 [rustup.rs](https://rustup.rs)를 참조하세요.
3. **확인:** 3. **확인:** 둘 다 작동하는지 확인:
```bash ```bash
rustc --version rustc --version
cargo --version cargo --version
``` ```
### Linux / macOS — 선택사항 #### 한 줄 설치
- **Docker** — [Docker 샌드박스 런타임](#현재-런타임-지원)을 사용하는 경우에만 필요(`runtime.kind = "docker"`). 위 단계를 건너뛰고 모든 것(시스템 의존성, Rust, ZeroClaw)을 한 번에 설치:
- **Linux (Debian/Ubuntu):** [docs.docker.com](https://docs.docker.com/engine/install/ubuntu/) 참조
- **Linux (Fedora/RHEL):** [docs.docker.com](https://docs.docker.com/engine/install/fedora/) 참조 ```bash
- **macOS:** [docker.com/products/docker-desktop](https://www.docker.com/products/docker-desktop/)에서 Docker Desktop 설치 curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash
```
#### 컴파일 리소스 요구사항
소스에서 빌드하려면 결과 바이너리를 실행하는 것보다 더 많은 리소스가 필요합니다:
| 리소스 | 최소 | 권장 |
| -------------- | ------- | ----------- |
| **RAM + swap** | 2 GB | 4 GB+ |
| **여유 디스크** | 6 GB | 10 GB+ |
호스트가 최소 사양 미만인 경우 사전 빌드 바이너리를 사용하세요:
```bash
./install.sh --prefer-prebuilt
```
소스 빌드 폴백 없이 바이너리만 설치:
```bash
./install.sh --prebuilt-only
```
#### 선택사항
- **Docker** — [Docker 샌드박스 런타임](#현재-런타임-지원)을 사용하는 경우에만 필요 (`runtime.kind = "docker"`). 패키지 관리자 또는 [docker.com](https://docs.docker.com/engine/install/)을 통해 설치.
> **참고:** 기본 `cargo build --release``codegen-units=1`을 사용하여 피크 컴파일 압력을 낮춥니다. 성능이 좋은 머신에서 더 빠른 빌드를 위해 `cargo build --profile release-fast`를 사용하세요.
</details> </details>
## 빠른 시작 <!-- markdownlint-enable MD001 MD024 -->
### 옵션 1: 자동 설정 (권장) ### 사전 빌드 바이너리
`bootstrap.sh` 스크립트는 Rust를 설치하고, ZeroClaw를 클론하고, 컴파일하고, 초기 개발 환경을 설정합니다: 릴리스 에셋은 다음 플랫폼에 게시됩니다:
```bash - Linux: `x86_64`, `aarch64`, `armv7`
curl -fsSL https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/bootstrap.sh | bash - macOS: `x86_64`, `aarch64`
``` - Windows: `x86_64`
이 작업은 다음을 수행합니다: 최신 에셋 다운로드:
<https://github.com/zeroclaw-labs/zeroclaw/releases/latest>
1. Rust 설치 (없는 경우) ## 문서
2. ZeroClaw 저장소 클론
3. ZeroClaw를 릴리스 모드로 컴파일
4. `~/.cargo/bin/``zeroclaw` 설치
5. `~/.zeroclaw/workspace/`에 기본 작업공간 구조 생성
6. 시작용 `~/.zeroclaw/workspace/config.toml` 구성 파일 생성
부트스트랩 후, 셸을 다시 로드하거나 `source ~/.cargo/env`를 실행하여 `zeroclaw` 명령을 전역으로 사용하세요. 온보딩을 마친 후 더 깊은 참조가 필요할 때 사용하세요.
### 옵션 2: 수동 설치 - [문서 인덱스](docs/README.md)에서 탐색과 "무엇이 어디에 있는지"를 확인하세요.
- [아키텍처 개요](docs/architecture.md)에서 전체 시스템 모델을 확인하세요.
- [구성 참조](docs/reference/api/config-reference.md)에서 모든 키와 예제를 확인하세요.
- [운영 런북](docs/ops/operations-runbook.md)으로 Gateway를 운영하세요.
- [ZeroClaw Onboard](#빠른-시작-tldr)를 따라 안내된 설정을 진행하세요.
- [문제 해결 가이드](docs/ops/troubleshooting.md)로 일반적인 오류를 디버그하세요.
- 노출하기 전에 [보안 가이드](docs/security/README.md)를 검토하세요.
<details> ### 참조 문서
<summary><strong>클릭하여 수동 설치 단계 보기</strong></summary>
```bash
# 1. 저장소 클론
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
# 2. 릴리스로 컴파일
cargo build --release --locked
# 3. 바이너리 설치
cargo install --path . --locked
# 4. 작업공간 초기화
zeroclaw init
# 5. 설치 확인
zeroclaw --version
zeroclaw status
```
</details>
### 설치 후
설치 후(부트스트랩 또는 수동), 다음이 표시되어야 합니다:
```
~/.zeroclaw/workspace/
├── config.toml # 메인 구성
├── .pairing # 페어링 시크릿 (첫 실행 시 생성)
├── logs/ # 데몬/에이전트 로그
├── skills/ # 사용자 정의 스킬
└── memory/ # 대화 컨텍스트 저장소
```
**다음 단계:**
1. `~/.zeroclaw/workspace/config.toml`에서 AI 제공자 구성
2. 고급 옵션은 [구성 참조](docs/config-reference.md) 확인
3. 에이전트 시작: `zeroclaw agent start`
4. 선호하는 채널을 통해 테스트 ([채널 참조](docs/channels-reference.md) 참조)
## 구성
제공자, 채널 및 시스템 동작을 구성하려면 `~/.zeroclaw/workspace/config.toml`을 편집하세요.
### 빠른 구성 참조
```toml
[providers.anthropic]
api_key = "sk-ant-..."
model = "claude-sonnet-4-20250514"
[providers.openai]
api_key = "sk-..."
model = "gpt-4o"
[channels.telegram]
enabled = true
bot_token = "123456:ABC-DEF..."
[channels.matrix]
enabled = true
homeserver_url = "https://matrix.org"
username = "@bot:matrix.org"
password = "..."
[memory]
kind = "markdown" # 또는 "sqlite" 또는 "none"
[runtime]
kind = "native" # 또는 "docker" (Docker 필요)
```
**전체 참조 문서:**
- [구성 참조](docs/config-reference.md) — 모든 설정, 검증, 기본값
- [제공자 참조](docs/providers-reference.md) — AI 제공자별 구성
- [채널 참조](docs/channels-reference.md) — Telegram, Matrix, Slack, Discord 등
- [운영](docs/operations-runbook.md) — 프로덕션 모니터링, 시크릿 교체, 스케일링
### 현재 런타임 지원
ZeroClaw는 두 가지 코드 실행 백엔드를 지원합니다:
- **`native`**(기본값) — 직접 프로세스 실행, 가장 빠른 경로, 신뢰할 수 있는 환경에 이상적
- **`docker`** — 전체 컨테이너 격리, 강화된 보안 정책, Docker 필요
엄격한 샌드박싱이나 네트워크 격리가 필요한 경우 `runtime.kind = "docker"`를 사용하세요. 자세한 내용은 [구성 참조](docs/config-reference.md#runtime)를 참조하세요.
## 명령어
```bash
# 작업공간 관리
zeroclaw init # 새 작업공간 초기화
zeroclaw status # 데몬/에이전트 상태 표시
zeroclaw config validate # config.toml 구문 및 값 확인
# 데몬 관리
zeroclaw daemon start # 백그라운드에서 데몬 시작
zeroclaw daemon stop # 실행 중인 데몬 중지
zeroclaw daemon restart # 데몬 재시작 (구성 다시 로드)
zeroclaw daemon logs # 데몬 로그 표시
# 에이전트 관리
zeroclaw agent start # 에이전트 시작 (데몬 실행 중 필요)
zeroclaw agent stop # 에이전트 중지
zeroclaw agent restart # 에이전트 재시작 (구성 다시 로드)
# 페어링 작업
zeroclaw pairing init # 새 페어링 시크릿 생성
zeroclaw pairing rotate # 기존 페어링 시크릿 교체
# 터널링 (공개 노출용)
zeroclaw tunnel start # 로컬 데몬으로 터널 시작
zeroclaw tunnel stop # 활성 터널 중지
# 진단
zeroclaw doctor # 시스템 상태 검사 실행
zeroclaw version # 버전 및 빌드 정보 표시
```
전체 옵션 및 예제는 [명령어 참조](docs/commands-reference.md)를 참조하세요.
## 협업 및 문서
작업 기반 맵을 위해 문서 허브로 시작하세요:
- 문서 허브: [`docs/README.md`](docs/README.md)
- 통합 문서 목차: [`docs/SUMMARY.md`](docs/SUMMARY.md)
- 명령어 참조: [`docs/commands-reference.md`](docs/commands-reference.md)
- 구성 참조: [`docs/config-reference.md`](docs/config-reference.md)
- 제공자 참조: [`docs/providers-reference.md`](docs/providers-reference.md)
- 채널 참조: [`docs/channels-reference.md`](docs/channels-reference.md)
- 운영 런북: [`docs/operations-runbook.md`](docs/operations-runbook.md)
- 문제 해결: [`docs/troubleshooting.md`](docs/troubleshooting.md)
- 문서 인벤토리/분류: [`docs/docs-inventory.md`](docs/docs-inventory.md)
- PR/이슈 트리아지 스냅샷 (2026년 2월 18일 기준): [`docs/project-triage-snapshot-2026-02-18.md`](docs/project-triage-snapshot-2026-02-18.md)
주요 협업 참조:
- 문서 허브: [docs/README.md](docs/README.md) - 문서 허브: [docs/README.md](docs/README.md)
- 문서 템플릿: [docs/doc-template.md](docs/doc-template.md) - 통합 문서 목차: [docs/SUMMARY.md](docs/SUMMARY.md)
- 문서 변경 체크리스트: [docs/README.md#4-documentation-change-checklist](docs/README.md#4-documentation-change-checklist) - 명령어 참조: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
- 채널 구성 참조: [docs/channels-reference.md](docs/channels-reference.md) - 구성 참조: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
- Matrix 암호화 방 운영: [docs/matrix-e2ee-guide.md](docs/matrix-e2ee-guide.md) - 제공자 참조: [docs/reference/api/providers-reference.md](docs/reference/api/providers-reference.md)
- 채널 참조: [docs/reference/api/channels-reference.md](docs/reference/api/channels-reference.md)
- 운영 런북: [docs/ops/operations-runbook.md](docs/ops/operations-runbook.md)
- 문제 해결: [docs/ops/troubleshooting.md](docs/ops/troubleshooting.md)
### 협업 문서
- 기여 가이드: [CONTRIBUTING.md](CONTRIBUTING.md) - 기여 가이드: [CONTRIBUTING.md](CONTRIBUTING.md)
- PR 워크플로 정책: [docs/pr-workflow.md](docs/pr-workflow.md) - PR 워크플로 정책: [docs/contributing/pr-workflow.md](docs/contributing/pr-workflow.md)
- 리뷰어 플레이북 (트리아지 + 심층 리뷰): [docs/reviewer-playbook.md](docs/reviewer-playbook.md) - CI 워크플로 가이드: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- 소유권 및 CI 트리아지 맵: [docs/ci-map.md](docs/ci-map.md) - 리뷰어 플레이북: [docs/contributing/reviewer-playbook.md](docs/contributing/reviewer-playbook.md)
- 보안 공개 정책: [SECURITY.md](SECURITY.md) - 보안 공개 정책: [SECURITY.md](SECURITY.md)
- 문서 템플릿: [docs/contributing/doc-template.md](docs/contributing/doc-template.md)
배포 및 런타임 운영용: ### 배포 + 운영
- 네트워크 배포 가이드: [docs/network-deployment.md](docs/network-deployment.md) - 네트워크 배포 가이드: [docs/ops/network-deployment.md](docs/ops/network-deployment.md)
- 프록시 에이전트 플레이북: [docs/proxy-agent-playbook.md](docs/proxy-agent-playbook.md) - 프록시 에이전트 플레이북: [docs/ops/proxy-agent-playbook.md](docs/ops/proxy-agent-playbook.md)
- 하드웨어 가이드: [docs/hardware/README.md](docs/hardware/README.md)
## Smooth Crab 🦀
ZeroClaw는 빠르고 효율적인 AI 어시스턴트인 smooth crab 🦀을 위해 만들어졌습니다. Argenis De La Rosa와 커뮤니티가 만들었습니다.
- [zeroclawlabs.ai](https://zeroclawlabs.ai)
- [@zeroclawlabs](https://x.com/zeroclawlabs)
## ZeroClaw 지원하기 ## ZeroClaw 지원하기
ZeroClaw가 당신의 작업에 도움이 되었고 지속적인 개발을 지원하고 싶다면 여기에서 기부할 수 있습니다: ZeroClaw가 여러분의 작업에 도움이 되었고 지속적인 개발을 지원하고 싶다면 여기에서 기부할 수 있습니다:
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee" alt="커피 한 잔 사주기" /></a> <a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
### 🙏 특별 감사 ### 🙏 특별 감사
이 오픈소스 작업에 영감을 주고 지원하는 커뮤니티와 기관에 진심으로 감사드립니다: 이 오픈소스 작업에 영감을 주고 힘을 실어주는 커뮤니티와 기관에 진심으로 감사드립니다:
- **Harvard University** — 지적 호기심을 키우고 가능성의 한계를 넓혀. - **Harvard University** — 지적 호기심을 키우고 가능성의 한계를 넓혀 주셔서.
- **MIT** — 열린 지식, 오픈소스, 기술이 모두에게 접근 가능해야 한다는 신념을 옹호. - **MIT** — 열린 지식, 오픈소스, 그리고 기술이 모두에게 접근 가능해야 한다는 신념을 옹호해 주셔서.
- **Sundai Club** — 커뮤니티, 에너지, 그리고 의미 있는 것을 만들고자 하는 끊임없는 의지. - **Sundai Club** — 커뮤니티, 에너지, 그리고 의미 있는 것을 만들고자 하는 끊임없는 열정.
- **세계 그리고 그 너머** 🌍✨ — 오픈소스를 선한 힘으로 만드는 모든 기여자, 꿈꾸는 , 그리고 빌더에게. 이것은 여러분을 위한 것입니다. - **세계 그리고 그 너머** 🌍✨ — 오픈소스를 선한 힘으로 만드는 모든 기여자, 꿈꾸는 이, 그리고 빌더에게. 이것은 여러분을 위한 것입니다.
우리는 최고의 아이디어가 모든 곳에서 나오기 때문에 오픈소스로 구축합니다. 이것을 읽고 있다면 여러분도 그 일부입니다. 환영합니다. 🦀❤️ 우리는 최고의 아이디어가 모든 곳에서 나오기 때문에 오픈소스로 구축합니다. 이것을 읽고 있다면 여러분도 그 일부입니다. 환영합니다. 🦀❤️
## 기여하기
ZeroClaw가 처음이신가요? [`good first issue`](https://github.com/zeroclaw-labs/zeroclaw/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) 레이블이 붙은 이슈를 찾아보세요 — 시작하는 방법은 [기여 가이드](CONTRIBUTING.md#first-time-contributors)를 참조하세요. AI/vibe-coded PR도 환영합니다! 🤖
[CONTRIBUTING.md](CONTRIBUTING.md)와 [CLA.md](docs/contributing/cla.md)를 참조하세요. 트레이트를 구현하고 PR을 제출하세요:
- CI 워크플로 가이드: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- 새 `Provider``src/providers/`
- 새 `Channel``src/channels/`
- 새 `Observer``src/observability/`
- 새 `Tool``src/tools/`
- 새 `Memory``src/memory/`
- 새 `Tunnel``src/tunnel/`
- 새 `Peripheral``src/peripherals/`
- 새 `Skill``~/.zeroclaw/workspace/skills/<name>/`
<!-- BEGIN:RECENT_CONTRIBUTORS --> <!-- BEGIN:RECENT_CONTRIBUTORS -->
### 🌟 Recent Contributors (v0.3.1)
3 contributors shipped features, fixes, and improvements in this release cycle:
- **Argenis**
- **argenis de la rosa**
- **Claude Opus 4.6**
Thank you to everyone who opened issues, reviewed PRs, translated docs, and helped test. Every contribution matters. 🦀
<!-- END:RECENT_CONTRIBUTORS --> <!-- END:RECENT_CONTRIBUTORS -->
## ⚠️ 공식 저장소 및 사칭 경고 ## ⚠️ 공식 저장소 및 사칭 경고
**이것이 유일한 공식 ZeroClaw 저장소입니다:** **이것이 유일한 공식 ZeroClaw 저장소입니다:**
> <https://github.com/zeroclaw-labs/zeroclaw> > https://github.com/zeroclaw-labs/zeroclaw
"ZeroClaw"라고 주장하거나 ZeroClaw Labs와의 제휴를 암시하는 다른 저장소, 조직, 도메인 또는 패키지는 **승인되지 않았으며 이 프로젝트와 관련이 없습니다**. 알려진 승인되지 않은 포크는 [TRADEMARK.md](TRADEMARK.md)에 나열됩니다. "ZeroClaw"라고 주장하거나 ZeroClaw Labs와의 제휴를 암시하는 다른 저장소, 조직, 도메인 또는 패키지는 **승인되지 않았으며 이 프로젝트와 관련이 없습니다**. 알려진 비인가 포크는 [TRADEMARK.md](docs/maintainers/trademark.md)에 나열됩니다.
사칭 또는 상표 오용을 발견하면 [이슈를 열어](https://github.com/zeroclaw-labs/zeroclaw/issues) 신고해 주세요. 사칭이나 상표 오용을 발견하면 [이슈를 열어](https://github.com/zeroclaw-labs/zeroclaw/issues) 신고해 주세요.
--- ---
@ -453,16 +712,16 @@ Thank you to everyone who opened issues, reviewed PRs, translated docs, and help
ZeroClaw는 최대한의 개방성과 기여자 보호를 위해 듀얼 라이선스가 적용됩니다: ZeroClaw는 최대한의 개방성과 기여자 보호를 위해 듀얼 라이선스가 적용됩니다:
| 라이선스 | 사용 사례 | | 라이선스 | 사용 사례 |
| ---------------------------- | ------------------------------------------------------------ | |---|---|
| [MIT](LICENSE-MIT) | 오픈소스, 연구, 학술, 개인 사용 | | [MIT](LICENSE-MIT) | 오픈소스, 연구, 학술, 개인 사용 |
| [Apache 2.0](LICENSE-APACHE) | 특허 보호, 기관, 상업 배포 | | [Apache 2.0](LICENSE-APACHE) | 특허 보호, 기관, 상업 배포 |
두 라이선스 중 하나를 선택할 수 있습니다. **기여자는 자동으로 두 가지 모두에 대한 권한을 부여합니다** — 전체 기여자 계약은 [CLA.md](CLA.md)를 참조하세요. 두 라이선스 중 하나를 선택할 수 있습니다. **기여자는 자동으로 두 가지 모두에 대한 권한을 부여합니다** — 전체 기여자 계약은 [CLA.md](docs/contributing/cla.md)를 참조하세요.
### 상표 ### 상표
**ZeroClaw** 이름과 로고는 ZeroClaw Labs의 등록 상표입니다. 이 라이선스는 승인 또는 제휴를 암시하기 위해 사용할 수 있는 권한을 부여하지 않습니다. 허용 및 금지된 사용은 [TRADEMARK.md](TRADEMARK.md)를 참조하세요. **ZeroClaw** 이름과 로고는 ZeroClaw Labs의 상표입니다. 이 라이선스는 승인이나 제휴를 암시하기 위해 사용할 권한을 부여하지 않습니다. 허용 및 금지 사용은 [TRADEMARK.md](docs/maintainers/trademark.md)를 참조하세요.
### 기여자 보호 ### 기여자 보호
@ -471,23 +730,18 @@ ZeroClaw는 최대한의 개방성과 기여자 보호를 위해 듀얼 라이
- 기여는 커밋 기록과 [NOTICE](NOTICE)에 **영구적으로 귀속**됩니다 - 기여는 커밋 기록과 [NOTICE](NOTICE)에 **영구적으로 귀속**됩니다
- 기여함으로써 상표권이 이전되지 않습니다 - 기여함으로써 상표권이 이전되지 않습니다
## 기여하기
[CONTRIBUTING.md](CONTRIBUTING.md)와 [CLA.md](CLA.md)를 참조하세요. 트레이트를 구현하고 PR을 제출하세요:
- CI 워크플로 가이드: [docs/ci-map.md](docs/ci-map.md)
- 새 `Provider``src/providers/`
- 새 `Channel``src/channels/`
- 새 `Observer``src/observability/`
- 새 `Tool``src/tools/`
- 새 `Memory``src/memory/`
- 새 `Tunnel``src/tunnel/`
- 새 `Skill``~/.zeroclaw/workspace/skills/<n>/`
--- ---
**ZeroClaw** — 오버헤드 없음. 타협 없음. 어디서나 배포. 무엇이든 교체. 🦀 **ZeroClaw** — 오버헤드 없음. 타협 없음. 어디서나 배포. 무엇이든 교체. 🦀
## 기여자
<a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors">
<img src="https://contrib.rocks/image?repo=zeroclaw-labs/zeroclaw" alt="ZeroClaw contributors" />
</a>
이 목록은 GitHub 기여자 그래프에서 생성되며 자동으로 업데이트됩니다.
## 스타 히스토리 ## 스타 히스토리
<p align="center"> <p align="center">
@ -495,7 +749,7 @@ ZeroClaw는 최대한의 개방성과 기여자 보호를 위해 듀얼 라이
<picture> <picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&theme=dark&legend=top-left" /> <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&theme=dark&legend=top-left" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" /> <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
<img alt="스타 히스토리 그래프" src="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" /> <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
</picture> </picture>
</a> </a>
</p> </p>

681
README.md
View File

@ -1,8 +1,8 @@
<p align="center"> <p align="center">
<img src="docs/assets/zeroclaw.png" alt="ZeroClaw" width="200" /> <img src="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/docs/assets/zeroclaw-banner.png" alt="ZeroClaw" width="600" />
</p> </p>
<h1 align="center">ZeroClaw 🦀</h1> <h1 align="center">🦀 ZeroClaw — Personal AI Assistant</h1>
<p align="center"> <p align="center">
<strong>Zero overhead. Zero compromise. 100% Rust. 100% Agnostic.</strong><br> <strong>Zero overhead. Zero compromise. 100% Rust. 100% Agnostic.</strong><br>
@ -14,9 +14,14 @@
<a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors"><img src="https://img.shields.io/github/contributors/zeroclaw-labs/zeroclaw?color=green" alt="Contributors" /></a> <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors"><img src="https://img.shields.io/github/contributors/zeroclaw-labs/zeroclaw?color=green" alt="Contributors" /></a>
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a> <a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
<a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a> <a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a>
<a href="https://www.facebook.com/groups/zeroclaw"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a> <a href="https://www.facebook.com/groups/zeroclawlabs"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a>
<a href="https://discord.com/invite/wDshRVqRjx"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://www.instagram.com/therealzeroclaw"><img src="https://img.shields.io/badge/Instagram-%40therealzeroclaw-E4405F?style=flat&logo=instagram&logoColor=white" alt="Instagram: @therealzeroclaw" /></a>
<a href="https://www.tiktok.com/@zeroclawlabs"><img src="https://img.shields.io/badge/TikTok-%40zeroclawlabs-000000?style=flat&logo=tiktok&logoColor=white" alt="TikTok: @zeroclawlabs" /></a>
<a href="https://www.rednote.com/user/profile/69b735e6000000002603927e"><img src="https://img.shields.io/badge/RedNote-Official-FF2442?style=flat" alt="RedNote" /></a>
<a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a> <a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a>
</p> </p>
<p align="center"> <p align="center">
Built by students and members of the Harvard, MIT, and Sundai.Club communities. Built by students and members of the Harvard, MIT, and Sundai.Club communities.
</p> </p>
@ -56,33 +61,133 @@ Built by students and members of the Harvard, MIT, and Sundai.Club communities.
<a href="README.nb.md">🇳🇴 Norsk</a> <a href="README.nb.md">🇳🇴 Norsk</a>
</p> </p>
<p align="center"> ZeroClaw is a personal AI assistant you run on your own devices. It answers you on the channels you already use (WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, and more). It has a web dashboard for real-time control and can connect to hardware peripherals (ESP32, STM32, Arduino, Raspberry Pi). The Gateway is just the control plane — the product is the assistant.
<a href="#quick-start">Getting Started</a> |
<a href="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh">One-Click Setup</a> | If you want a personal, single-user assistant that feels local, fast, and always-on, this is it.
<a href="docs/README.md">Docs Hub</a> |
<a href="docs/SUMMARY.md">Docs TOC</a>
</p>
<p align="center"> <p align="center">
<strong>Quick Routes:</strong> <a href="https://zeroclawlabs.ai">Website</a> ·
<a href="docs/reference/README.md">Reference</a> · <a href="docs/README.md">Docs</a> ·
<a href="docs/ops/README.md">Operations</a> · <a href="docs/architecture.md">Architecture</a> ·
<a href="#quick-start">Getting Started</a> ·
<a href="#migrating-from-openclaw">Migrating from OpenClaw</a> ·
<a href="docs/ops/troubleshooting.md">Troubleshoot</a> · <a href="docs/ops/troubleshooting.md">Troubleshoot</a> ·
<a href="docs/security/README.md">Security</a> · <a href="https://discord.com/invite/wDshRVqRjx">Discord</a>
<a href="docs/hardware/README.md">Hardware</a> ·
<a href="docs/contributing/README.md">Contribute</a>
</p> </p>
<p align="center"> > **Preferred setup:** run `zeroclaw onboard` in your terminal. ZeroClaw Onboard guides you step by step through setting up the gateway, workspace, channels, and provider. It is the recommended setup path and works on macOS, Linux, and Windows (via WSL2). New install? Start here: [Getting started](#quick-start)
<strong>Fast, small, and fully autonomous AI assistant infrastructure</strong><br />
Deploy anywhere. Swap anything.
</p>
<p align="center"> ### Subscription Auth (OAuth)
ZeroClaw is the <strong>runtime operating system</strong> for agentic workflows — infrastructure that abstracts models, tools, memory, and execution so agents can be built once and run anywhere.
</p>
<p align="center"><code>Trait-driven architecture · secure-by-default runtime · provider/channel/tool swappable · pluggable everything</code></p> - **OpenAI Codex** (ChatGPT subscription)
- **Gemini** (Google OAuth)
- **Anthropic** (API key or auth token)
Model note: while many providers/models are supported, for the best experience use the strongest latest-generation model available to you. See [Onboarding](#quick-start).
Models config + CLI: [Providers reference](docs/reference/api/providers-reference.md)
Auth profile rotation (OAuth vs API keys) + failover: [Model failover](docs/reference/api/providers-reference.md)
## Install (recommended)
Runtime: Rust stable toolchain. Single binary, no runtime dependencies.
### Homebrew (macOS/Linuxbrew)
```bash
brew install zeroclaw
```
### One-click bootstrap
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./install.sh
```
`zeroclaw onboard` runs automatically after install to configure your workspace and provider.
## Quick start (TL;DR)
Full beginner guide (auth, pairing, channels): [Getting started](docs/setup-guides/one-click-bootstrap.md)
```bash
# Install + onboard
./install.sh --api-key "sk-..." --provider openrouter
# Start the gateway (webhook server + web dashboard)
zeroclaw gateway # default: 127.0.0.1:42617
zeroclaw gateway --port 0 # random port (security hardened)
# Talk to the assistant
zeroclaw agent -m "Hello, ZeroClaw!"
# Interactive mode
zeroclaw agent
# Start full autonomous runtime (gateway + channels + cron + hands)
zeroclaw daemon
# Check status
zeroclaw status
# Run diagnostics
zeroclaw doctor
```
Upgrading? Run `zeroclaw doctor` after updating.
### From source (development)
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
cargo build --release --locked
cargo install --path . --force --locked
zeroclaw onboard
```
> **Dev fallback (no global install):** prefix commands with `cargo run --release --` (example: `cargo run --release -- status`).
## Migrating from OpenClaw
ZeroClaw can import your OpenClaw workspace, memory, and configuration:
```bash
# Preview what will be migrated (safe, read-only)
zeroclaw migrate openclaw --dry-run
# Run the migration
zeroclaw migrate openclaw
```
This migrates your memory entries, workspace files, and configuration from `~/.openclaw/` to `~/.zeroclaw/`. Config is converted from JSON to TOML automatically.
## Security defaults (DM access)
ZeroClaw connects to real messaging surfaces. Treat inbound DMs as untrusted input.
Full security guide: [SECURITY.md](SECURITY.md)
Default behavior on all channels:
- **DM pairing** (default): unknown senders receive a short pairing code and the bot does not process their message.
- Approve with: `zeroclaw pairing approve <channel> <code>` (then the sender is added to a local allowlist).
- Public inbound DMs require an explicit opt-in in `config.toml`.
- Run `zeroclaw doctor` to surface risky or misconfigured DM policies.
**Autonomy levels:**
| Level | Behavior |
|-------|----------|
| `ReadOnly` | Agent can observe but not act |
| `Supervised` (default) | Agent acts with approval for medium/high risk operations |
| `Full` | Agent acts autonomously within policy bounds |
**Sandboxing layers:** workspace isolation, path traversal blocking, command allowlisting, forbidden paths (`/etc`, `/root`, `~/.ssh`), rate limiting (max actions/hour, cost/day caps).
<!-- BEGIN:WHATS_NEW --> <!-- BEGIN:WHATS_NEW -->
<!-- END:WHATS_NEW --> <!-- END:WHATS_NEW -->
@ -94,15 +199,25 @@ Use this board for important notices (breaking changes, security advisories, mai
| Date (UTC) | Level | Notice | Action | | Date (UTC) | Level | Notice | Action |
| ---------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ---------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2026-02-19 | _Critical_ | We are **not affiliated** with `openagen/zeroclaw`, `zeroclaw.org` or `zeroclaw.net`. The `zeroclaw.org` and `zeroclaw.net` domains currently points to the `openagen/zeroclaw` fork, and that domain/repository are impersonating our official website/project. | Do not trust information, binaries, fundraising, or announcements from those sources. Use only [this repository](https://github.com/zeroclaw-labs/zeroclaw) and our verified social accounts. | | 2026-02-19 | _Critical_ | We are **not affiliated** with `openagen/zeroclaw`, `zeroclaw.org` or `zeroclaw.net`. The `zeroclaw.org` and `zeroclaw.net` domains currently points to the `openagen/zeroclaw` fork, and that domain/repository are impersonating our official website/project. | Do not trust information, binaries, fundraising, or announcements from those sources. Use only [this repository](https://github.com/zeroclaw-labs/zeroclaw) and our verified social accounts. |
| 2026-02-21 | _Important_ | Our official website is now live: [zeroclawlabs.ai](https://zeroclawlabs.ai). Thanks for your patience while we prepared the launch. We are still seeing impersonation attempts, so do **not** join any investment or fundraising activity claiming the ZeroClaw name unless it is published through our official channels. | Use [this repository](https://github.com/zeroclaw-labs/zeroclaw) as the single source of truth. Follow [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21), [Facebook (Group)](https://www.facebook.com/groups/zeroclaw), and [Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/) for official updates. | | 2026-02-21 | _Important_ | Our official website is now live: [zeroclawlabs.ai](https://zeroclawlabs.ai). Thanks for your patience while we prepared the launch. We are still seeing impersonation attempts, so do **not** join any investment or fundraising activity claiming the ZeroClaw name unless it is published through our official channels. | Use [this repository](https://github.com/zeroclaw-labs/zeroclaw) as the single source of truth. Follow [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21), [Facebook (Group)](https://www.facebook.com/groups/zeroclawlabs), and [Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/) for official updates. |
| 2026-02-19 | _Important_ | Anthropic updated the Authentication and Credential Use terms on 2026-02-19. Claude Code OAuth tokens (Free, Pro, Max) are intended exclusively for Claude Code and Claude.ai; using OAuth tokens from Claude Free/Pro/Max in any other product, tool, or service (including Agent SDK) is not permitted and may violate the Consumer Terms of Service. | Please temporarily avoid Claude Code OAuth integrations to prevent potential loss. Original clause: [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use). | | 2026-02-19 | _Important_ | Anthropic updated the Authentication and Credential Use terms on 2026-02-19. Claude Code OAuth tokens (Free, Pro, Max) are intended exclusively for Claude Code and Claude.ai; using OAuth tokens from Claude Free/Pro/Max in any other product, tool, or service (including Agent SDK) is not permitted and may violate the Consumer Terms of Service. | Please temporarily avoid Claude Code OAuth integrations to prevent potential loss. Original clause: [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use). |
### ✨ Features ## Highlights
- 🏎️ **Lean Runtime by Default:** Common CLI and status workflows run in a few-megabyte memory envelope on release builds. - **Lean Runtime by Default** — common CLI and status workflows run in a few-megabyte memory envelope on release builds.
- 💰 **Cost-Efficient Deployment:** Designed for low-cost boards and small cloud instances without heavyweight runtime dependencies. - **Cost-Efficient Deployment** — designed for $10 boards and small cloud instances, no heavyweight runtime dependencies.
- ⚡ **Fast Cold Starts:** Single-binary Rust runtime keeps command and daemon startup near-instant for daily operations. - **Fast Cold Starts** — single-binary Rust runtime keeps command and daemon startup near-instant.
- 🌍 **Portable Architecture:** One binary-first workflow across ARM, x86, and RISC-V with swappable providers/channels/tools. - **Portable Architecture** — one binary across ARM, x86, and RISC-V with swappable providers/channels/tools.
- **Local-first Gateway** — single control plane for sessions, channels, tools, cron, SOPs, and events.
- **Multi-channel inbox** — WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WebSocket, and more.
- **Multi-agent orchestration (Hands)** — autonomous agent swarms that run on schedule and grow smarter over time.
- **Standard Operating Procedures (SOPs)** — event-driven workflow automation with MQTT, webhook, cron, and peripheral triggers.
- **Web Dashboard** — React 19 + Vite web UI with real-time chat, memory browser, config editor, cron manager, and tool inspector.
- **Hardware peripherals** — ESP32, STM32 Nucleo, Arduino, Raspberry Pi GPIO via the `Peripheral` trait.
- **First-class tools** — shell, file I/O, browser, git, web fetch/search, MCP, Jira, Notion, Google Workspace, and 70+ more.
- **Lifecycle hooks** — intercept and modify LLM calls, tool executions, and messages at every stage.
- **Skills platform** — bundled, community, and workspace skills with security auditing.
- **Tunnel support** — Cloudflare, Tailscale, ngrok, OpenVPN, and custom tunnels for remote access.
### Why teams pick ZeroClaw ### Why teams pick ZeroClaw
@ -131,8 +246,6 @@ Local machine quick benchmark (macOS arm64, Feb 2026) normalized for 0.8GHz edge
### Reproducible local measurement ### Reproducible local measurement
Benchmark claims can drift as code and toolchains evolve, so always measure your current build locally:
```bash ```bash
cargo build --release cargo build --release
ls -lh target/release/zeroclaw ls -lh target/release/zeroclaw
@ -141,11 +254,255 @@ ls -lh target/release/zeroclaw
/usr/bin/time -l target/release/zeroclaw status /usr/bin/time -l target/release/zeroclaw status
``` ```
Example sample (macOS arm64, measured on February 18, 2026): ## Everything we built so far
- Release binary size: `8.8MB` ### Core platform
- `zeroclaw --help`: about `0.02s` real time, ~`3.9MB` peak memory footprint
- `zeroclaw status`: about `0.01s` real time, ~`4.1MB` peak memory footprint - Gateway HTTP/WS/SSE control plane with sessions, presence, config, cron, webhooks, web dashboard, and pairing.
- CLI surface: `gateway`, `agent`, `onboard`, `doctor`, `status`, `service`, `migrate`, `auth`, `cron`, `channel`, `skills`.
- Agent orchestration loop with tool dispatch, prompt construction, message classification, and memory loading.
- Session model with security policy enforcement, autonomy levels, and approval gating.
- Resilient provider wrapper with failover, retry, and model routing across 20+ LLM backends.
### Channels
Channels: WhatsApp (native), Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, DingTalk, Lark, Mattermost, Nextcloud Talk, Nostr, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WATI, Mochat, Linq, Notion, WebSocket, ClawdTalk.
Feature-gated: Matrix (`channel-matrix`), Lark (`channel-lark`), Nostr (`channel-nostr`).
### Web dashboard
React 19 + Vite 6 + Tailwind CSS 4 web dashboard served directly from the Gateway:
- **Dashboard** — system overview, health status, uptime, cost tracking
- **Agent Chat** — interactive chat with the agent
- **Memory** — browse and manage memory entries
- **Config** — view and edit configuration
- **Cron** — manage scheduled tasks
- **Tools** — browse available tools
- **Logs** — view agent activity logs
- **Cost** — token usage and cost tracking
- **Doctor** — system health diagnostics
- **Integrations** — integration status and setup
- **Pairing** — device pairing management
### Firmware targets
| Target | Platform | Purpose |
|--------|----------|---------|
| ESP32 | Espressif ESP32 | Wireless peripheral agent |
| ESP32-UI | ESP32 + Display | Agent with visual interface |
| STM32 Nucleo | STM32 (ARM Cortex-M) | Industrial peripheral |
| Arduino | Arduino | Basic sensor/actuator bridge |
| Uno Q Bridge | Arduino Uno | Serial bridge to agent |
### Tools + automation
- **Core:** shell, file read/write/edit, git operations, glob search, content search
- **Web:** browser control, web fetch, web search, screenshot, image info, PDF read
- **Integrations:** Jira, Notion, Google Workspace, Microsoft 365, LinkedIn, Composio, Pushover, Weather (wttr.in)
- **MCP:** Model Context Protocol tool wrapper + deferred tool sets
- **Scheduling:** cron add/remove/update/run, schedule tool
- **Memory:** recall, store, forget, knowledge, project intel
- **Advanced:** delegate (agent-to-agent), swarm, model switch/routing, security ops, cloud ops
- **Hardware:** board info, memory map, memory read (feature-gated)
### Runtime + safety
- **Autonomy levels:** ReadOnly, Supervised (default), Full.
- **Sandboxing:** workspace isolation, path traversal blocking, command allowlists, forbidden paths, Landlock (Linux), Bubblewrap.
- **Rate limiting:** max actions per hour, max cost per day (configurable).
- **Approval gating:** interactive approval for medium/high risk operations.
- **E-stop:** emergency shutdown capability.
- **129+ security tests** in automated CI.
### Ops + packaging
- Web dashboard served directly from the Gateway.
- Tunnel support: Cloudflare, Tailscale, ngrok, OpenVPN, custom command.
- Docker runtime adapter for containerized execution.
- CI/CD: beta (auto on push) → stable (manual dispatch) → Docker, crates.io, Scoop, AUR, Homebrew, tweet.
- Pre-built binaries for Linux (x86_64, aarch64, armv7), macOS (x86_64, aarch64), Windows (x86_64).
## Configuration
Minimal `~/.zeroclaw/config.toml`:
```toml
default_provider = "anthropic"
api_key = "sk-ant-..."
```
Full configuration reference: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md).
### Channel configuration
**Telegram:**
```toml
[channels.telegram]
bot_token = "123456:ABC-DEF..."
```
**Discord:**
```toml
[channels.discord]
token = "your-bot-token"
```
**Slack:**
```toml
[channels.slack]
bot_token = "xoxb-..."
app_token = "xapp-..."
```
**WhatsApp:**
```toml
[channels.whatsapp]
enabled = true
```
**Matrix:**
```toml
[channels.matrix]
homeserver_url = "https://matrix.org"
username = "@bot:matrix.org"
password = "..."
```
**Signal:**
```toml
[channels.signal]
phone_number = "+1234567890"
```
### Tunnel configuration
```toml
[tunnel]
kind = "cloudflare" # or "tailscale", "ngrok", "openvpn", "custom", "none"
```
Details: [Channel reference](docs/reference/api/channels-reference.md) · [Config reference](docs/reference/api/config-reference.md)
### Runtime support (current)
- **`native`** (default) — direct process execution, fastest path, ideal for trusted environments.
- **`docker`** — full container isolation, enforced security policies, requires Docker.
Set `runtime.kind = "docker"` for strict sandboxing or network isolation.
## Subscription Auth (OpenAI Codex / Claude Code / Gemini)
ZeroClaw supports subscription-native auth profiles (multi-account, encrypted at rest).
- Store file: `~/.zeroclaw/auth-profiles.json`
- Encryption key: `~/.zeroclaw/.secret_key`
- Profile id format: `<provider>:<profile_name>` (example: `openai-codex:work`)
```bash
# OpenAI Codex OAuth (ChatGPT subscription)
zeroclaw auth login --provider openai-codex --device-code
# Gemini OAuth
zeroclaw auth login --provider gemini --profile default
# Anthropic setup-token
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# Check / refresh / switch profile
zeroclaw auth status
zeroclaw auth refresh --provider openai-codex --profile default
zeroclaw auth use --provider openai-codex --profile work
# Run the agent with subscription auth
zeroclaw agent --provider openai-codex -m "hello"
zeroclaw agent --provider anthropic -m "hello"
```
## Agent workspace + skills
Workspace root: `~/.zeroclaw/workspace/` (configurable via config).
Injected prompt files:
- `IDENTITY.md` — agent personality and role
- `USER.md` — user context and preferences
- `MEMORY.md` — long-term facts and lessons
- `AGENTS.md` — session conventions and initialization rules
- `SOUL.md` — core identity and operating principles
Skills: `~/.zeroclaw/workspace/skills/<skill>/SKILL.md` or `SKILL.toml`.
```bash
# List installed skills
zeroclaw skills list
# Install from git
zeroclaw skills install https://github.com/user/my-skill.git
# Security audit before install
zeroclaw skills audit https://github.com/user/my-skill.git
# Remove a skill
zeroclaw skills remove my-skill
```
## CLI commands
```bash
# Workspace management
zeroclaw onboard # Guided setup wizard
zeroclaw status # Show daemon/agent status
zeroclaw doctor # Run system diagnostics
# Gateway + daemon
zeroclaw gateway # Start gateway server (127.0.0.1:42617)
zeroclaw daemon # Start full autonomous runtime
# Agent
zeroclaw agent # Interactive chat mode
zeroclaw agent -m "message" # Single message mode
# Service management
zeroclaw service install # Install as OS service (launchd/systemd)
zeroclaw service start|stop|restart|status
# Channels
zeroclaw channel list # List configured channels
zeroclaw channel doctor # Check channel health
zeroclaw channel bind-telegram 123456789
# Cron + scheduling
zeroclaw cron list # List scheduled jobs
zeroclaw cron add "*/5 * * * *" --prompt "Check system health"
zeroclaw cron remove <id>
# Memory
zeroclaw memory list # List memory entries
zeroclaw memory get <key> # Retrieve a memory
zeroclaw memory stats # Memory statistics
# Auth profiles
zeroclaw auth login --provider <name>
zeroclaw auth status
zeroclaw auth use --provider <name> --profile <profile>
# Hardware peripherals
zeroclaw hardware discover # Scan for connected devices
zeroclaw peripheral list # List connected peripherals
zeroclaw peripheral flash # Flash firmware to device
# Migration
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw
# Shell completions
source <(zeroclaw completions bash)
zeroclaw completions zsh > ~/.zfunc/_zeroclaw
```
Full commands reference: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
## Prerequisites ## Prerequisites
@ -243,52 +600,6 @@ To require binary-only install with no source fallback:
</details> </details>
## Quick Start
### Homebrew (macOS/Linuxbrew)
```bash
brew install zeroclaw
```
### One-click bootstrap
```bash
# Recommended: clone then run local bootstrap script
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./install.sh
# Optional: bootstrap dependencies + Rust on fresh machines
./install.sh --install-system-deps --install-rust
# Optional: pre-built binary first (recommended on low-RAM/low-disk hosts)
./install.sh --prefer-prebuilt
# Optional: binary-only install (no source build fallback)
./install.sh --prebuilt-only
# Optional: run onboarding in the same flow
./install.sh --api-key "sk-..." --provider openrouter [--model "openrouter/auto"]
# Optional: run bootstrap + onboarding fully in Docker-compatible mode
./install.sh --docker
# Optional: force Podman as container CLI
ZEROCLAW_CONTAINER_CLI=podman ./install.sh --docker
# Optional: in --docker mode, skip local image build and use local tag or pull fallback image
./install.sh --docker --skip-build
```
Remote one-liner (review first in security-sensitive environments):
```bash
curl -fsSL https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash
```
Details: [`docs/setup-guides/one-click-bootstrap.md`](docs/setup-guides/one-click-bootstrap.md) (toolchain mode may request `sudo` for system packages).
### Pre-built binaries ### Pre-built binaries
Release assets are published for: Release assets are published for:
@ -300,161 +611,50 @@ Release assets are published for:
Download the latest assets from: Download the latest assets from:
<https://github.com/zeroclaw-labs/zeroclaw/releases/latest> <https://github.com/zeroclaw-labs/zeroclaw/releases/latest>
Example (ARM64 Linux): ## Docs
```bash Use these when you're past the onboarding flow and want the deeper reference.
curl -fsSLO https://github.com/zeroclaw-labs/zeroclaw/releases/latest/download/zeroclaw-aarch64-unknown-linux-gnu.tar.gz
tar xzf zeroclaw-aarch64-unknown-linux-gnu.tar.gz
install -m 0755 zeroclaw "$HOME/.cargo/bin/zeroclaw"
```
```bash - Start with the [docs index](docs/README.md) for navigation and "what's where."
git clone https://github.com/zeroclaw-labs/zeroclaw.git - Read the [architecture overview](docs/architecture.md) for the full system model.
cd zeroclaw - Use the [configuration reference](docs/reference/api/config-reference.md) when you need every key and example.
cargo build --release --locked - Run the Gateway by the book with the [operational runbook](docs/ops/operations-runbook.md).
cargo install --path . --force --locked - Follow [ZeroClaw Onboard](#quick-start) for a guided setup.
- Debug common failures with the [troubleshooting guide](docs/ops/troubleshooting.md).
- Review [security guidance](docs/security/README.md) before exposing anything.
# Ensure ~/.cargo/bin is in your PATH ### Reference docs
export PATH="$HOME/.cargo/bin:$PATH"
# Quick setup (no prompts, optional model specification)
zeroclaw onboard --api-key sk-... --provider openrouter [--model "openrouter/auto"]
# Or guided wizard
zeroclaw onboard
# If config.toml already exists and you intentionally want to overwrite it
zeroclaw onboard --force
# Or quickly repair channels/allowlists only
zeroclaw onboard --channels-only
# Chat
zeroclaw agent -m "Hello, ZeroClaw!"
# Interactive mode
zeroclaw agent
# Start the gateway (webhook server)
zeroclaw gateway # default: 127.0.0.1:42617
zeroclaw gateway --port 0 # random port (security hardened)
# Start full autonomous runtime
zeroclaw daemon
# Check status
zeroclaw status
zeroclaw auth status
# Generate shell completions (stdout only, safe to source directly)
source <(zeroclaw completions bash)
zeroclaw completions zsh > ~/.zfunc/_zeroclaw
# Run system diagnostics
zeroclaw doctor
# Check channel health
zeroclaw channel doctor
# Bind a Telegram identity into allowlist
zeroclaw channel bind-telegram 123456789
# Get integration setup details
zeroclaw integrations info Telegram
# Note: Channels (Telegram, Discord, Slack) require daemon to be running
# zeroclaw daemon
# Manage background service
zeroclaw service install
zeroclaw service status
zeroclaw service restart
# On Alpine (OpenRC): sudo zeroclaw service install
# Migrate memory from OpenClaw (safe preview first)
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw
```
> **Dev fallback (no global install):** prefix commands with `cargo run --release --` (example: `cargo run --release -- status`).
## Subscription Auth (OpenAI Codex / Claude Code)
ZeroClaw now supports subscription-native auth profiles (multi-account, encrypted at rest).
- Store file: `~/.zeroclaw/auth-profiles.json`
- Encryption key: `~/.zeroclaw/.secret_key`
- Profile id format: `<provider>:<profile_name>` (example: `openai-codex:work`)
OpenAI Codex OAuth (ChatGPT subscription):
```bash
# Recommended on servers/headless
zeroclaw auth login --provider openai-codex --device-code
# Browser/callback flow with paste fallback
zeroclaw auth login --provider openai-codex --profile default
zeroclaw auth paste-redirect --provider openai-codex --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
```
Claude Code / Anthropic setup-token:
```bash
# Paste subscription/setup token (Authorization header mode)
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# Alias command
zeroclaw auth setup-token --provider anthropic --profile default
```
Run the agent with subscription auth:
```bash
zeroclaw agent --provider openai-codex -m "hello"
zeroclaw agent --provider openai-codex --auth-profile openai-codex:work -m "hello"
# Anthropic supports both API key and auth token env vars:
# ANTHROPIC_AUTH_TOKEN, ANTHROPIC_OAUTH_TOKEN, ANTHROPIC_API_KEY
zeroclaw agent --provider anthropic -m "hello"
```
## Collaboration & Docs
Start from the docs hub for a task-oriented map:
- Documentation hub: [`docs/README.md`](docs/README.md)
- Unified docs TOC: [`docs/SUMMARY.md`](docs/SUMMARY.md)
- Commands reference: [`docs/reference/cli/commands-reference.md`](docs/reference/cli/commands-reference.md)
- Config reference: [`docs/reference/api/config-reference.md`](docs/reference/api/config-reference.md)
- Providers reference: [`docs/reference/api/providers-reference.md`](docs/reference/api/providers-reference.md)
- Channels reference: [`docs/reference/api/channels-reference.md`](docs/reference/api/channels-reference.md)
- Operations runbook: [`docs/ops/operations-runbook.md`](docs/ops/operations-runbook.md)
- Troubleshooting: [`docs/ops/troubleshooting.md`](docs/ops/troubleshooting.md)
- Docs inventory/classification: [`docs/maintainers/docs-inventory.md`](docs/maintainers/docs-inventory.md)
- PR/Issue triage snapshot (as of February 18, 2026): [`docs/maintainers/project-triage-snapshot-2026-02-18.md`](docs/maintainers/project-triage-snapshot-2026-02-18.md)
Core collaboration references:
- Documentation hub: [docs/README.md](docs/README.md) - Documentation hub: [docs/README.md](docs/README.md)
- Documentation template: [docs/contributing/doc-template.md](docs/contributing/doc-template.md) - Unified docs TOC: [docs/SUMMARY.md](docs/SUMMARY.md)
- Documentation change checklist: [docs/README.md#4-documentation-change-checklist](docs/README.md#4-documentation-change-checklist) - Commands reference: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
- Channel configuration reference: [docs/reference/api/channels-reference.md](docs/reference/api/channels-reference.md) - Config reference: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
- Matrix encrypted-room operations: [docs/security/matrix-e2ee-guide.md](docs/security/matrix-e2ee-guide.md) - Providers reference: [docs/reference/api/providers-reference.md](docs/reference/api/providers-reference.md)
- Channels reference: [docs/reference/api/channels-reference.md](docs/reference/api/channels-reference.md)
- Operations runbook: [docs/ops/operations-runbook.md](docs/ops/operations-runbook.md)
- Troubleshooting: [docs/ops/troubleshooting.md](docs/ops/troubleshooting.md)
### Collaboration docs
- Contribution guide: [CONTRIBUTING.md](CONTRIBUTING.md) - Contribution guide: [CONTRIBUTING.md](CONTRIBUTING.md)
- PR workflow policy: [docs/contributing/pr-workflow.md](docs/contributing/pr-workflow.md) - PR workflow policy: [docs/contributing/pr-workflow.md](docs/contributing/pr-workflow.md)
- Reviewer playbook (triage + deep review): [docs/contributing/reviewer-playbook.md](docs/contributing/reviewer-playbook.md) - CI workflow guide: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Reviewer playbook: [docs/contributing/reviewer-playbook.md](docs/contributing/reviewer-playbook.md)
- Security disclosure policy: [SECURITY.md](SECURITY.md) - Security disclosure policy: [SECURITY.md](SECURITY.md)
- Documentation template: [docs/contributing/doc-template.md](docs/contributing/doc-template.md)
For deployment and runtime operations: ### Deployment + operations
- Network deployment guide: [docs/ops/network-deployment.md](docs/ops/network-deployment.md) - Network deployment guide: [docs/ops/network-deployment.md](docs/ops/network-deployment.md)
- Proxy agent playbook: [docs/ops/proxy-agent-playbook.md](docs/ops/proxy-agent-playbook.md) - Proxy agent playbook: [docs/ops/proxy-agent-playbook.md](docs/ops/proxy-agent-playbook.md)
- Hardware guides: [docs/hardware/README.md](docs/hardware/README.md)
## Smooth Crab 🦀
ZeroClaw was built for the smooth crab 🦀, a fast and efficient AI assistant. Built by Argenis De La Rosa and the community.
- [zeroclawlabs.ai](https://zeroclawlabs.ai)
- [@zeroclawlabs](https://x.com/zeroclawlabs)
## Support ZeroClaw ## Support ZeroClaw
@ -473,6 +673,22 @@ A heartfelt thank you to the communities and institutions that inspire and fuel
We're building in the open because the best ideas come from everywhere. If you're reading this, you're part of it. Welcome. 🦀❤️ We're building in the open because the best ideas come from everywhere. If you're reading this, you're part of it. Welcome. 🦀❤️
## Contributing
New to ZeroClaw? Look for issues labeled [`good first issue`](https://github.com/zeroclaw-labs/zeroclaw/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) — see our [Contributing Guide](CONTRIBUTING.md#first-time-contributors) for how to get started. AI/vibe-coded PRs welcome! 🤖
See [CONTRIBUTING.md](CONTRIBUTING.md) and [CLA.md](docs/contributing/cla.md). Implement a trait, submit a PR:
- CI workflow guide: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- New `Provider``src/providers/`
- New `Channel``src/channels/`
- New `Observer``src/observability/`
- New `Tool``src/tools/`
- New `Memory``src/memory/`
- New `Tunnel``src/tunnel/`
- New `Peripheral``src/peripherals/`
- New `Skill``~/.zeroclaw/workspace/skills/<name>/`
<!-- BEGIN:RECENT_CONTRIBUTORS --> <!-- BEGIN:RECENT_CONTRIBUTORS -->
<!-- END:RECENT_CONTRIBUTORS --> <!-- END:RECENT_CONTRIBUTORS -->
@ -510,21 +726,6 @@ The **ZeroClaw** name and logo are trademarks of ZeroClaw Labs. This license doe
- Your contributions are **permanently attributed** in commit history and [NOTICE](NOTICE) - Your contributions are **permanently attributed** in commit history and [NOTICE](NOTICE)
- No trademark rights are transferred by contributing - No trademark rights are transferred by contributing
## Contributing
New to ZeroClaw? Look for issues labeled [`good first issue`](https://github.com/zeroclaw-labs/zeroclaw/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) — see our [Contributing Guide](CONTRIBUTING.md#first-time-contributors) for how to get started.
See [CONTRIBUTING.md](CONTRIBUTING.md) and [CLA.md](docs/contributing/cla.md). Implement a trait, submit a PR:
- CI workflow guide: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- New `Provider``src/providers/`
- New `Channel``src/channels/`
- New `Observer``src/observability/`
- New `Tool``src/tools/`
- New `Memory``src/memory/`
- New `Tunnel``src/tunnel/`
- New `Skill``~/.zeroclaw/workspace/skills/<name>/`
--- ---
**ZeroClaw** — Zero overhead. Zero compromise. Deploy anywhere. Swap anything. 🦀 **ZeroClaw** — Zero overhead. Zero compromise. Deploy anywhere. Swap anything. 🦀
@ -535,6 +736,8 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) and [CLA.md](docs/contributing/cla.md). I
<img src="https://contrib.rocks/image?repo=zeroclaw-labs/zeroclaw" alt="ZeroClaw contributors" /> <img src="https://contrib.rocks/image?repo=zeroclaw-labs/zeroclaw" alt="ZeroClaw contributors" />
</a> </a>
This list is generated from the GitHub contributors graph and updates automatically.
## Star History ## Star History
<p align="center"> <p align="center">

View File

@ -1,27 +1,33 @@
<p align="center"> <p align="center">
<img src="zeroclaw.png" alt="ZeroClaw" width="200" /> <img src="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/docs/assets/zeroclaw-banner.png" alt="ZeroClaw" width="600" />
</p> </p>
<h1 align="center">ZeroClaw 🦀</h1> <h1 align="center">🦀 ZeroClaw — Personlig AI-assistent</h1>
<p align="center"> <p align="center">
<strong>Null overhead. Null kompromiss. 100% Rust. 100% Agnostisk.</strong><br> <strong>Null overhead. Null kompromiss. 100% Rust. 100% Agnostisk.</strong><br>
⚡️ <strong>Kjører på $10 maskinvare med <5MB RAM: Det er 99% mindre minne enn OpenClaw og 98% billigere enn en Mac mini!</strong> ⚡️ <strong>Kjorer pa $10 maskinvare med <5MB RAM: Det er 99% mindre minne enn OpenClaw og 98% billigere enn en Mac mini!</strong>
</p> </p>
<p align="center"> <p align="center">
<a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a> <a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
<a href="NOTICE"><img src="https://img.shields.io/badge/contributors-27+-green.svg" alt="Contributors" /></a> <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors"><img src="https://img.shields.io/github/contributors/zeroclaw-labs/zeroclaw?color=green" alt="Contributors" /></a>
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a> <a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
<a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a> <a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a>
<a href="https://zeroclawlabs.cn/group.jpg"><img src="https://img.shields.io/badge/WeChat-Group-B7D7A8?logo=wechat&logoColor=white" alt="WeChat Group" /></a> <a href="https://www.facebook.com/groups/zeroclawlabs"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a>
<a href="https://www.xiaohongshu.com/user/profile/67cbfc43000000000d008307?xsec_token=AB73VnYnGNx5y36EtnnZfGmAmS-6Wzv8WMuGpfwfkg6Yc%3D&xsec_source=pc_search"><img src="https://img.shields.io/badge/Xiaohongshu-Official-FF2442?style=flat" alt="Xiaohongshu: Official" /></a> <a href="https://discord.com/invite/wDshRVqRjx"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://t.me/zeroclawlabs"><img src="https://img.shields.io/badge/Telegram-%40zeroclawlabs-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @zeroclawlabs" /></a> <a href="https://www.instagram.com/therealzeroclaw"><img src="https://img.shields.io/badge/Instagram-%40therealzeroclaw-E4405F?style=flat&logo=instagram&logoColor=white" alt="Instagram: @therealzeroclaw" /></a>
<a href="https://www.facebook.com/groups/zeroclaw"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a> <a href="https://www.tiktok.com/@zeroclawlabs"><img src="https://img.shields.io/badge/TikTok-%40zeroclawlabs-000000?style=flat&logo=tiktok&logoColor=white" alt="TikTok: @zeroclawlabs" /></a>
<a href="https://www.rednote.com/user/profile/69b735e6000000002603927e"><img src="https://img.shields.io/badge/RedNote-Official-FF2442?style=flat" alt="RedNote" /></a>
<a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a>
</p> </p>
<p align="center"> <p align="center">
🌐 <strong>Språk:</strong> Bygget av studenter og medlemmer av Harvard-, MIT- og Sundai.Club-miljoene.
</p>
<p align="center">
🌐 <strong>Sprak:</strong>
<a href="README.md">🇺🇸 English</a> · <a href="README.md">🇺🇸 English</a> ·
<a href="README.zh-CN.md">🇨🇳 简体中文</a> · <a href="README.zh-CN.md">🇨🇳 简体中文</a> ·
<a href="README.ja.md">🇯🇵 日本語</a> · <a href="README.ja.md">🇯🇵 日本語</a> ·
@ -55,149 +61,695 @@
<a href="README.nb.md">🇳🇴 Norsk</a> <a href="README.nb.md">🇳🇴 Norsk</a>
</p> </p>
--- ZeroClaw er en personlig AI-assistent du kjorer pa dine egne enheter. Den svarer deg pa kanalene du allerede bruker (WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work og flere). Den har et nettbasert dashbord for sanntidskontroll og kan kobles til maskinvareperiferiutstyr (ESP32, STM32, Arduino, Raspberry Pi). Gateway er bare kontrollplanet — produktet er assistenten.
<!-- BEGIN:WHATS_NEW --> Hvis du onsker en personlig, enkeltbruker-assistent som foler seg lokal, rask og alltid tilgjengelig, er dette den.
### 🚀 What's New in v0.3.1 (March 2026) <p align="center">
<a href="https://zeroclawlabs.ai">Nettsted</a> ·
<a href="docs/README.md">Dokumentasjon</a> ·
<a href="docs/architecture.md">Arkitektur</a> ·
<a href="#hurtigstart">Kom i gang</a> ·
<a href="#migrering-fra-openclaw">Migrering fra OpenClaw</a> ·
<a href="docs/ops/troubleshooting.md">Feilsoking</a> ·
<a href="https://discord.com/invite/wDshRVqRjx">Discord</a>
</p>
| Area | Highlights | > **Anbefalt oppsett:** kjor `zeroclaw onboard` i terminalen din. ZeroClaw Onboard guider deg steg for steg gjennom oppsett av gateway, arbeidsomrade, kanaler og leverandor. Det er den anbefalte oppsettsveien og fungerer pa macOS, Linux og Windows (via WSL2). Ny installasjon? Start her: [Kom i gang](#hurtigstart)
|---|---|
| ci | add Termux (aarch64-linux-android) release target |
<!-- END:WHATS_NEW --> ### Abonnementsautentisering (OAuth)
## Hva er ZeroClaw? - **OpenAI Codex** (ChatGPT-abonnement)
- **Gemini** (Google OAuth)
- **Anthropic** (API-nokkel eller autentiseringstoken)
ZeroClaw er en lettvektig, foranderlig og utvidbar AI-assistent-infrastruktur bygget i Rust. Den kobler sammen ulike LLM-leverandører (Anthropic, OpenAI, Google, Ollama osv.) via et samlet grensesnitt og støtter flere kanaler (Telegram, Matrix, CLI osv.). Modellmerknad: selv om mange leverandorer/modeller stotter, for best opplevelse bruk den sterkeste siste-generasjons modellen tilgjengelig for deg. Se [Onboarding](#hurtigstart).
### Hovedfunksjoner Modellkonfigurasjon + CLI: [Leverandorreferanse](docs/reference/api/providers-reference.md)
Autentiseringsprofil-rotasjon (OAuth vs API-nokler) + failover: [Modell-failover](docs/reference/api/providers-reference.md)
- **🦀 Skrevet i Rust**: Høy ytelse, minnesikkerhet og nullkostnads-abstraksjoner ## Installasjon (anbefalt)
- **🔌 Leverandør-agnostisk**: Støtter OpenAI, Anthropic, Google Gemini, Ollama og andre
- **📱 Multi-kanal**: Telegram, Matrix (med E2EE), CLI og andre
- **🧠 Pluggbart minne**: SQLite og Markdown-backends
- **🛠️ Utvidbare verktøy**: Legg til tilpassede verktøy enkelt
- **🔒 Sikkerhet først**: Omvendt proxy, personvern-først design
--- Kjoretidemiljo: Rust stabil verktoyskjede. Enkel binarfil, ingen kjoretidesavhengigheter.
## Rask Start ### Homebrew (macOS/Linuxbrew)
### Krav ```bash
brew install zeroclaw
- Rust 1.70+ ```
- En LLM-leverandør API-nøkkel (Anthropic, OpenAI osv.)
### Ett-klikks oppstart
### Installasjon
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./install.sh
```
`zeroclaw onboard` kjorer automatisk etter installasjon for a konfigurere arbeidsomradet og leverandoren din.
## Hurtigstart (TL;DR)
Full nybegynnerguide (autentisering, paring, kanaler): [Kom i gang](docs/setup-guides/one-click-bootstrap.md)
```bash
# Installer + onboard
./install.sh --api-key "sk-..." --provider openrouter
# Start gateway (webhook-server + nettbasert dashbord)
zeroclaw gateway # standard: 127.0.0.1:42617
zeroclaw gateway --port 0 # tilfeldig port (sikkerhetsskarmet)
# Snakk med assistenten
zeroclaw agent -m "Hello, ZeroClaw!"
# Interaktiv modus
zeroclaw agent
# Start full autonom kjoretidemiljo (gateway + kanaler + cron + hands)
zeroclaw daemon
# Sjekk status
zeroclaw status
# Kjor diagnostikk
zeroclaw doctor
```
Oppgraderer? Kjor `zeroclaw doctor` etter oppdatering.
### Fra kildekode (utvikling)
```bash ```bash
# Klon repository
git clone https://github.com/zeroclaw-labs/zeroclaw.git git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw cd zeroclaw
# Bygg cargo build --release --locked
cargo build --release cargo install --path . --force --locked
# Kjør zeroclaw onboard
cargo run --release
``` ```
### Med Docker > **Utvikler-fallback (ingen global installasjon):** prefiks kommandoer med `cargo run --release --` (eksempel: `cargo run --release -- status`).
## Migrering fra OpenClaw
ZeroClaw kan importere ditt OpenClaw-arbeidsomrade, minne og konfigurasjon:
```bash ```bash
docker run -d \ # Forhandsvis hva som vil bli migrert (trygt, skrivebeskyttet)
--name zeroclaw \ zeroclaw migrate openclaw --dry-run
-e ANTHROPIC_API_KEY=your_key \
-v zeroclaw-data:/app/data \ # Kjor migreringen
zeroclaw/zeroclaw:latest zeroclaw migrate openclaw
``` ```
--- Dette migrerer minneoppforinger, arbeidsomradefiler og konfigurasjon fra `~/.openclaw/` til `~/.zeroclaw/`. Konfigurasjon konverteres automatisk fra JSON til TOML.
## Sikkerhetsstandarder (DM-tilgang)
ZeroClaw kobler til ekte meldingsflater. Behandle innkommende DM-er som upalitelig inndata.
Full sikkerhetsguide: [SECURITY.md](SECURITY.md)
Standardoppforsel pa alle kanaler:
- **DM-paring** (standard): ukjente avsendere mottar en kort paringskode og boten behandler ikke meldingen deres.
- Godkjenn med: `zeroclaw pairing approve <channel> <code>` (deretter legges avsenderen til en lokal tillatelesliste).
- Offentlige innkommende DM-er krever en eksplisitt opt-in i `config.toml`.
- Kjor `zeroclaw doctor` for a avdekke risikable eller feilkonfigurerte DM-policyer.
**Autonominiva:**
| Niva | Oppforsel |
|------|-----------|
| `ReadOnly` | Agenten kan observere men ikke handle |
| `Supervised` (standard) | Agenten handler med godkjenning for medium/hoy-risiko operasjoner |
| `Full` | Agenten handler autonomt innenfor policygrenser |
**Sandkasselag:** arbeidsomradeisolasjon, stiblokkering, kommandotillatelselister, forbudte stier (`/etc`, `/root`, `~/.ssh`), hastighetsbegrensning (maks handlinger/time, kostnad/dag-tak).
<!-- BEGIN:WHATS_NEW -->
<!-- END:WHATS_NEW -->
### Kunngoringer
Bruk denne tavlen for viktige meldinger (brytende endringer, sikkerhetsrad, vedlikeholdsvinduer og utgivelsesblokkeringer).
| Dato (UTC) | Niva | Merknad | Handling |
| ---------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2026-02-19 | _Kritisk_ | Vi er **ikke tilknyttet** `openagen/zeroclaw`, `zeroclaw.org` eller `zeroclaw.net`. Domenene `zeroclaw.org` og `zeroclaw.net` peker for oyeblikket til `openagen/zeroclaw`-forken, og dette domenet/repositoriet utgir seg for a vaere vart offisielle nettsted/prosjekt. | Ikke stol pa informasjon, binarfiler, innsamlinger eller kunngoringer fra disse kildene. Bruk kun [dette repositoriet](https://github.com/zeroclaw-labs/zeroclaw) og vare verifiserte sosiale kontoer. |
| 2026-02-21 | _Viktig_ | Vart offisielle nettsted er na live: [zeroclawlabs.ai](https://zeroclawlabs.ai). Takk for talmodigheten mens vi forberedte lanseringen. Vi ser fortsatt etterligningsforsok, sa **ikke** bli med pa noen investerings- eller innsamlingsaktivitet som hevder ZeroClaw-navnet med mindre det er publisert gjennom vare offisielle kanaler. | Bruk [dette repositoriet](https://github.com/zeroclaw-labs/zeroclaw) som eneste sannhetskilde. Folg [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21), [Facebook (Gruppe)](https://www.facebook.com/groups/zeroclawlabs) og [Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/) for offisielle oppdateringer. |
| 2026-02-19 | _Viktig_ | Anthropic oppdaterte vilkarene for autentisering og legitimasjonsbruk 2026-02-19. Claude Code OAuth-tokens (Free, Pro, Max) er utelukkende ment for Claude Code og Claude.ai; bruk av OAuth-tokens fra Claude Free/Pro/Max i andre produkter, verktoy eller tjenester (inkludert Agent SDK) er ikke tillatt og kan bryte forbruksvilkarene. | Vennligst unnga Claude Code OAuth-integrasjoner midlertidig for a forhindre potensielt tap. Opprinnelig klausul: [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use). |
## Hoydepunkter
- **Slank kjoretidemiljo som standard** — vanlige CLI- og statusarbeidsflyter kjorer i en fa-megabyte minneramme pa release-bygg.
- **Kostnadseffektiv distribusjon** — designet for $10-kort og sma skyinstanser, ingen tunge kjoretidesavhengigheter.
- **Raske kaldstarter** — enkel-binar Rust-kjoretidemiljo holder kommando- og daemonoppstart naer oydblikkelig.
- **Portabel arkitektur** — en binarfil pa tvers av ARM, x86 og RISC-V med byttbare leverandorer/kanaler/verktoy.
- **Lokal-forst Gateway** — enkelt kontrollplan for sesjoner, kanaler, verktoy, cron, SOP-er og hendelser.
- **Multikanal-innboks** — WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WebSocket og flere.
- **Multi-agent-orkestrering (Hands)** — autonome agentsverm som kjorer etter tidsplan og blir smartere over tid.
- **Standard Operating Procedures (SOPs)** — hendelsesdrevet arbeidsflytautomatisering med MQTT, webhook, cron og periferielle utlosere.
- **Nettbasert dashbord** — React 19 + Vite nettgrensesnitt med sanntidschat, minneleser, konfigurasjonsredigeringsverktoy, cron-behandler og verktoyinspektoring.
- **Maskinvareperiferiutstyr** — ESP32, STM32 Nucleo, Arduino, Raspberry Pi GPIO via `Peripheral`-traitet.
- **Forsterangs verktoy** — shell, fil-I/O, nettleser, git, web fetch/search, MCP, Jira, Notion, Google Workspace og 70+ flere.
- **Livssyklus-hooks** — fang opp og modifiser LLM-kall, verktoyutforelser og meldinger pa hvert trinn.
- **Ferdighetsplattform** — medfoldgende, fellesskaps- og arbeidsomrade-ferdigheter med sikkerhetsgransking.
- **Tunnelstotte** — Cloudflare, Tailscale, ngrok, OpenVPN og egendefinerte tunneler for fjerntilgang.
### Hvorfor team velger ZeroClaw
- **Slank som standard:** liten Rust-binarfil, rask oppstart, lavt minneforbruk.
- **Sikker fra grunnen:** paring, streng sandkassing, eksplisitte tillateleslister, arbeidsomradeomfang.
- **Fullt byttbart:** kjernesystemer er traits (leverandorer, kanaler, verktoy, minne, tunneler).
- **Ingen innlasing:** OpenAI-kompatibel leverandorstotte + pluggbare egendefinerte endepunkter.
## Ytelsessammenligning (ZeroClaw vs OpenClaw, reproduserbar)
Lokal maskin hurtigtest (macOS arm64, feb 2026) normalisert for 0.8GHz kantmaskinvare.
| | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 |
| ------------------------- | ------------- | -------------- | --------------- | -------------------- |
| **Sprak** | TypeScript | Python | Go | **Rust** |
| **RAM** | > 1GB | > 100MB | < 10MB | **< 5MB** |
| **Oppstart (0.8GHz-kjerne)** | > 500s | > 30s | < 1s | **< 10ms** |
| **Binarstorrelse** | ~28MB (dist) | N/A (Skript) | ~8MB | **~8.8 MB** |
| **Kostnad** | Mac Mini $599 | Linux SBC ~$50 | Linux Board $10 | **Enhver maskinvare $10** |
> Merknader: ZeroClaw-resultater er malt pa release-bygg med `/usr/bin/time -l`. OpenClaw krever Node.js-kjoretidemiljo (typisk ~390MB ekstra minneoverhead), mens NanoBot krever Python-kjoretidemiljo. PicoClaw og ZeroClaw er statiske binarfiler. RAM-tallene ovenfor er kjoretidesminne; byggetidskompileringskrav er hoyere.
<p align="center">
<img src="docs/assets/zeroclaw-comparison.jpeg" alt="ZeroClaw vs OpenClaw-sammenligning" width="800" />
</p>
### Reproduserbar lokal maling
```bash
cargo build --release
ls -lh target/release/zeroclaw
/usr/bin/time -l target/release/zeroclaw --help
/usr/bin/time -l target/release/zeroclaw status
```
## Alt vi har bygget sa langt
### Kjerneplattform
- Gateway HTTP/WS/SSE-kontrollplan med sesjoner, tilstedevaerelse, konfigurasjon, cron, webhooks, nettbasert dashbord og paring.
- CLI-overflate: `gateway`, `agent`, `onboard`, `doctor`, `status`, `service`, `migrate`, `auth`, `cron`, `channel`, `skills`.
- Agentorkestreringssloyfe med verktoyutsendelse, prompt-konstruksjon, meldingsklassifisering og minnelasting.
- Sesjonsmodell med sikkerhetspolicy-handhevelse, autonominiva og godkjenningsstyring.
- Robust leverandorwrapper med failover, retry og modellruting pa tvers av 20+ LLM-backends.
### Kanaler
Kanaler: WhatsApp (native), Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, DingTalk, Lark, Mattermost, Nextcloud Talk, Nostr, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WATI, Mochat, Linq, Notion, WebSocket, ClawdTalk.
Funksjonsbaserte: Matrix (`channel-matrix`), Lark (`channel-lark`), Nostr (`channel-nostr`).
### Nettbasert dashbord
React 19 + Vite 6 + Tailwind CSS 4 nettbasert dashbord servert direkte fra Gateway:
- **Dashbord** — systemoversikt, helsestatus, oppetid, kostnadssporing
- **Agentchat** — interaktiv chat med agenten
- **Minne** — bla gjennom og administrer minneoppforinger
- **Konfigurasjon** — vis og rediger konfigurasjon
- **Cron** — administrer planlagte oppgaver
- **Verktoy** — bla gjennom tilgjengelige verktoy
- **Logger** — vis agentaktivitetslogger
- **Kostnad** — tokenbruk og kostnadssporing
- **Doktor** — systemhelsediagnostikk
- **Integrasjoner** — integrasjonsstatus og oppsett
- **Paring** — enhetsparingsadministrasjon
### Firmwaremal
| Mal | Plattform | Formal |
|-----|-----------|--------|
| ESP32 | Espressif ESP32 | Tradlos periferiagent |
| ESP32-UI | ESP32 + Skjerm | Agent med visuelt grensesnitt |
| STM32 Nucleo | STM32 (ARM Cortex-M) | Industriell periferi |
| Arduino | Arduino | Grunnleggende sensor/aktuatorbro |
| Uno Q Bridge | Arduino Uno | Seriell bro til agent |
### Verktoy + automatisering
- **Kjerne:** shell, fillesing/skriving/redigering, git-operasjoner, glob-sok, innholdssok
- **Nett:** nettleserkontroll, web fetch, web search, skjermbilde, bildeinformasjon, PDF-lesing
- **Integrasjoner:** Jira, Notion, Google Workspace, Microsoft 365, LinkedIn, Composio, Pushover
- **MCP:** Model Context Protocol verktoy-wrapper + utsatte verktoysamlinger
- **Planlegging:** cron legg til/fjern/oppdater/kjor, planleggingsverktoy
- **Minne:** recall, store, forget, knowledge, project intel
- **Avansert:** delegate (agent-til-agent), swarm, modellbytte/-ruting, sikkerhetsoperasjoner, skyoperasjoner
- **Maskinvare:** board info, memory map, memory read (funksjonsbasert)
### Kjoretidemiljo + sikkerhet
- **Autonominiva:** ReadOnly, Supervised (standard), Full.
- **Sandkassing:** arbeidsomradeisolasjon, stiblokkering, kommandotillatelselister, forbudte stier, Landlock (Linux), Bubblewrap.
- **Hastighetsbegrensning:** maks handlinger per time, maks kostnad per dag (konfigurerbart).
- **Godkjenningsstyring:** interaktiv godkjenning for medium/hoy-risiko operasjoner.
- **Nodstopp:** mulighet for nodavslutning.
- **129+ sikkerhetstester** i automatisert CI.
### Drift + pakking
- Nettbasert dashbord servert direkte fra Gateway.
- Tunnelstotte: Cloudflare, Tailscale, ngrok, OpenVPN, egendefinert kommando.
- Docker kjoretidemiljoadapter for kontainerisert utforelse.
- CI/CD: beta (auto pa push) -> stabil (manuell utsendelse) -> Docker, crates.io, Scoop, AUR, Homebrew, tweet.
- Forhandsbygde binarfiler for Linux (x86_64, aarch64, armv7), macOS (x86_64, aarch64), Windows (x86_64).
## Konfigurasjon ## Konfigurasjon
ZeroClaw bruker en YAML-konfigurasjonsfil. Som standard ser den etter `config.yaml`. Minimal `~/.zeroclaw/config.toml`:
```yaml ```toml
# Standardleverandør default_provider = "anthropic"
provider: anthropic api_key = "sk-ant-..."
# Leverandørkonfigurasjon
providers:
anthropic:
api_key: ${ANTHROPIC_API_KEY}
model: claude-3-5-sonnet-20241022
openai:
api_key: ${OPENAI_API_KEY}
model: gpt-4o
# Minnekonfigurasjon
memory:
backend: sqlite
path: data/memory.db
# Kanalkonfigurasjon
channels:
telegram:
token: ${TELEGRAM_BOT_TOKEN}
``` ```
--- Full konfigurasjonsreferanse: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md).
### Kanalkonfigurasjon
**Telegram:**
```toml
[channels.telegram]
bot_token = "123456:ABC-DEF..."
```
**Discord:**
```toml
[channels.discord]
token = "your-bot-token"
```
**Slack:**
```toml
[channels.slack]
bot_token = "xoxb-..."
app_token = "xapp-..."
```
**WhatsApp:**
```toml
[channels.whatsapp]
enabled = true
```
**Matrix:**
```toml
[channels.matrix]
homeserver_url = "https://matrix.org"
username = "@bot:matrix.org"
password = "..."
```
**Signal:**
```toml
[channels.signal]
phone_number = "+1234567890"
```
### Tunnelkonfigurasjon
```toml
[tunnel]
kind = "cloudflare" # eller "tailscale", "ngrok", "openvpn", "custom", "none"
```
Detaljer: [Kanalreferanse](docs/reference/api/channels-reference.md) · [Konfigurasjonsreferanse](docs/reference/api/config-reference.md)
### Kjoretidestotte (gjeldende)
- **`native`** (standard) — direkte prosessutforelse, raskeste sti, ideell for palitelige miljoer.
- **`docker`** — full kontainerisolasjon, handhevede sikkerhetspolicyer, krever Docker.
Sett `runtime.kind = "docker"` for streng sandkassing eller nettverksisolasjon.
## Abonnementsautentisering (OpenAI Codex / Claude Code / Gemini)
ZeroClaw stotter abonnements-native autentiseringsprofiler (multi-konto, kryptert i hvile).
- Lagringsfil: `~/.zeroclaw/auth-profiles.json`
- Krypteringsnokkel: `~/.zeroclaw/.secret_key`
- Profil-ID-format: `<provider>:<profile_name>` (eksempel: `openai-codex:work`)
```bash
# OpenAI Codex OAuth (ChatGPT-abonnement)
zeroclaw auth login --provider openai-codex --device-code
# Gemini OAuth
zeroclaw auth login --provider gemini --profile default
# Anthropic setup-token
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# Sjekk / oppdater / bytt profil
zeroclaw auth status
zeroclaw auth refresh --provider openai-codex --profile default
zeroclaw auth use --provider openai-codex --profile work
# Kjor agenten med abonnementsautentisering
zeroclaw agent --provider openai-codex -m "hello"
zeroclaw agent --provider anthropic -m "hello"
```
## Agentarbeidsomrade + ferdigheter
Arbeidsomraderot: `~/.zeroclaw/workspace/` (konfigurerbar via konfigurasjon).
Injiserte prompt-filer:
- `IDENTITY.md` — agentpersonlighet og rolle
- `USER.md` — brukerkontekst og preferanser
- `MEMORY.md` — langtidsfakta og laerdommer
- `AGENTS.md` — sesjonskonvensjoner og initialiseringsregler
- `SOUL.md` — kjerneidentitet og driftsprinsipper
Ferdigheter: `~/.zeroclaw/workspace/skills/<skill>/SKILL.md` eller `SKILL.toml`.
```bash
# List installerte ferdigheter
zeroclaw skills list
# Installer fra git
zeroclaw skills install https://github.com/user/my-skill.git
# Sikkerhetsgransking for installasjon
zeroclaw skills audit https://github.com/user/my-skill.git
# Fjern en ferdighet
zeroclaw skills remove my-skill
```
## CLI-kommandoer
```bash
# Arbeidsomradeadministrasjon
zeroclaw onboard # Veiledet oppsettveiviser
zeroclaw status # Vis daemon/agentstatus
zeroclaw doctor # Kjor systemdiagnostikk
# Gateway + daemon
zeroclaw gateway # Start gateway-server (127.0.0.1:42617)
zeroclaw daemon # Start full autonom kjoretidemiljo
# Agent
zeroclaw agent # Interaktiv chatmodus
zeroclaw agent -m "melding" # Enkeltmeldingsmodus
# Tjenesteadministrasjon
zeroclaw service install # Installer som OS-tjeneste (launchd/systemd)
zeroclaw service start|stop|restart|status
# Kanaler
zeroclaw channel list # List konfigurerte kanaler
zeroclaw channel doctor # Sjekk kanalhelse
zeroclaw channel bind-telegram 123456789
# Cron + planlegging
zeroclaw cron list # List planlagte jobber
zeroclaw cron add "*/5 * * * *" --prompt "Sjekk systemhelse"
zeroclaw cron remove <id>
# Minne
zeroclaw memory list # List minneoppforinger
zeroclaw memory get <key> # Hent et minne
zeroclaw memory stats # Minnestatistikk
# Autentiseringsprofiler
zeroclaw auth login --provider <navn>
zeroclaw auth status
zeroclaw auth use --provider <navn> --profile <profil>
# Maskinvareperiferiutstyr
zeroclaw hardware discover # Sok etter tilkoblede enheter
zeroclaw peripheral list # List tilkoblede periferienheter
zeroclaw peripheral flash # Flash firmware til enhet
# Migrering
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw
# Shell-fullforinger
source <(zeroclaw completions bash)
zeroclaw completions zsh > ~/.zfunc/_zeroclaw
```
Full kommandoreferanse: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
<!-- markdownlint-disable MD001 MD024 -->
## Forutsetninger
<details>
<summary><strong>Windows</strong></summary>
#### Pakrevd
1. **Visual Studio Build Tools** (gir MSVC-linker og Windows SDK):
```powershell
winget install Microsoft.VisualStudio.2022.BuildTools
```
Under installasjon (eller via Visual Studio Installer), velg arbeidsbelastningen **"Desktop development with C++"**.
2. **Rust-verktoyskjede:**
```powershell
winget install Rustlang.Rustup
```
Etter installasjon, apne en ny terminal og kjor `rustup default stable` for a sikre at den stabile verktoyskjeden er aktiv.
3. **Verifiser** at begge fungerer:
```powershell
rustc --version
cargo --version
```
#### Valgfritt
- **Docker Desktop** — kun pakrevd ved bruk av [Docker-sandkassekjoretidemiljo](#kjoretidestotte-gjeldende) (`runtime.kind = "docker"`). Installer via `winget install Docker.DockerDesktop`.
</details>
<details>
<summary><strong>Linux / macOS</strong></summary>
#### Pakrevd
1. **Byggeverktoyer:**
- **Linux (Debian/Ubuntu):** `sudo apt install build-essential pkg-config`
- **Linux (Fedora/RHEL):** `sudo dnf group install development-tools && sudo dnf install pkg-config`
- **macOS:** Installer Xcode Command Line Tools: `xcode-select --install`
2. **Rust-verktoyskjede:**
```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
Se [rustup.rs](https://rustup.rs) for detaljer.
3. **Verifiser** at begge fungerer:
```bash
rustc --version
cargo --version
```
#### En-linje installasjon
Eller hopp over stegene ovenfor og installer alt (systemavhengigheter, Rust, ZeroClaw) med en enkelt kommando:
```bash
curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash
```
#### Kompileringsressurskrav
Bygging fra kildekode krever mer ressurser enn a kjore den resulterende binarfilen:
| Ressurs | Minimum | Anbefalt |
| -------------- | ------- | ----------- |
| **RAM + swap** | 2 GB | 4 GB+ |
| **Ledig disk** | 6 GB | 10 GB+ |
Hvis verten din er under minimum, bruk forhandsbygde binarfiler:
```bash
./install.sh --prefer-prebuilt
```
For a kreve kun binarinstallasjon uten kildekodefallback:
```bash
./install.sh --prebuilt-only
```
#### Valgfritt
- **Docker** — kun pakrevd ved bruk av [Docker-sandkassekjoretidemiljo](#kjoretidestotte-gjeldende) (`runtime.kind = "docker"`). Installer via pakkebehandleren din eller [docker.com](https://docs.docker.com/engine/install/).
> **Merk:** Standard `cargo build --release` bruker `codegen-units=1` for a senke topp-kompileringstrykk. For raskere bygg pa kraftige maskiner, bruk `cargo build --profile release-fast`.
</details>
<!-- markdownlint-enable MD001 MD024 -->
### Forhandsbygde binarfiler
Utgivelsesfiler publiseres for:
- Linux: `x86_64`, `aarch64`, `armv7`
- macOS: `x86_64`, `aarch64`
- Windows: `x86_64`
Last ned de nyeste filene fra:
<https://github.com/zeroclaw-labs/zeroclaw/releases/latest>
## Dokumentasjon ## Dokumentasjon
For detaljert dokumentasjon, se: Bruk disse nar du er forbi onboarding-flyten og onsker dypere referanse.
- [Dokumentasjonshub](docs/README.md) - Start med [dokumentasjonsindeksen](docs/README.md) for navigasjon og "hva er hvor."
- [Kommandoreferanse](docs/commands-reference.md) - Les [arkitekturoversikten](docs/architecture.md) for den fullstendige systemmodellen.
- [Leverandørreferanse](docs/providers-reference.md) - Bruk [konfigurasjonsreferansen](docs/reference/api/config-reference.md) nar du trenger hver nokkel og eksempel.
- [Kanalreferanse](docs/channels-reference.md) - Kjor Gateway etter boken med [driftshandboken](docs/ops/operations-runbook.md).
- [Konfigurasjonsreferanse](docs/config-reference.md) - Folg [ZeroClaw Onboard](#hurtigstart) for et veiledet oppsett.
- Feilsok vanlige problemer med [feilsokingsguiden](docs/ops/troubleshooting.md).
- Gjennga [sikkerhetsveiledning](docs/security/README.md) for du eksponerer noe.
--- ### Referansedokumentasjon
## Bidrag - Dokumentasjonshub: [docs/README.md](docs/README.md)
- Samlet innholdsfortegnelse: [docs/SUMMARY.md](docs/SUMMARY.md)
- Kommandoreferanse: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
- Konfigurasjonsreferanse: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
- Leverandorreferanse: [docs/reference/api/providers-reference.md](docs/reference/api/providers-reference.md)
- Kanalreferanse: [docs/reference/api/channels-reference.md](docs/reference/api/channels-reference.md)
- Driftshandbok: [docs/ops/operations-runbook.md](docs/ops/operations-runbook.md)
- Feilsoking: [docs/ops/troubleshooting.md](docs/ops/troubleshooting.md)
Bidrag er velkomne! Vennligst les [Bidragsguiden](CONTRIBUTING.md). ### Samarbeidsdokumentasjon
- Bidragsguide: [CONTRIBUTING.md](CONTRIBUTING.md)
- PR-arbeidsflyts-policy: [docs/contributing/pr-workflow.md](docs/contributing/pr-workflow.md)
- CI-arbeidsflytguide: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Anmelderhandbok: [docs/contributing/reviewer-playbook.md](docs/contributing/reviewer-playbook.md)
- Sikkerhetsavsloring: [SECURITY.md](SECURITY.md)
- Dokumentasjonsmal: [docs/contributing/doc-template.md](docs/contributing/doc-template.md)
### Distribusjon + drift
- Nettverksdistribusjonsguide: [docs/ops/network-deployment.md](docs/ops/network-deployment.md)
- Proxy-agenthandbok: [docs/ops/proxy-agent-playbook.md](docs/ops/proxy-agent-playbook.md)
- Maskinvareguider: [docs/hardware/README.md](docs/hardware/README.md)
## Smooth Crab 🦀
ZeroClaw ble bygget for den smidige krabben 🦀, en rask og effektiv AI-assistent. Bygget av Argenis De La Rosa og fellesskapet.
- [zeroclawlabs.ai](https://zeroclawlabs.ai)
- [@zeroclawlabs](https://x.com/zeroclawlabs)
## Stott ZeroClaw
Hvis ZeroClaw hjelper arbeidet ditt og du onsker a stotte pagaende utvikling, kan du donere her:
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
### Spesiell takk
En hjertelig takk til miljoene og institusjonene som inspirerer og driver dette open source-arbeidet:
- **Harvard University** — for a fremme intellektuell nysgjerrighet og flytte grensene for hva som er mulig.
- **MIT** — for a fremme apen kunnskap, apen kildekode og troen pa at teknologi bor vaere tilgjengelig for alle.
- **Sundai Club** — for fellesskapet, energien og den uboyelige driven til a bygge ting som betyr noe.
- **Verden og videre** 🌍✨ — til hver bidragsyter, drommer og bygger der ute som gjor open source til en kraft for det gode. Dette er for dere.
Vi bygger i det apne fordi de beste ideene kommer fra overalt. Hvis du leser dette, er du en del av det. Velkommen. 🦀❤️
## Bidra
Ny til ZeroClaw? Se etter issues merket [`good first issue`](https://github.com/zeroclaw-labs/zeroclaw/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) — se var [Bidragsguide](CONTRIBUTING.md#first-time-contributors) for hvordan du kommer i gang. AI/vibe-kodede PR-er er velkomne! 🤖
Se [CONTRIBUTING.md](CONTRIBUTING.md) og [CLA.md](docs/contributing/cla.md). Implementer et trait, send inn en PR:
- CI-arbeidsflytguide: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Ny `Provider` -> `src/providers/`
- Ny `Channel` -> `src/channels/`
- Ny `Observer` -> `src/observability/`
- Nytt `Tool` -> `src/tools/`
- Nytt `Memory` -> `src/memory/`
- Ny `Tunnel` -> `src/tunnel/`
- Ny `Peripheral` -> `src/peripherals/`
- Ny `Skill` -> `~/.zeroclaw/workspace/skills/<name>/`
<!-- BEGIN:RECENT_CONTRIBUTORS -->
<!-- END:RECENT_CONTRIBUTORS -->
## Offisielt repository og etterligningsadvarsel
**Dette er det eneste offisielle ZeroClaw-repositoriet:**
> https://github.com/zeroclaw-labs/zeroclaw
Ethvert annet repository, organisasjon, domene eller pakke som hevder a vaere "ZeroClaw" eller antyder tilknytning til ZeroClaw Labs er **uautorisert og ikke tilknyttet dette prosjektet**. Kjente uautoriserte forker vil bli listet i [TRADEMARK.md](docs/maintainers/trademark.md).
Hvis du stoter pa etterligning eller varemerkemisbruk, vennligst [opprett en issue](https://github.com/zeroclaw-labs/zeroclaw/issues).
--- ---
## Lisens ## Lisens
Dette prosjektet er dobbelt-lisensiert: ZeroClaw er dobbelt-lisensiert for maksimal apenhet og bidragsyterbeskyttelse:
- MIT License | Lisens | Bruksomrade |
- Apache License, versjon 2.0 |---|---|
| [MIT](LICENSE-MIT) | Open source, forskning, akademisk, personlig bruk |
| [Apache 2.0](LICENSE-APACHE) | Patentbeskyttelse, institusjonell, kommersiell distribusjon |
Se [LICENSE-APACHE](LICENSE-APACHE) og [LICENSE-MIT](LICENSE-MIT) for detaljer. Du kan velge begge lisenser. **Bidragsytere gir automatisk rettigheter under begge** — se [CLA.md](docs/contributing/cla.md) for den fullstendige bidragsyteravtalen.
### Varemerke
**ZeroClaw**-navnet og logoen er varemerker for ZeroClaw Labs. Denne lisensen gir ikke tillatelse til a bruke dem for a antyde stotte eller tilknytning. Se [TRADEMARK.md](docs/maintainers/trademark.md) for tillatt og forbudt bruk.
### Bidragsyterbeskyttelse
- Du **beholder opphavsretten** til dine bidrag
- **Patentbevilgning** (Apache 2.0) beskytter deg mot patentkrav fra andre bidragsytere
- Dine bidrag er **permanent attribuert** i commit-historikk og [NOTICE](NOTICE)
- Ingen varemerkerettigheter overdrages ved a bidra
--- ---
## Fellesskap **ZeroClaw** — Null overhead. Null kompromiss. Distribuer overalt. Bytt hva som helst. 🦀
- [Telegram](https://t.me/zeroclawlabs) ## Bidragsytere
- [Facebook Group](https://www.facebook.com/groups/zeroclaw)
- [WeChat Group](https://zeroclawlabs.cn/group.jpg)
--- <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors">
<img src="https://contrib.rocks/image?repo=zeroclaw-labs/zeroclaw" alt="ZeroClaw-bidragsytere" />
</a>
## Sponsorer Denne listen genereres fra GitHub-bidragsytergrafen og oppdateres automatisk.
Hvis ZeroClaw er nyttig for deg, vennligst vurder å kjøpe oss en kaffe: ## Stjernehistorikk
[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee)](https://buymeacoffee.com/argenistherose) <p align="center">
<a href="https://www.star-history.com/#zeroclaw-labs/zeroclaw&type=date&legend=top-left">
<!-- BEGIN:RECENT_CONTRIBUTORS --> <picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&theme=dark&legend=top-left" />
### 🌟 Recent Contributors (v0.3.1) <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
<img alt="Stjernehistorikk-diagram" src="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
3 contributors shipped features, fixes, and improvements in this release cycle: </picture>
</a>
- **Argenis** </p>
- **argenis de la rosa**
- **Claude Opus 4.6**
Thank you to everyone who opened issues, reviewed PRs, translated docs, and helped test. Every contribution matters. 🦀
<!-- END:RECENT_CONTRIBUTORS -->

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,23 +1,29 @@
<p align="center"> <p align="center">
<img src="zeroclaw.png" alt="ZeroClaw" width="200" /> <img src="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/docs/assets/zeroclaw-banner.png" alt="ZeroClaw" width="600" />
</p> </p>
<h1 align="center">ZeroClaw 🦀</h1> <h1 align="center">🦀 ZeroClaw — Asistent AI Personal</h1>
<p align="center"> <p align="center">
<strong>Zero overhead. Zero compromisuri. 100% Rust. 100% Agnostic.</strong><br> <strong>Zero overhead. Zero compromisuri. 100% Rust. 100% Agnostic.</strong><br>
⚡️ <strong>Rulează pe hardware de $10 cu <5MB RAM: Asta e cu 99% mai puțină memorie decât OpenClaw și cu 98% mai ieftin decât un Mac mini!</strong> ⚡️ <strong>Rulează pe hardware de $10 cu <5MB RAM: Cu 99% mai puțină memorie decât OpenClaw și cu 98% mai ieftin decât un Mac mini!</strong>
</p> </p>
<p align="center"> <p align="center">
<a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a> <a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
<a href="NOTICE"><img src="https://img.shields.io/badge/contributors-27+-green.svg" alt="Contributors" /></a> <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors"><img src="https://img.shields.io/github/contributors/zeroclaw-labs/zeroclaw?color=green" alt="Contributors" /></a>
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a> <a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
<a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a> <a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a>
<a href="https://zeroclawlabs.cn/group.jpg"><img src="https://img.shields.io/badge/WeChat-Group-B7D7A8?logo=wechat&logoColor=white" alt="WeChat Group" /></a> <a href="https://www.facebook.com/groups/zeroclawlabs"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a>
<a href="https://www.xiaohongshu.com/user/profile/67cbfc43000000000d008307?xsec_token=AB73VnYnGNx5y36EtnnZfGmAmS-6Wzv8WMuGpfwfkg6Yc%3D&xsec_source=pc_search"><img src="https://img.shields.io/badge/Xiaohongshu-Official-FF2442?style=flat" alt="Xiaohongshu: Official" /></a> <a href="https://discord.com/invite/wDshRVqRjx"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://t.me/zeroclawlabs"><img src="https://img.shields.io/badge/Telegram-%40zeroclawlabs-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @zeroclawlabs" /></a> <a href="https://www.instagram.com/therealzeroclaw"><img src="https://img.shields.io/badge/Instagram-%40therealzeroclaw-E4405F?style=flat&logo=instagram&logoColor=white" alt="Instagram: @therealzeroclaw" /></a>
<a href="https://www.facebook.com/groups/zeroclaw"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a> <a href="https://www.tiktok.com/@zeroclawlabs"><img src="https://img.shields.io/badge/TikTok-%40zeroclawlabs-000000?style=flat&logo=tiktok&logoColor=white" alt="TikTok: @zeroclawlabs" /></a>
<a href="https://www.rednote.com/user/profile/69b735e6000000002603927e"><img src="https://img.shields.io/badge/RedNote-Official-FF2442?style=flat" alt="RedNote" /></a>
<a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a>
</p>
<p align="center">
Construit de studenți și membri ai comunităților Harvard, MIT și Sundai.Club.
</p> </p>
<p align="center"> <p align="center">
@ -55,149 +61,695 @@
<a href="README.nb.md">🇳🇴 Norsk</a> <a href="README.nb.md">🇳🇴 Norsk</a>
</p> </p>
--- ZeroClaw este un asistent AI personal pe care îl rulezi pe propriile dispozitive. Îți răspunde pe canalele pe care le folosești deja (WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work și altele). Are un panou web pentru control în timp real și se poate conecta la periferice hardware (ESP32, STM32, Arduino, Raspberry Pi). Gateway-ul este doar planul de control — produsul este asistentul.
<!-- BEGIN:WHATS_NEW --> Dacă vrei un asistent personal, pentru un singur utilizator, care se simte local, rapid și mereu activ, acesta este.
### 🚀 What's New in v0.3.1 (March 2026) <p align="center">
<a href="https://zeroclawlabs.ai">Site web</a> ·
<a href="docs/README.md">Documentație</a> ·
<a href="docs/architecture.md">Arhitectură</a> ·
<a href="#pornire-rapidă">Începe</a> ·
<a href="#migrarea-de-la-openclaw">Migrare de la OpenClaw</a> ·
<a href="docs/ops/troubleshooting.md">Depanare</a> ·
<a href="https://discord.com/invite/wDshRVqRjx">Discord</a>
</p>
| Area | Highlights | > **Configurare recomandată:** rulează `zeroclaw onboard` în terminalul tău. ZeroClaw Onboard te ghidează pas cu pas prin configurarea gateway-ului, workspace-ului, canalelor și provider-ului. Este calea de configurare recomandată și funcționează pe macOS, Linux și Windows (prin WSL2). Instalare nouă? Începe aici: [Începe](#pornire-rapidă)
|---|---|
| ci | add Termux (aarch64-linux-android) release target |
<!-- END:WHATS_NEW --> ### Autentificare prin abonament (OAuth)
## Ce este ZeroClaw? - **OpenAI Codex** (abonament ChatGPT)
- **Gemini** (Google OAuth)
- **Anthropic** (cheie API sau token de autentificare)
ZeroClaw este o infrastructură de asistent AI ușoară, mutabilă și extensibilă construită în Rust. Conectează diverși furnizori de LLM (Anthropic, OpenAI, Google, Ollama, etc.) printr-o interfață unificată și suportă multiple canale (Telegram, Matrix, CLI, etc.). Notă despre modele: deși sunt suportate multe provider-e/modele, pentru cea mai bună experiență folosește cel mai puternic model de ultimă generație disponibil. Vezi [Onboarding](#pornire-rapidă).
### Caracteristici Principale Configurare modele + CLI: [Referință Providers](docs/reference/api/providers-reference.md)
Rotație profil de autentificare (OAuth vs chei API) + failover: [Failover model](docs/reference/api/providers-reference.md)
- **🦀 Scris în Rust**: Performanță ridicată, siguranță a memoriei și abstracțiuni fără costuri ## Instalare (recomandat)
- **🔌 Agnostic față de furnizori**: Suportă OpenAI, Anthropic, Google Gemini, Ollama și alții
- **📱 Multi-canal**: Telegram, Matrix (cu E2EE), CLI și altele
- **🧠 Memorie modulară**: Backend-uri SQLite și Markdown
- **🛠️ Instrumente extensibile**: Adaugă instrumente personalizate cu ușurință
- **🔒 Securitate pe primul loc**: Reverse proxy, design axat pe confidențialitate
--- Runtime: Rust stable toolchain. Binar unic, fără dependențe de runtime.
## Start Rapid ### Homebrew (macOS/Linuxbrew)
### Cerințe ```bash
brew install zeroclaw
- Rust 1.70+ ```
- O cheie API de furnizor LLM (Anthropic, OpenAI, etc.)
### Bootstrap cu un clic
### Instalare
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./install.sh
```
`zeroclaw onboard` rulează automat după instalare pentru a configura workspace-ul și provider-ul.
## Pornire rapidă (TL;DR)
Ghid complet pentru începători (autentificare, asociere, canale): [Începe](docs/setup-guides/one-click-bootstrap.md)
```bash
# Instalare + onboard
./install.sh --api-key "sk-..." --provider openrouter
# Pornește gateway-ul (server webhook + panou web)
zeroclaw gateway # implicit: 127.0.0.1:42617
zeroclaw gateway --port 0 # port aleatoriu (securitate îmbunătățită)
# Vorbește cu asistentul
zeroclaw agent -m "Hello, ZeroClaw!"
# Mod interactiv
zeroclaw agent
# Pornește runtime-ul autonom complet (gateway + canale + cron + hands)
zeroclaw daemon
# Verifică starea
zeroclaw status
# Rulează diagnostice
zeroclaw doctor
```
Actualizezi? Rulează `zeroclaw doctor` după actualizare.
### Din sursă (dezvoltare)
```bash ```bash
# Clonează repository-ul
git clone https://github.com/zeroclaw-labs/zeroclaw.git git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw cd zeroclaw
# Construiește cargo build --release --locked
cargo build --release cargo install --path . --force --locked
# Rulează zeroclaw onboard
cargo run --release
``` ```
### Cu Docker > **Alternativă dev (fără instalare globală):** prefixează comenzile cu `cargo run --release --` (exemplu: `cargo run --release -- status`).
## Migrarea de la OpenClaw
ZeroClaw poate importa workspace-ul, memoria și configurația OpenClaw:
```bash ```bash
docker run -d \ # Previzualizează ce va fi migrat (sigur, doar citire)
--name zeroclaw \ zeroclaw migrate openclaw --dry-run
-e ANTHROPIC_API_KEY=your_key \
-v zeroclaw-data:/app/data \ # Rulează migrarea
zeroclaw/zeroclaw:latest zeroclaw migrate openclaw
``` ```
--- Aceasta migrează intrările de memorie, fișierele workspace și configurația din `~/.openclaw/` în `~/.zeroclaw/`. Configurația este convertită automat din JSON în TOML.
## Setări implicite de securitate (acces DM)
ZeroClaw se conectează la suprafețe de mesagerie reale. Tratează DM-urile primite ca intrare neîncredere.
Ghid complet de securitate: [SECURITY.md](SECURITY.md)
Comportament implicit pe toate canalele:
- **Asociere DM** (implicit): expeditorii necunoscuți primesc un cod scurt de asociere și bot-ul nu procesează mesajul lor.
- Aprobă cu: `zeroclaw pairing approve <channel> <code>` (apoi expeditorul este adăugat pe o listă de permisiuni locală).
- DM-urile publice primite necesită un opt-in explicit în `config.toml`.
- Rulează `zeroclaw doctor` pentru a identifica politici DM riscante sau configurate greșit.
**Niveluri de autonomie:**
| Nivel | Comportament |
|-------|----------|
| `ReadOnly` | Agentul poate observa dar nu poate acționa |
| `Supervised` (implicit) | Agentul acționează cu aprobare pentru operațiuni de risc mediu/ridicat |
| `Full` | Agentul acționează autonom în limitele politicii |
**Straturi de sandboxing:** izolarea workspace-ului, blocarea traversării căilor, liste de permisiuni pentru comenzi, căi interzise (`/etc`, `/root`, `~/.ssh`), limitare de rată (acțiuni maxime/oră, limite de cost/zi).
<!-- BEGIN:WHATS_NEW -->
<!-- END:WHATS_NEW -->
### 📢 Anunțuri
Folosește acest panou pentru notificări importante (schimbări care rup compatibilitatea, avize de securitate, ferestre de mentenanță și blocaje de lansare).
| Data (UTC) | Nivel | Notificare | Acțiune |
| ---------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2026-02-19 | _Critic_ | Nu suntem **afiliați** cu `openagen/zeroclaw`, `zeroclaw.org` sau `zeroclaw.net`. Domeniile `zeroclaw.org` și `zeroclaw.net` indică în prezent fork-ul `openagen/zeroclaw`, iar acel domeniu/depozit se dă drept site-ul/proiectul nostru oficial. | Nu aveți încredere în informații, binare, strângeri de fonduri sau anunțuri din acele surse. Folosiți doar [acest depozit](https://github.com/zeroclaw-labs/zeroclaw) și conturile noastre sociale verificate. |
| 2026-02-21 | _Important_ | Site-ul nostru oficial este acum activ: [zeroclawlabs.ai](https://zeroclawlabs.ai). Mulțumim pentru răbdare în timp ce pregăteam lansarea. Încă observăm tentative de uzurpare a identității, așa că **nu** vă alăturați activităților de investiții sau strângere de fonduri care revendică numele ZeroClaw, decât dacă sunt publicate prin canalele noastre oficiale. | Folosiți [acest depozit](https://github.com/zeroclaw-labs/zeroclaw) ca singura sursă de adevăr. Urmăriți [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21), [Facebook (Group)](https://www.facebook.com/groups/zeroclawlabs) și [Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/) pentru actualizări oficiale. |
| 2026-02-19 | _Important_ | Anthropic a actualizat termenii de Autentificare și Utilizare a Credențialelor pe 2026-02-19. Token-urile OAuth Claude Code (Free, Pro, Max) sunt destinate exclusiv Claude Code și Claude.ai; utilizarea token-urilor OAuth din Claude Free/Pro/Max în orice alt produs, instrument sau serviciu (inclusiv Agent SDK) nu este permisă și poate încălca Termenii Serviciului pentru Consumatori. | Vă rugăm să evitați temporar integrările OAuth Claude Code pentru a preveni pierderi potențiale. Clauza originală: [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use). |
## Puncte forte
- **Runtime ușor implicit** — fluxurile comune CLI și de stare rulează într-un plic de memorie de câțiva megabytes pe build-urile de lansare.
- **Implementare eficientă din punct de vedere al costurilor** — proiectat pentru plăci de $10 și instanțe cloud mici, fără dependențe runtime grele.
- **Porniri la rece rapide** — runtime-ul Rust cu binar unic menține pornirea comenzilor și daemon-ului aproape instantanee.
- **Arhitectură portabilă** — un singur binar pe ARM, x86 și RISC-V cu provider-e/canale/instrumente interschimbabile.
- **Gateway local-first** — plan de control unic pentru sesiuni, canale, instrumente, cron, SOP-uri și evenimente.
- **Inbox multi-canal** — WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WebSocket și altele.
- **Orchestrare multi-agent (Hands)** — roiuri de agenți autonomi care rulează programat și devin mai inteligenți în timp.
- **Proceduri Operaționale Standard (SOP-uri)** — automatizare de fluxuri de lucru bazată pe evenimente cu MQTT, webhook, cron și declanșatoare periferice.
- **Panou Web** — UI web React 19 + Vite cu chat în timp real, browser de memorie, editor de configurare, manager cron și inspector de instrumente.
- **Periferice hardware** — ESP32, STM32 Nucleo, Arduino, Raspberry Pi GPIO prin trait-ul `Peripheral`.
- **Instrumente de primă clasă** — shell, file I/O, browser, git, web fetch/search, MCP, Jira, Notion, Google Workspace și 70+ altele.
- **Hook-uri de ciclu de viață** — interceptează și modifică apelurile LLM, execuțiile de instrumente și mesajele la fiecare etapă.
- **Platformă de skill-uri** — skill-uri incluse, comunitare și de workspace cu audit de securitate.
- **Suport tunnel** — Cloudflare, Tailscale, ngrok, OpenVPN și tuneluri personalizate pentru acces la distanță.
### De ce echipele aleg ZeroClaw
- **Ușor implicit:** binar Rust mic, pornire rapidă, amprentă de memorie redusă.
- **Sigur prin design:** asociere, sandboxing strict, liste de permisiuni explicite, limitarea workspace-ului.
- **Complet interschimbabil:** sistemele de bază sunt trait-uri (provider-e, canale, instrumente, memorie, tuneluri).
- **Fără lock-in:** suport provider compatibil OpenAI + endpoint-uri personalizate conectabile.
## Instantaneu Benchmark (ZeroClaw vs OpenClaw, Reproductibil)
Benchmark rapid pe mașină locală (macOS arm64, feb 2026) normalizat pentru hardware edge 0.8GHz.
| | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 |
| ------------------------- | ------------- | -------------- | --------------- | -------------------- |
| **Limbaj** | TypeScript | Python | Go | **Rust** |
| **RAM** | > 1GB | > 100MB | < 10MB | **< 5MB** |
| **Pornire (nucleu 0.8GHz)** | > 500s | > 30s | < 1s | **< 10ms** |
| **Dimensiune binar** | ~28MB (dist) | N/A (Scripts) | ~8MB | **~8.8 MB** |
| **Cost** | Mac Mini $599 | Linux SBC ~$50 | Linux Board $10 | **Orice hardware $10** |
> Note: Rezultatele ZeroClaw sunt măsurate pe build-uri de lansare folosind `/usr/bin/time -l`. OpenClaw necesită runtime Node.js (de obicei ~390MB overhead suplimentar de memorie), în timp ce NanoBot necesită runtime Python. PicoClaw și ZeroClaw sunt binare statice. Cifrele RAM de mai sus sunt memorie runtime; cerințele de compilare în timpul build-ului sunt mai mari.
<p align="center">
<img src="docs/assets/zeroclaw-comparison.jpeg" alt="ZeroClaw vs OpenClaw Comparison" width="800" />
</p>
### Măsurare locală reproductibilă
```bash
cargo build --release
ls -lh target/release/zeroclaw
/usr/bin/time -l target/release/zeroclaw --help
/usr/bin/time -l target/release/zeroclaw status
```
## Tot ce am construit până acum
### Platformă de bază
- Plan de control HTTP/WS/SSE Gateway cu sesiuni, prezență, configurare, cron, webhook-uri, panou web și asociere.
- Suprafață CLI: `gateway`, `agent`, `onboard`, `doctor`, `status`, `service`, `migrate`, `auth`, `cron`, `channel`, `skills`.
- Buclă de orchestrare agent cu dispatch de instrumente, construcție de prompt, clasificare de mesaje și încărcare de memorie.
- Model de sesiune cu aplicarea politicii de securitate, niveluri de autonomie și aprobare condiționată.
- Wrapper provider rezilient cu failover, reîncercare și rutare de modele pe 20+ backend-uri LLM.
### Canale
Canale: WhatsApp (nativ), Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, DingTalk, Lark, Mattermost, Nextcloud Talk, Nostr, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WATI, Mochat, Linq, Notion, WebSocket, ClawdTalk.
Feature-gated: Matrix (`channel-matrix`), Lark (`channel-lark`), Nostr (`channel-nostr`).
### Panou web
Panou web React 19 + Vite 6 + Tailwind CSS 4 servit direct din Gateway:
- **Dashboard** — prezentare generală a sistemului, stare de sănătate, uptime, urmărire costuri
- **Agent Chat** — chat interactiv cu agentul
- **Memory** — navighează și gestionează intrările de memorie
- **Config** — vizualizează și editează configurația
- **Cron** — gestionează sarcinile programate
- **Tools** — navighează instrumentele disponibile
- **Logs** — vizualizează jurnalele de activitate ale agentului
- **Cost** — utilizarea token-urilor și urmărirea costurilor
- **Doctor** — diagnostice de sănătate a sistemului
- **Integrations** — starea integrărilor și configurare
- **Pairing** — gestionarea asocierii dispozitivelor
### Ținte firmware
| Țintă | Platformă | Scop |
|--------|----------|---------|
| ESP32 | Espressif ESP32 | Agent periferic wireless |
| ESP32-UI | ESP32 + Display | Agent cu interfață vizuală |
| STM32 Nucleo | STM32 (ARM Cortex-M) | Periferic industrial |
| Arduino | Arduino | Punte senzor/actuator de bază |
| Uno Q Bridge | Arduino Uno | Punte serială către agent |
### Instrumente + automatizare
- **De bază:** shell, file read/write/edit, operații git, glob search, content search
- **Web:** browser control, web fetch, web search, screenshot, image info, PDF read
- **Integrări:** Jira, Notion, Google Workspace, Microsoft 365, LinkedIn, Composio, Pushover
- **MCP:** Model Context Protocol tool wrapper + deferred tool sets
- **Programare:** cron add/remove/update/run, schedule tool
- **Memorie:** recall, store, forget, knowledge, project intel
- **Avansat:** delegate (agent-la-agent), swarm, model switch/routing, security ops, cloud ops
- **Hardware:** board info, memory map, memory read (feature-gated)
### Runtime + siguranță
- **Niveluri de autonomie:** ReadOnly, Supervised (implicit), Full.
- **Sandboxing:** izolarea workspace-ului, blocarea traversării căilor, liste de permisiuni pentru comenzi, căi interzise, Landlock (Linux), Bubblewrap.
- **Limitare de rată:** acțiuni maxime pe oră, cost maxim pe zi (configurabil).
- **Aprobare condiționată:** aprobare interactivă pentru operațiuni de risc mediu/ridicat.
- **E-stop:** capacitate de oprire de urgență.
- **129+ teste de securitate** în CI automatizat.
### Ops + împachetare
- Panou web servit direct din Gateway.
- Suport tunnel: Cloudflare, Tailscale, ngrok, OpenVPN, comandă personalizată.
- Adaptor runtime Docker pentru execuție containerizată.
- CI/CD: beta (automat la push) → stable (dispatch manual) → Docker, crates.io, Scoop, AUR, Homebrew, tweet.
- Binare pre-construite pentru Linux (x86_64, aarch64, armv7), macOS (x86_64, aarch64), Windows (x86_64).
## Configurare ## Configurare
ZeroClaw folosește un fișier de configurare YAML. În mod implicit, caută `config.yaml`. Minimal `~/.zeroclaw/config.toml`:
```yaml ```toml
# Furnizor implicit default_provider = "anthropic"
provider: anthropic api_key = "sk-ant-..."
# Configurare furnizori
providers:
anthropic:
api_key: ${ANTHROPIC_API_KEY}
model: claude-3-5-sonnet-20241022
openai:
api_key: ${OPENAI_API_KEY}
model: gpt-4o
# Configurare memorie
memory:
backend: sqlite
path: data/memory.db
# Configurare canale
channels:
telegram:
token: ${TELEGRAM_BOT_TOKEN}
``` ```
--- Referință completă de configurare: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md).
### Configurare canale
**Telegram:**
```toml
[channels.telegram]
bot_token = "123456:ABC-DEF..."
```
**Discord:**
```toml
[channels.discord]
token = "your-bot-token"
```
**Slack:**
```toml
[channels.slack]
bot_token = "xoxb-..."
app_token = "xapp-..."
```
**WhatsApp:**
```toml
[channels.whatsapp]
enabled = true
```
**Matrix:**
```toml
[channels.matrix]
homeserver_url = "https://matrix.org"
username = "@bot:matrix.org"
password = "..."
```
**Signal:**
```toml
[channels.signal]
phone_number = "+1234567890"
```
### Configurare tunnel
```toml
[tunnel]
kind = "cloudflare" # sau "tailscale", "ngrok", "openvpn", "custom", "none"
```
Detalii: [Referință canale](docs/reference/api/channels-reference.md) · [Referință configurare](docs/reference/api/config-reference.md)
### Suport runtime (curent)
- **`native`** (implicit) — execuție directă a procesului, cea mai rapidă cale, ideală pentru medii de încredere.
- **`docker`** — izolare completă în container, politici de securitate aplicate, necesită Docker.
Setează `runtime.kind = "docker"` pentru sandboxing strict sau izolare de rețea.
## Autentificare prin abonament (OpenAI Codex / Claude Code / Gemini)
ZeroClaw suportă profiluri de autentificare native abonament (multi-cont, criptate în repaus).
- Fișier de stocare: `~/.zeroclaw/auth-profiles.json`
- Cheie de criptare: `~/.zeroclaw/.secret_key`
- Format id profil: `<provider>:<profile_name>` (exemplu: `openai-codex:work`)
```bash
# OpenAI Codex OAuth (abonament ChatGPT)
zeroclaw auth login --provider openai-codex --device-code
# Gemini OAuth
zeroclaw auth login --provider gemini --profile default
# Anthropic setup-token
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# Verifică / reîmprospătează / schimbă profilul
zeroclaw auth status
zeroclaw auth refresh --provider openai-codex --profile default
zeroclaw auth use --provider openai-codex --profile work
# Rulează agentul cu autentificare prin abonament
zeroclaw agent --provider openai-codex -m "hello"
zeroclaw agent --provider anthropic -m "hello"
```
## Workspace agent + skill-uri
Rădăcina workspace: `~/.zeroclaw/workspace/` (configurabilă prin config).
Fișiere prompt injectate:
- `IDENTITY.md` — personalitatea și rolul agentului
- `USER.md` — contextul și preferințele utilizatorului
- `MEMORY.md` — fapte și lecții pe termen lung
- `AGENTS.md` — convenții de sesiune și reguli de inițializare
- `SOUL.md` — identitate de bază și principii operaționale
Skill-uri: `~/.zeroclaw/workspace/skills/<skill>/SKILL.md` sau `SKILL.toml`.
```bash
# Listează skill-urile instalate
zeroclaw skills list
# Instalează din git
zeroclaw skills install https://github.com/user/my-skill.git
# Audit de securitate înainte de instalare
zeroclaw skills audit https://github.com/user/my-skill.git
# Elimină un skill
zeroclaw skills remove my-skill
```
## Comenzi CLI
```bash
# Gestionarea workspace-ului
zeroclaw onboard # Asistent de configurare ghidată
zeroclaw status # Afișează starea daemon/agent
zeroclaw doctor # Rulează diagnostice de sistem
# Gateway + daemon
zeroclaw gateway # Pornește serverul gateway (127.0.0.1:42617)
zeroclaw daemon # Pornește runtime-ul autonom complet
# Agent
zeroclaw agent # Mod chat interactiv
zeroclaw agent -m "message" # Mod mesaj unic
# Gestionarea serviciilor
zeroclaw service install # Instalează ca serviciu OS (launchd/systemd)
zeroclaw service start|stop|restart|status
# Canale
zeroclaw channel list # Listează canalele configurate
zeroclaw channel doctor # Verifică sănătatea canalelor
zeroclaw channel bind-telegram 123456789
# Cron + programare
zeroclaw cron list # Listează sarcinile programate
zeroclaw cron add "*/5 * * * *" --prompt "Check system health"
zeroclaw cron remove <id>
# Memorie
zeroclaw memory list # Listează intrările de memorie
zeroclaw memory get <key> # Recuperează o memorie
zeroclaw memory stats # Statistici memorie
# Profiluri de autentificare
zeroclaw auth login --provider <name>
zeroclaw auth status
zeroclaw auth use --provider <name> --profile <profile>
# Periferice hardware
zeroclaw hardware discover # Scanează dispozitivele conectate
zeroclaw peripheral list # Listează perifericele conectate
zeroclaw peripheral flash # Încarcă firmware pe dispozitiv
# Migrare
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw
# Completări shell
source <(zeroclaw completions bash)
zeroclaw completions zsh > ~/.zfunc/_zeroclaw
```
Referință completă comenzi: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
<!-- markdownlint-disable MD001 MD024 -->
## Cerințe preliminare
<details>
<summary><strong>Windows</strong></summary>
#### Necesare
1. **Visual Studio Build Tools** (furnizează linker-ul MSVC și Windows SDK):
```powershell
winget install Microsoft.VisualStudio.2022.BuildTools
```
În timpul instalării (sau prin Visual Studio Installer), selectează sarcina de lucru **"Desktop development with C++"**.
2. **Rust toolchain:**
```powershell
winget install Rustlang.Rustup
```
După instalare, deschide un terminal nou și rulează `rustup default stable` pentru a te asigura că toolchain-ul stabil este activ.
3. **Verifică** că ambele funcționează:
```powershell
rustc --version
cargo --version
```
#### Opțional
- **Docker Desktop** — necesar doar dacă folosești [runtime-ul Docker sandboxed](#suport-runtime-curent) (`runtime.kind = "docker"`). Instalează prin `winget install Docker.DockerDesktop`.
</details>
<details>
<summary><strong>Linux / macOS</strong></summary>
#### Necesare
1. **Build essentials:**
- **Linux (Debian/Ubuntu):** `sudo apt install build-essential pkg-config`
- **Linux (Fedora/RHEL):** `sudo dnf group install development-tools && sudo dnf install pkg-config`
- **macOS:** Instalează Xcode Command Line Tools: `xcode-select --install`
2. **Rust toolchain:**
```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
Vezi [rustup.rs](https://rustup.rs) pentru detalii.
3. **Verifică** că ambele funcționează:
```bash
rustc --version
cargo --version
```
#### Instalator cu o singură linie
Sau sări peste pașii de mai sus și instalează totul (dependențe sistem, Rust, ZeroClaw) cu o singură comandă:
```bash
curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash
```
#### Cerințe de resurse pentru compilare
Construirea din sursă necesită mai multe resurse decât rularea binarului rezultat:
| Resursă | Minimum | Recomandat |
| -------------- | ------- | ----------- |
| **RAM + swap** | 2 GB | 4 GB+ |
| **Disc liber** | 6 GB | 10 GB+ |
Dacă gazda ta este sub minimum, folosește binare pre-construite:
```bash
./install.sh --prefer-prebuilt
```
Pentru a impune instalare doar cu binar, fără fallback sursă:
```bash
./install.sh --prebuilt-only
```
#### Opțional
- **Docker** — necesar doar dacă folosești [runtime-ul Docker sandboxed](#suport-runtime-curent) (`runtime.kind = "docker"`). Instalează prin managerul de pachete sau [docker.com](https://docs.docker.com/engine/install/).
> **Notă:** `cargo build --release` implicit folosește `codegen-units=1` pentru a reduce presiunea maximă de compilare. Pentru build-uri mai rapide pe mașini puternice, folosește `cargo build --profile release-fast`.
</details>
<!-- markdownlint-enable MD001 MD024 -->
### Binare pre-construite
Resursele de lansare sunt publicate pentru:
- Linux: `x86_64`, `aarch64`, `armv7`
- macOS: `x86_64`, `aarch64`
- Windows: `x86_64`
Descarcă cele mai recente resurse de la:
<https://github.com/zeroclaw-labs/zeroclaw/releases/latest>
## Documentație ## Documentație
Pentru documentație detaliată, vezi: Folosește-le când ai trecut de fluxul de onboarding și vrei referința mai detaliată.
- [Hub Documentație](docs/README.md) - Începe cu [indexul documentației](docs/README.md) pentru navigare și „ce este unde."
- [Referință Comenzi](docs/commands-reference.md) - Citește [prezentarea arhitecturii](docs/architecture.md) pentru modelul complet al sistemului.
- [Referință Furnizori](docs/providers-reference.md) - Folosește [referința de configurare](docs/reference/api/config-reference.md) când ai nevoie de fiecare cheie și exemplu.
- [Referință Canale](docs/channels-reference.md) - Rulează Gateway-ul conform [runbook-ului operațional](docs/ops/operations-runbook.md).
- [Referință Configurare](docs/config-reference.md) - Urmează [ZeroClaw Onboard](#pornire-rapidă) pentru configurare ghidată.
- Depanează eșecurile comune cu [ghidul de depanare](docs/ops/troubleshooting.md).
- Revizuiește [ghidul de securitate](docs/security/README.md) înainte de a expune ceva.
--- ### Documentație de referință
## Contribuții - Hub documentație: [docs/README.md](docs/README.md)
- TOC documentație unificată: [docs/SUMMARY.md](docs/SUMMARY.md)
- Referință comenzi: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
- Referință configurare: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
- Referință providers: [docs/reference/api/providers-reference.md](docs/reference/api/providers-reference.md)
- Referință canale: [docs/reference/api/channels-reference.md](docs/reference/api/channels-reference.md)
- Runbook operațional: [docs/ops/operations-runbook.md](docs/ops/operations-runbook.md)
- Depanare: [docs/ops/troubleshooting.md](docs/ops/troubleshooting.md)
Contribuțiile sunt binevenite! Te rugăm să citești [Ghidul de Contribuții](CONTRIBUTING.md). ### Documentație de colaborare
- Ghid de contribuție: [CONTRIBUTING.md](CONTRIBUTING.md)
- Politica fluxului de lucru PR: [docs/contributing/pr-workflow.md](docs/contributing/pr-workflow.md)
- Ghid flux de lucru CI: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Playbook recenzent: [docs/contributing/reviewer-playbook.md](docs/contributing/reviewer-playbook.md)
- Politica de divulgare a securității: [SECURITY.md](SECURITY.md)
- Șablon documentație: [docs/contributing/doc-template.md](docs/contributing/doc-template.md)
### Implementare + operațiuni
- Ghid de implementare în rețea: [docs/ops/network-deployment.md](docs/ops/network-deployment.md)
- Playbook proxy agent: [docs/ops/proxy-agent-playbook.md](docs/ops/proxy-agent-playbook.md)
- Ghiduri hardware: [docs/hardware/README.md](docs/hardware/README.md)
## Smooth Crab 🦀
ZeroClaw a fost construit pentru smooth crab 🦀, un asistent AI rapid și eficient. Construit de Argenis De La Rosa și comunitate.
- [zeroclawlabs.ai](https://zeroclawlabs.ai)
- [@zeroclawlabs](https://x.com/zeroclawlabs)
## Susține ZeroClaw
Dacă ZeroClaw te ajută în muncă și vrei să susții dezvoltarea continuă, poți dona aici:
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
### 🙏 Mulțumiri Speciale
Mulțumiri sincere comunităților și instituțiilor care inspiră și alimentează această muncă open-source:
- **Harvard University** — pentru cultivarea curiozității intelectuale și extinderea limitelor posibilului.
- **MIT** — pentru promovarea cunoștințelor deschise, open source și credința că tehnologia ar trebui să fie accesibilă tuturor.
- **Sundai Club** — pentru comunitate, energie și dorința neîncetată de a construi lucruri care contează.
- **Lumea și Dincolo** 🌍✨ — fiecărui contributor, visător și constructor care face din open source o forță a binelui. Aceasta este pentru voi.
Construim deschis pentru că cele mai bune idei vin de peste tot. Dacă citești asta, faci parte din asta. Bine ai venit. 🦀❤️
## Contribuție
Nou la ZeroClaw? Caută probleme etichetate [`good first issue`](https://github.com/zeroclaw-labs/zeroclaw/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) — vezi [Ghidul de Contribuție](CONTRIBUTING.md#first-time-contributors) pentru cum să începi. PR-urile create cu AI/vibe-coded sunt binevenite! 🤖
Vezi [CONTRIBUTING.md](CONTRIBUTING.md) și [CLA.md](docs/contributing/cla.md). Implementează un trait, trimite un PR:
- Ghid flux de lucru CI: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- `Provider` nou → `src/providers/`
- `Channel` nou → `src/channels/`
- `Observer` nou → `src/observability/`
- `Tool` nou → `src/tools/`
- `Memory` nou → `src/memory/`
- `Tunnel` nou → `src/tunnel/`
- `Peripheral` nou → `src/peripherals/`
- `Skill` nou → `~/.zeroclaw/workspace/skills/<name>/`
<!-- BEGIN:RECENT_CONTRIBUTORS -->
<!-- END:RECENT_CONTRIBUTORS -->
## ⚠️ Depozit Oficial & Avertisment de Uzurpare
**Acesta este singurul depozit oficial ZeroClaw:**
> https://github.com/zeroclaw-labs/zeroclaw
Orice alt depozit, organizație, domeniu sau pachet care pretinde a fi „ZeroClaw" sau implică afiliere cu ZeroClaw Labs este **neautorizat și nu este afiliat cu acest proiect**. Fork-urile neautorizate cunoscute vor fi listate în [TRADEMARK.md](docs/maintainers/trademark.md).
Dacă întâmpini uzurpare de identitate sau utilizare abuzivă a mărcii comerciale, te rugăm [deschide o problemă](https://github.com/zeroclaw-labs/zeroclaw/issues).
--- ---
## Licență ## Licență
Acest proiect este licențiat dual: ZeroClaw este dual-licențiat pentru deschidere maximă și protecția contributorilor:
- MIT License | Licență | Caz de utilizare |
- Apache License, versiunea 2.0 |---|---|
| [MIT](LICENSE-MIT) | Open-source, cercetare, academic, utilizare personală |
| [Apache 2.0](LICENSE-APACHE) | Protecție brevete, instituțional, implementare comercială |
Vezi [LICENSE-APACHE](LICENSE-APACHE) și [LICENSE-MIT](LICENSE-MIT) pentru detalii. Poți alege oricare licență. **Contributorii acordă automat drepturi sub ambele** — vezi [CLA.md](docs/contributing/cla.md) pentru acordul complet al contributorului.
### Marcă comercială
Numele și logo-ul **ZeroClaw** sunt mărci comerciale ale ZeroClaw Labs. Această licență nu acordă permisiunea de a le folosi pentru a implica aprobare sau afiliere. Vezi [TRADEMARK.md](docs/maintainers/trademark.md) pentru utilizări permise și interzise.
### Protecții pentru contributori
- **Păstrezi drepturile de autor** ale contribuțiilor tale
- **Acordarea de brevete** (Apache 2.0) te protejează de revendicări de brevete ale altor contributori
- Contribuțiile tale sunt **atribuite permanent** în istoricul commit-urilor și [NOTICE](NOTICE)
- Nu se transferă drepturi de marcă comercială prin contribuție
--- ---
## Comunitate **ZeroClaw** — Zero overhead. Zero compromisuri. Implementează oriunde. Schimbă orice. 🦀
- [Telegram](https://t.me/zeroclawlabs) ## Contributori
- [Facebook Group](https://www.facebook.com/groups/zeroclaw)
- [WeChat Group](https://zeroclawlabs.cn/group.jpg)
--- <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors">
<img src="https://contrib.rocks/image?repo=zeroclaw-labs/zeroclaw" alt="ZeroClaw contributors" />
</a>
## Sponsori Această listă este generată din graficul contributorilor GitHub și se actualizează automat.
Dacă ZeroClaw îți este util, te rugăm să iei în considerare să ne cumperi o cafea: ## Istoricul Stelelor
[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee)](https://buymeacoffee.com/argenistherose) <p align="center">
<a href="https://www.star-history.com/#zeroclaw-labs/zeroclaw&type=date&legend=top-left">
<!-- BEGIN:RECENT_CONTRIBUTORS --> <picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&theme=dark&legend=top-left" />
### 🌟 Recent Contributors (v0.3.1) <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
3 contributors shipped features, fixes, and improvements in this release cycle: </picture>
</a>
- **Argenis** </p>
- **argenis de la rosa**
- **Claude Opus 4.6**
Thank you to everyone who opened issues, reviewed PRs, translated docs, and helped test. Every contribution matters. 🦀
<!-- END:RECENT_CONTRIBUTORS -->

View File

@ -1,24 +1,33 @@
<p align="center"> <p align="center">
<img src="docs/assets/zeroclaw.png" alt="ZeroClaw" width="200" /> <img src="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/docs/assets/zeroclaw-banner.png" alt="ZeroClaw" width="600" />
</p> </p>
<h1 align="center">ZeroClaw 🦀(Русский)</h1> <h1 align="center">🦀 ZeroClaw — Персональный ИИ-ассистент</h1>
<p align="center"> <p align="center">
<strong>Zero overhead. Zero compromise. 100% Rust. 100% Agnostic.</strong> <strong>Нулевые накладные расходы. Нулевые компромиссы. 100% Rust. 100% Агностик.</strong><br>
⚡️ <strong>Работает на оборудовании за $10 с <5МБ ОЗУ: это на 99% меньше памяти, чем OpenClaw, и на 98% дешевле Mac mini!</strong>
</p> </p>
<p align="center"> <p align="center">
<a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a> <a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
<a href="NOTICE"><img src="https://img.shields.io/badge/contributors-27+-green.svg" alt="Contributors" /></a> <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors"><img src="https://img.shields.io/github/contributors/zeroclaw-labs/zeroclaw?color=green" alt="Contributors" /></a>
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a> <a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
<a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a> <a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a>
<a href="https://www.facebook.com/groups/zeroclaw"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a> <a href="https://www.facebook.com/groups/zeroclawlabs"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a>
<a href="https://discord.com/invite/wDshRVqRjx"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://www.instagram.com/therealzeroclaw"><img src="https://img.shields.io/badge/Instagram-%40therealzeroclaw-E4405F?style=flat&logo=instagram&logoColor=white" alt="Instagram: @therealzeroclaw" /></a>
<a href="https://www.tiktok.com/@zeroclawlabs"><img src="https://img.shields.io/badge/TikTok-%40zeroclawlabs-000000?style=flat&logo=tiktok&logoColor=white" alt="TikTok: @zeroclawlabs" /></a>
<a href="https://www.rednote.com/user/profile/69b735e6000000002603927e"><img src="https://img.shields.io/badge/RedNote-Official-FF2442?style=flat" alt="RedNote" /></a>
<a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a> <a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a>
</p> </p>
<p align="center"> <p align="center">
🌐 Языки: Создано студентами и участниками сообществ Harvard, MIT и Sundai.Club.
</p>
<p align="center">
🌐 <strong>Языки:</strong>
<a href="README.md">🇺🇸 English</a> · <a href="README.md">🇺🇸 English</a> ·
<a href="README.zh-CN.md">🇨🇳 简体中文</a> · <a href="README.zh-CN.md">🇨🇳 简体中文</a> ·
<a href="README.ja.md">🇯🇵 日本語</a> · <a href="README.ja.md">🇯🇵 日本語</a> ·
@ -52,85 +61,190 @@
<a href="README.nb.md">🇳🇴 Norsk</a> <a href="README.nb.md">🇳🇴 Norsk</a>
</p> </p>
<p align="center"> ZeroClaw — это персональный ИИ-ассистент, который вы запускаете на своих устройствах. Он отвечает вам в каналах, которые вы уже используете (WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work и другие). У него есть веб-панель для управления в реальном времени, и он может подключаться к аппаратным периферийным устройствам (ESP32, STM32, Arduino, Raspberry Pi). Gateway — это просто панель управления, а продукт — это ассистент.
<a href="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh">Установка в 1 клик</a> |
<a href="docs/setup-guides/README.md">Быстрый старт</a> | Если вам нужен персональный однопользовательский ассистент, который ощущается локальным, быстрым и всегда включённым — это он.
<a href="docs/README.ru.md">Хаб документации</a> |
<a href="docs/SUMMARY.md">TOC docs</a>
</p>
<p align="center"> <p align="center">
<strong>Быстрые маршруты:</strong> <a href="https://zeroclawlabs.ai">Веб-сайт</a> ·
<a href="docs/reference/README.md">Справочники</a> · <a href="docs/README.md">Документация</a> ·
<a href="docs/ops/README.md">Операции</a> · <a href="docs/architecture.md">Архитектура</a> ·
<a href="docs/ops/troubleshooting.md">Диагностика</a> · <a href="#быстрый-старт">Начало работы</a> ·
<a href="docs/security/README.md">Безопасность</a> · <a href="#миграция-с-openclaw">Миграция с OpenClaw</a> ·
<a href="docs/hardware/README.md">Аппаратная часть</a> · <a href="docs/ops/troubleshooting.md">Устранение неполадок</a> ·
<a href="docs/contributing/README.md">Вклад и CI</a> <a href="https://discord.com/invite/wDshRVqRjx">Discord</a>
</p> </p>
> Этот файл — выверенный перевод `README.md` с акцентом на точность и читаемость (не дословный перевод). > **Рекомендуемая настройка:** выполните `zeroclaw onboard` в терминале. ZeroClaw Onboard пошагово проведёт вас через настройку gateway, рабочего пространства, каналов и провайдера. Это рекомендуемый путь настройки, работающий на macOS, Linux и Windows (через WSL2). Новая установка? Начните здесь: [Начало работы](#быстрый-старт)
>
> Технические идентификаторы (команды, ключи конфигурации, API-пути, имена Trait) сохранены на английском. ### Аутентификация по подписке (OAuth)
>
> Последняя синхронизация: **2026-02-19**. - **OpenAI Codex** (подписка ChatGPT)
- **Gemini** (Google OAuth)
- **Anthropic** (API-ключ или токен аутентификации)
Примечание о моделях: хотя поддерживается множество провайдеров/моделей, для лучшего опыта используйте самую мощную модель последнего поколения, доступную вам. См. [Онбординг](#быстрый-старт).
Конфигурация моделей + CLI: [Справочник провайдеров](docs/reference/api/providers-reference.md)
Ротация профилей аутентификации (OAuth vs API-ключи) + переключение при сбое: [Переключение моделей при сбое](docs/reference/api/providers-reference.md)
## Установка (рекомендуется)
Среда выполнения: стабильный набор инструментов Rust. Один бинарный файл, без зависимостей времени выполнения.
### Homebrew (macOS/Linuxbrew)
```bash
brew install zeroclaw
```
### Установка в один клик
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./install.sh
```
`zeroclaw onboard` запускается автоматически после установки для настройки рабочего пространства и провайдера.
## Быстрый старт (TL;DR)
Полное руководство для начинающих (аутентификация, сопряжение, каналы): [Начало работы](docs/setup-guides/one-click-bootstrap.md)
```bash
# Install + onboard
./install.sh --api-key "sk-..." --provider openrouter
# Start the gateway (webhook server + web dashboard)
zeroclaw gateway # default: 127.0.0.1:42617
zeroclaw gateway --port 0 # random port (security hardened)
# Talk to the assistant
zeroclaw agent -m "Hello, ZeroClaw!"
# Interactive mode
zeroclaw agent
# Start full autonomous runtime (gateway + channels + cron + hands)
zeroclaw daemon
# Check status
zeroclaw status
# Run diagnostics
zeroclaw doctor
```
Обновляетесь? Выполните `zeroclaw doctor` после обновления.
### Из исходного кода (для разработки)
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
cargo build --release --locked
cargo install --path . --force --locked
zeroclaw onboard
```
> **Альтернатива для разработки (без глобальной установки):** добавляйте перед командами `cargo run --release --` (пример: `cargo run --release -- status`).
## Миграция с OpenClaw
ZeroClaw может импортировать ваше рабочее пространство, память и конфигурацию OpenClaw:
```bash
# Preview what will be migrated (safe, read-only)
zeroclaw migrate openclaw --dry-run
# Run the migration
zeroclaw migrate openclaw
```
Это переносит ваши записи памяти, файлы рабочего пространства и конфигурацию из `~/.openclaw/` в `~/.zeroclaw/`. Конфигурация автоматически конвертируется из JSON в TOML.
## Настройки безопасности по умолчанию (доступ через ЛС)
ZeroClaw подключается к реальным поверхностям обмена сообщениями. Относитесь к входящим ЛС как к ненадёжному вводу.
Полное руководство по безопасности: [SECURITY.md](SECURITY.md)
Поведение по умолчанию на всех каналах:
- **Сопряжение ЛС** (по умолчанию): неизвестные отправители получают короткий код сопряжения, и бот не обрабатывает их сообщение.
- Одобрение через: `zeroclaw pairing approve <channel> <code>` (затем отправитель добавляется в локальный список разрешённых).
- Публичные входящие ЛС требуют явного включения в `config.toml`.
- Выполните `zeroclaw doctor` для выявления рискованных или неправильно настроенных политик ЛС.
**Уровни автономности:**
| Уровень | Поведение |
|---------|-----------|
| `ReadOnly` | Агент может наблюдать, но не действовать |
| `Supervised` (по умолчанию) | Агент действует с одобрением для операций среднего/высокого риска |
| `Full` | Агент действует автономно в рамках политики |
**Слои изоляции:** изоляция рабочего пространства, блокировка обхода путей, списки разрешённых команд, запрещённые пути (`/etc`, `/root`, `~/.ssh`), ограничение частоты (макс. действий/час, лимиты стоимости/день).
<!-- BEGIN:WHATS_NEW --> <!-- BEGIN:WHATS_NEW -->
### 🚀 What's New in v0.3.1 (March 2026)
| Area | Highlights |
|---|---|
| ci | add Termux (aarch64-linux-android) release target |
<!-- END:WHATS_NEW --> <!-- END:WHATS_NEW -->
## 📢 Доска объявлений ### 📢 Объявления
Публикуйте здесь важные уведомления (breaking changes, security advisories, окна обслуживания и блокеры релиза). Используйте эту доску для важных уведомлений (критические изменения, рекомендации по безопасности, окна обслуживания и блокеры релизов).
| Дата (UTC) | Уровень | Объявление | Действие | | Дата (UTC) | Уровень | Уведомление | Действие |
|---|---|---|---| | ---------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2026-02-19 | _Срочно_ | Мы **не аффилированы** с `openagen/zeroclaw` и `zeroclaw.org`. Домен `zeroclaw.org` сейчас указывает на fork `openagen/zeroclaw`, и этот домен/репозиторий выдают себя за наш официальный сайт и проект. | Не доверяйте информации, бинарникам, сборам средств и «официальным» объявлениям из этих источников. Используйте только [этот репозиторий](https://github.com/zeroclaw-labs/zeroclaw) и наши верифицированные соцсети. | | 2026-02-19 | _Критический_ | Мы **не связаны** с `openagen/zeroclaw`, `zeroclaw.org` или `zeroclaw.net`. Домены `zeroclaw.org` и `zeroclaw.net` в настоящее время указывают на форк `openagen/zeroclaw`, и этот домен/репозиторий выдают себя за наш официальный сайт/проект. | Не доверяйте информации, бинарным файлам, сбору средств или объявлениям из этих источников. Используйте только [этот репозиторий](https://github.com/zeroclaw-labs/zeroclaw) и наши верифицированные аккаунты в социальных сетях. |
| 2026-02-21 | _Важно_ | Наш официальный сайт уже запущен: [zeroclawlabs.ai](https://zeroclawlabs.ai). Спасибо, что дождались запуска. При этом попытки выдавать себя за ZeroClaw продолжаются, поэтому не участвуйте в инвестициях, сборах средств и похожих активностях, если они не подтверждены через наши официальные каналы. | Ориентируйтесь только на [этот репозиторий](https://github.com/zeroclaw-labs/zeroclaw); также следите за [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21), [Telegram (@zeroclawlabs)](https://t.me/zeroclawlabs), [Facebook (группа)](https://www.facebook.com/groups/zeroclaw), [Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/) и [Xiaohongshu](https://www.xiaohongshu.com/user/profile/67cbfc43000000000d008307?xsec_token=AB73VnYnGNx5y36EtnnZfGmAmS-6Wzv8WMuGpfwfkg6Yc%3D&xsec_source=pc_search) для официальных обновлений. | | 2026-02-21 | _Важный_ | Наш официальный сайт теперь доступен: [zeroclawlabs.ai](https://zeroclawlabs.ai). Спасибо за терпение, пока мы готовили запуск. Мы по-прежнему видим попытки имитации, поэтому **не** присоединяйтесь к каким-либо инвестиционным или фандрайзинговым активностям, использующим имя ZeroClaw, если они не опубликованы через наши официальные каналы. | Используйте [этот репозиторий](https://github.com/zeroclaw-labs/zeroclaw) как единственный источник истины. Следите за обновлениями в [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21), [Facebook (Group)](https://www.facebook.com/groups/zeroclawlabs) и [Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/). |
| 2026-02-19 | _Важно_ | Anthropic обновил раздел Authentication and Credential Use 2026-02-19. В нем указано, что OAuth authentication (Free/Pro/Max) предназначена только для Claude Code и Claude.ai; использование OAuth-токенов, полученных через Claude Free/Pro/Max, в любых других продуктах, инструментах или сервисах (включая Agent SDK), не допускается и может считаться нарушением Consumer Terms of Service. | Чтобы избежать потерь, временно не используйте Claude Code OAuth-интеграции. Оригинал: [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use). | | 2026-02-19 | _Важный_ | Anthropic обновила условия Authentication and Credential Use 2026-02-19. Токены Claude Code OAuth (Free, Pro, Max) предназначены исключительно для Claude Code и Claude.ai; использование токенов OAuth от Claude Free/Pro/Max в любом другом продукте, инструменте или сервисе (включая Agent SDK) не разрешено и может нарушать Условия обслуживания потребителей. | Пожалуйста, временно избегайте интеграций Claude Code OAuth для предотвращения потенциальных потерь. Оригинальный пункт: [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use). |
## О проекте ## Основные возможности
ZeroClaw — это производительная и расширяемая инфраструктура автономного AI-агента. ZeroClaw — это **операционная система времени выполнения** для агентных рабочих процессов — инфраструктура, абстрагирующая модели, инструменты, память и выполнение, позволяя создавать агентов один раз и запускать где угодно. - **Лёгкая среда выполнения по умолчанию** — типичные CLI и статусные рабочие процессы выполняются в оболочке памяти в несколько мегабайт на релизных сборках.
- **Экономичное развёртывание** — разработан для плат за $10 и небольших облачных инстансов, без тяжёлых зависимостей среды выполнения.
- **Быстрый холодный старт** — однобинарная среда выполнения Rust обеспечивает почти мгновенный запуск команд и демона.
- **Портативная архитектура** — один бинарный файл для ARM, x86 и RISC-V с заменяемыми провайдерами/каналами/инструментами.
- **Локальный Gateway** — единая панель управления для сессий, каналов, инструментов, cron, SOP и событий.
- **Многоканальный почтовый ящик** — WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WebSocket и другие.
- **Многоагентная оркестрация (Hands)** — автономные рои агентов, работающие по расписанию и становящиеся умнее со временем.
- **Стандартные операционные процедуры (SOPs)** — событийная автоматизация рабочих процессов с MQTT, webhook, cron и триггерами периферийных устройств.
- **Веб-панель** — веб-интерфейс React 19 + Vite с чатом в реальном времени, браузером памяти, редактором конфигурации, менеджером cron и инспектором инструментов.
- **Аппаратные периферийные устройства** — ESP32, STM32 Nucleo, Arduino, Raspberry Pi GPIO через трейт `Peripheral`.
- **Первоклассные инструменты** — shell, файловый I/O, browser, git, web fetch/search, MCP, Jira, Notion, Google Workspace и 70+ других.
- **Хуки жизненного цикла** — перехват и модификация вызовов LLM, выполнения инструментов и сообщений на каждом этапе.
- **Платформа навыков** — встроенные, общественные и навыки рабочего пространства с аудитом безопасности.
- **Поддержка туннелей** — Cloudflare, Tailscale, ngrok, OpenVPN и пользовательские туннели для удалённого доступа.
- Нативно на Rust, единый бинарник, переносимость между ARM / x86 / RISC-V ### Почему команды выбирают ZeroClaw
- Архитектура на Trait (`Provider`, `Channel`, `Tool`, `Memory` и др.)
- Безопасные значения по умолчанию: pairing, явные allowlist, sandbox и scope-ограничения
## Почему выбирают ZeroClaw - **Лёгкий по умолчанию:** маленький бинарный файл Rust, быстрый запуск, малый объём памяти.
- **Безопасный по дизайну:** сопряжение, строгая изоляция, явные списки разрешений, области рабочего пространства.
- **Полностью заменяемый:** основные системы — это трейты (провайдеры, каналы, инструменты, память, туннели).
- **Без привязки к вендору:** поддержка провайдеров, совместимых с OpenAI + подключаемые пользовательские эндпоинты.
- **Лёгкий runtime по умолчанию**: Повседневные CLI-операции и `status` обычно укладываются в несколько МБ памяти. ## Снимок бенчмарков (ZeroClaw vs OpenClaw, воспроизводимый)
- **Оптимизирован для недорогих сред**: Подходит для бюджетных плат и небольших cloud-инстансов без тяжёлой runtime-обвязки.
- **Быстрый cold start**: Архитектура одного Rust-бинарника ускоряет запуск основных команд и daemon-режима.
- **Портативная модель деплоя**: Единый подход для ARM / x86 / RISC-V и возможность менять providers/channels/tools.
## Снимок бенчмарка (ZeroClaw vs OpenClaw, воспроизводимо) Быстрый бенчмарк на локальной машине (macOS arm64, февраль 2026), нормализованный для edge-оборудования на 0.8 ГГц.
Ниже — быстрый локальный сравнительный срез (macOS arm64, февраль 2026), нормализованный под 0.8GHz edge CPU. | | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 |
| ------------------------- | ------------- | -------------- | --------------- | -------------------- |
| **Язык** | TypeScript | Python | Go | **Rust** |
| **ОЗУ** | > 1GB | > 100MB | < 10MB | **< 5MB** |
| **Запуск (ядро 0.8 ГГц)** | > 500s | > 30s | < 1s | **< 10ms** |
| **Размер бинарного файла** | ~28MB (dist) | N/A (Scripts) | ~8MB | **~8.8 MB** |
| **Стоимость** | Mac Mini $599 | Linux SBC ~$50 | Linux Board $10 | **Любое оборудование $10** |
| | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 | > Примечания: результаты ZeroClaw измерены на релизных сборках с использованием `/usr/bin/time -l`. OpenClaw требует среду выполнения Node.js (обычно ~390 МБ дополнительных накладных расходов памяти), а NanoBot требует среду выполнения Python. PicoClaw и ZeroClaw — статические бинарные файлы. Показатели ОЗУ выше — это память времени выполнения; требования к компиляции при сборке выше.
|---|---|---|---|---|
| **Язык** | TypeScript | Python | Go | **Rust** |
| **RAM** | > 1GB | > 100MB | < 10MB | **< 5MB** |
| **Старт (ядро 0.8GHz)** | > 500s | > 30s | < 1s | **< 10ms** |
| **Размер бинарника** | ~28MB (dist) | N/A (скрипты) | ~8MB | **~8.8 MB** |
| **Стоимость** | Mac Mini $599 | Linux SBC ~$50 | Linux-плата $10 | **Любое железо за $10** |
> Примечание: результаты ZeroClaw получены на release-сборке с помощью `/usr/bin/time -l`. OpenClaw требует Node.js runtime; только этот runtime обычно добавляет около 390MB дополнительного потребления памяти. NanoBot требует Python runtime. PicoClaw и ZeroClaw — статические бинарники.
<p align="center"> <p align="center">
<img src="docs/assets/zeroclaw-comparison.jpeg" alt="Сравнение ZeroClaw и OpenClaw" width="800" /> <img src="docs/assets/zeroclaw-comparison.jpeg" alt="ZeroClaw vs OpenClaw Comparison" width="800" />
</p> </p>
### Локально воспроизводимое измерение ### Воспроизводимое локальное измерение
Метрики могут меняться вместе с кодом и toolchain, поэтому проверяйте результаты в своей среде:
```bash ```bash
cargo build --release cargo build --release
@ -140,115 +254,502 @@ ls -lh target/release/zeroclaw
/usr/bin/time -l target/release/zeroclaw status /usr/bin/time -l target/release/zeroclaw status
``` ```
Текущие примерные значения из README (macOS arm64, 2026-02-18): ## Всё, что мы построили
- Размер release-бинарника: `8.8M` ### Основная платформа
- `zeroclaw --help`: ~`0.02s`, пик памяти ~`3.9MB`
- `zeroclaw status`: ~`0.01s`, пик памяти ~`4.1MB`
## Установка в 1 клик - Gateway HTTP/WS/SSE панель управления с сессиями, присутствием, конфигурацией, cron, вебхуками, веб-панелью и сопряжением.
- CLI поверхность: `gateway`, `agent`, `onboard`, `doctor`, `status`, `service`, `migrate`, `auth`, `cron`, `channel`, `skills`.
- Цикл оркестрации агента с диспетчеризацией инструментов, построением промптов, классификацией сообщений и загрузкой памяти.
- Модель сессий с применением политики безопасности, уровнями автономности и шлюзом одобрения.
- Устойчивая обёртка провайдера с переключением при сбое, повторными попытками и маршрутизацией моделей через 20+ бэкендов LLM.
```bash ### Каналы
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw Каналы: WhatsApp (нативный), Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, DingTalk, Lark, Mattermost, Nextcloud Talk, Nostr, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WATI, Mochat, Linq, Notion, WebSocket, ClawdTalk.
./install.sh
За feature-флагами: Matrix (`channel-matrix`), Lark (`channel-lark`), Nostr (`channel-nostr`).
### Веб-панель
Веб-панель React 19 + Vite 6 + Tailwind CSS 4, подаваемая непосредственно из Gateway:
- **Панель управления** — обзор системы, состояние здоровья, время безотказной работы, отслеживание стоимости
- **Чат с агентом** — интерактивный чат с агентом
- **Память** — просмотр и управление записями памяти
- **Конфигурация** — просмотр и редактирование конфигурации
- **Cron** — управление запланированными задачами
- **Инструменты** — просмотр доступных инструментов
- **Логи** — просмотр журналов активности агента
- **Стоимость** — использование токенов и отслеживание стоимости
- **Доктор** — диагностика здоровья системы
- **Интеграции** — статус интеграций и настройка
- **Сопряжение** — управление сопряжением устройств
### Целевые прошивки
| Цель | Платформа | Назначение |
|--------|----------|---------|
| ESP32 | Espressif ESP32 | Беспроводной периферийный агент |
| ESP32-UI | ESP32 + Display | Агент с визуальным интерфейсом |
| STM32 Nucleo | STM32 (ARM Cortex-M) | Промышленное периферийное устройство |
| Arduino | Arduino | Базовый мост датчик/актуатор |
| Uno Q Bridge | Arduino Uno | Последовательный мост к агенту |
### Инструменты + автоматизация
- **Основные:** shell, чтение/запись/редактирование файлов, операции git, поиск glob, поиск по содержимому
- **Веб:** управление браузером, web fetch, web search, скриншоты, информация об изображении, чтение PDF
- **Интеграции:** Jira, Notion, Google Workspace, Microsoft 365, LinkedIn, Composio, Pushover
- **MCP:** обёртка инструментов Model Context Protocol + отложенные наборы инструментов
- **Планирование:** cron add/remove/update/run, инструмент расписания
- **Память:** recall, store, forget, knowledge, project intel
- **Продвинутые:** delegate (агент-агенту), swarm, переключение/маршрутизация моделей, операции безопасности, облачные операции
- **Оборудование:** информация о плате, карта памяти, чтение памяти (за feature-флагом)
### Среда выполнения + безопасность
- **Уровни автономности:** ReadOnly, Supervised (по умолчанию), Full.
- **Изоляция:** изоляция рабочего пространства, блокировка обхода путей, списки разрешённых команд, запрещённые пути, Landlock (Linux), Bubblewrap.
- **Ограничение частоты:** макс. действий в час, макс. стоимость в день (настраиваемые).
- **Шлюз одобрения:** интерактивное одобрение для операций среднего/высокого риска.
- **Аварийная остановка:** возможность экстренного отключения.
- **129+ тестов безопасности** в автоматизированном CI.
### Операции + упаковка
- Веб-панель подаётся непосредственно из Gateway.
- Поддержка туннелей: Cloudflare, Tailscale, ngrok, OpenVPN, пользовательская команда.
- Docker-адаптер среды выполнения для контейнеризованного выполнения.
- CI/CD: бета (авто при push) → стабильный (ручной запуск) → Docker, crates.io, Scoop, AUR, Homebrew, твит.
- Предсобранные бинарные файлы для Linux (x86_64, aarch64, armv7), macOS (x86_64, aarch64), Windows (x86_64).
## Конфигурация
Минимальный `~/.zeroclaw/config.toml`:
```toml
default_provider = "anthropic"
api_key = "sk-ant-..."
``` ```
Для полной инициализации окружения: `./install.sh --install-system-deps --install-rust` (для системных пакетов может потребоваться `sudo`). Полный справочник конфигурации: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md).
Подробности: [`docs/setup-guides/one-click-bootstrap.md`](docs/setup-guides/one-click-bootstrap.md). ### Конфигурация каналов
## Быстрый старт **Telegram:**
```toml
### Homebrew (macOS/Linuxbrew) [channels.telegram]
bot_token = "123456:ABC-DEF..."
```bash
brew install zeroclaw
``` ```
```bash **Discord:**
git clone https://github.com/zeroclaw-labs/zeroclaw.git ```toml
cd zeroclaw [channels.discord]
cargo build --release --locked token = "your-bot-token"
cargo install --path . --force --locked
zeroclaw onboard --api-key sk-... --provider openrouter
zeroclaw onboard
zeroclaw agent -m "Hello, ZeroClaw!"
# default: 127.0.0.1:42617
zeroclaw gateway
zeroclaw daemon
``` ```
## Subscription Auth (OpenAI Codex / Claude Code) **Slack:**
```toml
[channels.slack]
bot_token = "xoxb-..."
app_token = "xapp-..."
```
ZeroClaw поддерживает нативные профили авторизации на основе подписки (мультиаккаунт, шифрование при хранении). **WhatsApp:**
```toml
[channels.whatsapp]
enabled = true
```
- Файл хранения: `~/.zeroclaw/auth-profiles.json` **Matrix:**
```toml
[channels.matrix]
homeserver_url = "https://matrix.org"
username = "@bot:matrix.org"
password = "..."
```
**Signal:**
```toml
[channels.signal]
phone_number = "+1234567890"
```
### Конфигурация туннелей
```toml
[tunnel]
kind = "cloudflare" # or "tailscale", "ngrok", "openvpn", "custom", "none"
```
Подробности: [Справочник каналов](docs/reference/api/channels-reference.md) · [Справочник конфигурации](docs/reference/api/config-reference.md)
### Поддержка среды выполнения (текущая)
- **`native`** (по умолчанию) — прямое выполнение процесса, самый быстрый путь, идеально для доверенных сред.
- **`docker`** — полная контейнерная изоляция, принудительные политики безопасности, требуется Docker.
Установите `runtime.kind = "docker"` для строгой изоляции или сетевой изоляции.
## Аутентификация по подписке (OpenAI Codex / Claude Code / Gemini)
ZeroClaw поддерживает нативные профили аутентификации по подписке (мультиаккаунт, шифрование в состоянии покоя).
- Файл хранилища: `~/.zeroclaw/auth-profiles.json`
- Ключ шифрования: `~/.zeroclaw/.secret_key` - Ключ шифрования: `~/.zeroclaw/.secret_key`
- Формат Profile ID: `<provider>:<profile_name>` (пример: `openai-codex:work`) - Формат id профиля: `<provider>:<profile_name>` (пример: `openai-codex:work`)
OpenAI Codex OAuth (подписка ChatGPT):
```bash ```bash
# Рекомендуется для серверов/headless-окружений # OpenAI Codex OAuth (ChatGPT subscription)
zeroclaw auth login --provider openai-codex --device-code zeroclaw auth login --provider openai-codex --device-code
# Браузерный/callback-поток с paste-фолбэком # Gemini OAuth
zeroclaw auth login --provider openai-codex --profile default zeroclaw auth login --provider gemini --profile default
zeroclaw auth paste-redirect --provider openai-codex --profile default
# Проверка / обновление / переключение профиля # Anthropic setup-token
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# Check / refresh / switch profile
zeroclaw auth status zeroclaw auth status
zeroclaw auth refresh --provider openai-codex --profile default zeroclaw auth refresh --provider openai-codex --profile default
zeroclaw auth use --provider openai-codex --profile work zeroclaw auth use --provider openai-codex --profile work
```
Claude Code / Anthropic setup-token: # Run the agent with subscription auth
```bash
# Вставка subscription/setup token (режим Authorization header)
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# Команда-алиас
zeroclaw auth setup-token --provider anthropic --profile default
```
Запуск agent с subscription auth:
```bash
zeroclaw agent --provider openai-codex -m "hello" zeroclaw agent --provider openai-codex -m "hello"
zeroclaw agent --provider openai-codex --auth-profile openai-codex:work -m "hello"
# Anthropic поддерживает и API key, и auth token через переменные окружения:
# ANTHROPIC_AUTH_TOKEN, ANTHROPIC_OAUTH_TOKEN, ANTHROPIC_API_KEY
zeroclaw agent --provider anthropic -m "hello" zeroclaw agent --provider anthropic -m "hello"
``` ```
## Вклад и лицензия ## Рабочее пространство агента + навыки
- Contribution guide: [`CONTRIBUTING.md`](CONTRIBUTING.md) Корень рабочего пространства: `~/.zeroclaw/workspace/` (настраивается через конфигурацию).
- PR workflow: [`docs/contributing/pr-workflow.md`](docs/contributing/pr-workflow.md)
- Reviewer playbook: [`docs/contributing/reviewer-playbook.md`](docs/contributing/reviewer-playbook.md) Внедряемые файлы промптов:
- License: MIT or Apache 2.0 ([`LICENSE-MIT`](LICENSE-MIT), [`LICENSE-APACHE`](LICENSE-APACHE), [`NOTICE`](NOTICE)) - `IDENTITY.md` — личность и роль агента
- `USER.md` — контекст и предпочтения пользователя
- `MEMORY.md` — долгосрочные факты и уроки
- `AGENTS.md` — соглашения сессий и правила инициализации
- `SOUL.md` — основная идентичность и принципы работы
Навыки: `~/.zeroclaw/workspace/skills/<skill>/SKILL.md` или `SKILL.toml`.
```bash
# List installed skills
zeroclaw skills list
# Install from git
zeroclaw skills install https://github.com/user/my-skill.git
# Security audit before install
zeroclaw skills audit https://github.com/user/my-skill.git
# Remove a skill
zeroclaw skills remove my-skill
```
## Команды CLI
```bash
# Workspace management
zeroclaw onboard # Guided setup wizard
zeroclaw status # Show daemon/agent status
zeroclaw doctor # Run system diagnostics
# Gateway + daemon
zeroclaw gateway # Start gateway server (127.0.0.1:42617)
zeroclaw daemon # Start full autonomous runtime
# Agent
zeroclaw agent # Interactive chat mode
zeroclaw agent -m "message" # Single message mode
# Service management
zeroclaw service install # Install as OS service (launchd/systemd)
zeroclaw service start|stop|restart|status
# Channels
zeroclaw channel list # List configured channels
zeroclaw channel doctor # Check channel health
zeroclaw channel bind-telegram 123456789
# Cron + scheduling
zeroclaw cron list # List scheduled jobs
zeroclaw cron add "*/5 * * * *" --prompt "Check system health"
zeroclaw cron remove <id>
# Memory
zeroclaw memory list # List memory entries
zeroclaw memory get <key> # Retrieve a memory
zeroclaw memory stats # Memory statistics
# Auth profiles
zeroclaw auth login --provider <name>
zeroclaw auth status
zeroclaw auth use --provider <name> --profile <profile>
# Hardware peripherals
zeroclaw hardware discover # Scan for connected devices
zeroclaw peripheral list # List connected peripherals
zeroclaw peripheral flash # Flash firmware to device
# Migration
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw
# Shell completions
source <(zeroclaw completions bash)
zeroclaw completions zsh > ~/.zfunc/_zeroclaw
```
Полный справочник команд: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
<!-- markdownlint-disable MD001 MD024 -->
## Предварительные требования
<details>
<summary><strong>Windows</strong></summary>
#### Обязательные
1. **Visual Studio Build Tools** (предоставляет линкер MSVC и Windows SDK):
```powershell
winget install Microsoft.VisualStudio.2022.BuildTools
```
Во время установки (или через Visual Studio Installer) выберите рабочую нагрузку **"Desktop development with C++"**.
2. **Набор инструментов Rust:**
```powershell
winget install Rustlang.Rustup
```
После установки откройте новый терминал и выполните `rustup default stable`, чтобы убедиться, что стабильный набор инструментов активен.
3. **Проверьте**, что оба работают:
```powershell
rustc --version
cargo --version
```
#### Необязательные
- **Docker Desktop** — требуется только при использовании [изолированной среды выполнения Docker](#поддержка-среды-выполнения-текущая) (`runtime.kind = "docker"`). Установите через `winget install Docker.DockerDesktop`.
</details>
<details>
<summary><strong>Linux / macOS</strong></summary>
#### Обязательные
1. **Средства сборки:**
- **Linux (Debian/Ubuntu):** `sudo apt install build-essential pkg-config`
- **Linux (Fedora/RHEL):** `sudo dnf group install development-tools && sudo dnf install pkg-config`
- **macOS:** Установите Xcode Command Line Tools: `xcode-select --install`
2. **Набор инструментов Rust:**
```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
Подробности на [rustup.rs](https://rustup.rs).
3. **Проверьте**, что оба работают:
```bash
rustc --version
cargo --version
```
#### Однострочный установщик
Или пропустите шаги выше и установите всё (системные зависимости, Rust, ZeroClaw) одной командой:
```bash
curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash
```
#### Требования к ресурсам для компиляции
Сборка из исходного кода требует больше ресурсов, чем запуск результирующего бинарного файла:
| Ресурс | Минимум | Рекомендуемый |
| -------------- | ------- | ----------- |
| **ОЗУ + swap** | 2 GB | 4 GB+ |
| **Свободное место на диске** | 6 GB | 10 GB+ |
Если ваш хост ниже минимума, используйте предсобранные бинарные файлы:
```bash
./install.sh --prefer-prebuilt
```
Чтобы требовать установку только бинарного файла без сборки из исходников:
```bash
./install.sh --prebuilt-only
```
#### Необязательные
- **Docker** — требуется только при использовании [изолированной среды выполнения Docker](#поддержка-среды-выполнения-текущая) (`runtime.kind = "docker"`). Установите через менеджер пакетов или [docker.com](https://docs.docker.com/engine/install/).
> **Примечание:** По умолчанию `cargo build --release` использует `codegen-units=1` для снижения пиковой нагрузки при компиляции. Для более быстрой сборки на мощных машинах используйте `cargo build --profile release-fast`.
</details>
<!-- markdownlint-enable MD001 MD024 -->
### Предсобранные бинарные файлы
Артефакты релизов публикуются для:
- Linux: `x86_64`, `aarch64`, `armv7`
- macOS: `x86_64`, `aarch64`
- Windows: `x86_64`
Скачайте последние артефакты:
<https://github.com/zeroclaw-labs/zeroclaw/releases/latest>
## Документация
Используйте это, когда вы прошли онбординг и хотите более глубокий справочник.
- Начните с [индекса документации](docs/README.md) для навигации и «что где».
- Прочитайте [обзор архитектуры](docs/architecture.md) для полной модели системы.
- Используйте [справочник конфигурации](docs/reference/api/config-reference.md), когда вам нужен каждый ключ и пример.
- Управляйте Gateway по инструкции с [операционным руководством](docs/ops/operations-runbook.md).
- Следуйте [ZeroClaw Onboard](#быстрый-старт) для управляемой настройки.
- Устраняйте типичные сбои с помощью [руководства по устранению неполадок](docs/ops/troubleshooting.md).
- Ознакомьтесь с [руководством по безопасности](docs/security/README.md) перед открытием чего-либо.
### Справочная документация
- Хаб документации: [docs/README.md](docs/README.md)
- Единое оглавление: [docs/SUMMARY.md](docs/SUMMARY.md)
- Справочник команд: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
- Справочник конфигурации: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
- Справочник провайдеров: [docs/reference/api/providers-reference.md](docs/reference/api/providers-reference.md)
- Справочник каналов: [docs/reference/api/channels-reference.md](docs/reference/api/channels-reference.md)
- Операционное руководство: [docs/ops/operations-runbook.md](docs/ops/operations-runbook.md)
- Устранение неполадок: [docs/ops/troubleshooting.md](docs/ops/troubleshooting.md)
### Документация по сотрудничеству
- Руководство по участию: [CONTRIBUTING.md](CONTRIBUTING.md)
- Политика рабочего процесса PR: [docs/contributing/pr-workflow.md](docs/contributing/pr-workflow.md)
- Руководство по CI-процессу: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Руководство рецензента: [docs/contributing/reviewer-playbook.md](docs/contributing/reviewer-playbook.md)
- Политика раскрытия уязвимостей: [SECURITY.md](SECURITY.md)
- Шаблон документации: [docs/contributing/doc-template.md](docs/contributing/doc-template.md)
### Развёртывание + операции
- Руководство по сетевому развёртыванию: [docs/ops/network-deployment.md](docs/ops/network-deployment.md)
- Руководство по прокси-агенту: [docs/ops/proxy-agent-playbook.md](docs/ops/proxy-agent-playbook.md)
- Руководства по оборудованию: [docs/hardware/README.md](docs/hardware/README.md)
## Smooth Crab 🦀
ZeroClaw был создан для smooth crab 🦀 — быстрого и эффективного ИИ-ассистента. Создан Argenis De La Rosa и сообществом.
- [zeroclawlabs.ai](https://zeroclawlabs.ai)
- [@zeroclawlabs](https://x.com/zeroclawlabs)
## Поддержите ZeroClaw
Если ZeroClaw помогает вашей работе и вы хотите поддержать дальнейшую разработку, вы можете пожертвовать здесь:
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
### 🙏 Особая благодарность
Сердечная благодарность сообществам и институтам, которые вдохновляют и питают эту работу с открытым исходным кодом:
- **Harvard University** — за развитие интеллектуального любопытства и расширение границ возможного.
- **MIT** — за продвижение открытых знаний, открытого кода и веры в то, что технологии должны быть доступны каждому.
- **Sundai Club** — за сообщество, энергию и неустанное стремление создавать вещи, которые имеют значение.
- **Мир и далее** 🌍✨ — каждому участнику, мечтателю и создателю, делающему открытый код силой добра. Это для вас.
Мы строим открыто, потому что лучшие идеи приходят отовсюду. Если вы это читаете, вы часть этого. Добро пожаловать. 🦀❤️
## Участие
Новичок в ZeroClaw? Ищите задачи с меткой [`good first issue`](https://github.com/zeroclaw-labs/zeroclaw/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) — см. наше [Руководство по участию](CONTRIBUTING.md#first-time-contributors) для начала. AI/vibe-coded PR приветствуются! 🤖
См. [CONTRIBUTING.md](CONTRIBUTING.md) и [CLA.md](docs/contributing/cla.md). Реализуйте трейт, отправьте PR:
- Руководство по CI-процессу: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Новый `Provider``src/providers/`
- Новый `Channel``src/channels/`
- Новый `Observer``src/observability/`
- Новый `Tool``src/tools/`
- Новый `Memory``src/memory/`
- Новый `Tunnel``src/tunnel/`
- Новый `Peripheral``src/peripherals/`
- Новый `Skill``~/.zeroclaw/workspace/skills/<name>/`
<!-- BEGIN:RECENT_CONTRIBUTORS --> <!-- BEGIN:RECENT_CONTRIBUTORS -->
### 🌟 Recent Contributors (v0.3.1)
3 contributors shipped features, fixes, and improvements in this release cycle:
- **Argenis**
- **argenis de la rosa**
- **Claude Opus 4.6**
Thank you to everyone who opened issues, reviewed PRs, translated docs, and helped test. Every contribution matters. 🦀
<!-- END:RECENT_CONTRIBUTORS --> <!-- END:RECENT_CONTRIBUTORS -->
## ⚠️ Официальный репозиторий и предупреждение об имитации
**Это единственный официальный репозиторий ZeroClaw:**
> https://github.com/zeroclaw-labs/zeroclaw
Любой другой репозиторий, организация, домен или пакет, претендующий на звание «ZeroClaw» или подразумевающий связь с ZeroClaw Labs, является **неавторизованным и не связанным с этим проектом**. Известные неавторизованные форки будут перечислены в [TRADEMARK.md](docs/maintainers/trademark.md).
Если вы столкнётесь с имитацией или неправомерным использованием товарного знака, пожалуйста, [откройте issue](https://github.com/zeroclaw-labs/zeroclaw/issues).
--- ---
Для полной и исчерпывающей информации (архитектура, все команды, API, разработка) используйте основной английский документ: [`README.md`](README.md). ## Лицензия
ZeroClaw распространяется под двойной лицензией для максимальной открытости и защиты участников:
| Лицензия | Случай использования |
|---|---|
| [MIT](LICENSE-MIT) | Открытый код, исследования, академическое, личное использование |
| [Apache 2.0](LICENSE-APACHE) | Патентная защита, институциональное, коммерческое развёртывание |
Вы можете выбрать любую лицензию. **Участники автоматически предоставляют права по обеим** — см. [CLA.md](docs/contributing/cla.md) для полного соглашения участника.
### Товарный знак
Название и логотип **ZeroClaw** являются товарными знаками ZeroClaw Labs. Эта лицензия не предоставляет разрешения на их использование для подразумевания одобрения или принадлежности. См. [TRADEMARK.md](docs/maintainers/trademark.md) для разрешённых и запрещённых использований.
### Защита участников
- Вы **сохраняете авторские права** на свои вклады
- **Патентное предоставление** (Apache 2.0) защищает вас от патентных претензий других участников
- Ваши вклады **постоянно атрибутированы** в истории коммитов и [NOTICE](NOTICE)
- Никакие права на товарный знак не передаются при участии
---
**ZeroClaw** — Нулевые накладные расходы. Нулевые компромиссы. Развёртывайте где угодно. Заменяйте что угодно. 🦀
## Участники
<a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors">
<img src="https://contrib.rocks/image?repo=zeroclaw-labs/zeroclaw" alt="ZeroClaw contributors" />
</a>
Этот список генерируется из графа участников GitHub и обновляется автоматически.
## История звёзд
<p align="center">
<a href="https://www.star-history.com/#zeroclaw-labs/zeroclaw&type=date&legend=top-left">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&theme=dark&legend=top-left" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
</picture>
</a>
</p>

View File

@ -1,23 +1,29 @@
<p align="center"> <p align="center">
<img src="zeroclaw.png" alt="ZeroClaw" width="200" /> <img src="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/docs/assets/zeroclaw-banner.png" alt="ZeroClaw" width="600" />
</p> </p>
<h1 align="center">ZeroClaw 🦀</h1> <h1 align="center">🦀 ZeroClaw — Personlig AI-assistent</h1>
<p align="center"> <p align="center">
<strong>Noll overhead. Noll kompromiss. 100% Rust. 100% Agnostisk.</strong><br> <strong>Noll overhead. Noll kompromiss. 100% Rust. 100% Agnostisk.</strong><br>
⚡️ <strong>Kör på $10 hårdvara med <5MB RAM: Det är 99% mindre minne än OpenClaw och 98% billigare än en Mac mini!</strong> ⚡️ <strong>Körs på $10-hårdvara med <5MB RAM: Det är 99% mindre minne än OpenClaw och 98% billigare än en Mac mini!</strong>
</p> </p>
<p align="center"> <p align="center">
<a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a> <a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
<a href="NOTICE"><img src="https://img.shields.io/badge/contributors-27+-green.svg" alt="Contributors" /></a> <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors"><img src="https://img.shields.io/github/contributors/zeroclaw-labs/zeroclaw?color=green" alt="Contributors" /></a>
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a> <a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
<a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a> <a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a>
<a href="https://zeroclawlabs.cn/group.jpg"><img src="https://img.shields.io/badge/WeChat-Group-B7D7A8?logo=wechat&logoColor=white" alt="WeChat Group" /></a> <a href="https://www.facebook.com/groups/zeroclawlabs"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a>
<a href="https://www.xiaohongshu.com/user/profile/67cbfc43000000000d008307?xsec_token=AB73VnYnGNx5y36EtnnZfGmAmS-6Wzv8WMuGpfwfkg6Yc%3D&xsec_source=pc_search"><img src="https://img.shields.io/badge/Xiaohongshu-Official-FF2442?style=flat" alt="Xiaohongshu: Official" /></a> <a href="https://discord.com/invite/wDshRVqRjx"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://t.me/zeroclawlabs"><img src="https://img.shields.io/badge/Telegram-%40zeroclawlabs-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @zeroclawlabs" /></a> <a href="https://www.instagram.com/therealzeroclaw"><img src="https://img.shields.io/badge/Instagram-%40therealzeroclaw-E4405F?style=flat&logo=instagram&logoColor=white" alt="Instagram: @therealzeroclaw" /></a>
<a href="https://www.facebook.com/groups/zeroclaw"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a> <a href="https://www.tiktok.com/@zeroclawlabs"><img src="https://img.shields.io/badge/TikTok-%40zeroclawlabs-000000?style=flat&logo=tiktok&logoColor=white" alt="TikTok: @zeroclawlabs" /></a>
<a href="https://www.rednote.com/user/profile/69b735e6000000002603927e"><img src="https://img.shields.io/badge/RedNote-Official-FF2442?style=flat" alt="RedNote" /></a>
<a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a>
</p>
<p align="center">
Byggt av studenter och medlemmar i Harvard-, MIT- och Sundai.Club-gemenskaperna.
</p> </p>
<p align="center"> <p align="center">
@ -55,149 +61,695 @@
<a href="README.nb.md">🇳🇴 Norsk</a> <a href="README.nb.md">🇳🇴 Norsk</a>
</p> </p>
--- ZeroClaw är en personlig AI-assistent som du kör på dina egna enheter. Den svarar dig via de kanaler du redan använder (WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work med flera). Den har en webbpanel för realtidskontroll och kan ansluta till hårdvaruperiferienheter (ESP32, STM32, Arduino, Raspberry Pi). Gateway är bara kontrollplanet — produkten är assistenten.
<!-- BEGIN:WHATS_NEW --> Om du vill ha en personlig, enanvändarassistent som känns lokal, snabb och alltid tillgänglig, är det här lösningen.
### 🚀 What's New in v0.3.1 (March 2026) <p align="center">
<a href="https://zeroclawlabs.ai">Webbplats</a> ·
<a href="docs/README.md">Dokumentation</a> ·
<a href="docs/architecture.md">Arkitektur</a> ·
<a href="#snabbstart">Kom igång</a> ·
<a href="#migrera-från-openclaw">Migrera från OpenClaw</a> ·
<a href="docs/ops/troubleshooting.md">Felsökning</a> ·
<a href="https://discord.com/invite/wDshRVqRjx">Discord</a>
</p>
| Area | Highlights | > **Rekommenderad konfiguration:** kör `zeroclaw onboard` i din terminal. ZeroClaw Onboard guidar dig steg för steg genom att konfigurera gateway, arbetsyta, kanaler och leverantör. Det är den rekommenderade installationsvägen och fungerar på macOS, Linux och Windows (via WSL2). Ny installation? Börja här: [Kom igång](#snabbstart)
|---|---|
| ci | add Termux (aarch64-linux-android) release target |
<!-- END:WHATS_NEW --> ### Prenumerationsautentisering (OAuth)
## Vad är ZeroClaw? - **OpenAI Codex** (ChatGPT-prenumeration)
- **Gemini** (Google OAuth)
- **Anthropic** (API-nyckel eller autentiseringstoken)
ZeroClaw är en lättvikts, föränderlig och utökningsbar AI-assistent-infrastruktur byggd i Rust. Den ansluter olika LLM-leverantörer (Anthropic, OpenAI, Google, Ollama, etc.) via ett enhetligt gränssnitt och stöder flera kanaler (Telegram, Matrix, CLI, etc.). Modellnotering: även om många leverantörer/modeller stöds, använd den starkaste senaste generationens modell som är tillgänglig för dig för bästa upplevelse. Se [Onboarding](#snabbstart).
### Huvudfunktioner Modellkonfiguration + CLI: [Leverantörsreferens](docs/reference/api/providers-reference.md)
Autentiseringsprofil-rotation (OAuth vs API-nycklar) + failover: [Modell-failover](docs/reference/api/providers-reference.md)
- **🦀 Skrivet i Rust**: Hög prestanda, minnessäkerhet och nollkostnadsabstraktioner ## Installation (rekommenderad)
- **🔌 Leverantörsagnostisk**: Stöder OpenAI, Anthropic, Google Gemini, Ollama och andra
- **📱 Multi-kanal**: Telegram, Matrix (med E2EE), CLI och andra
- **🧠 Pluggbart minne**: SQLite och Markdown-backends
- **🛠️ Utökningsbara verktyg**: Lägg enkelt till anpassade verktyg
- **🔒 Säkerhet först**: Omvänd proxy, integritetsförst-design
--- Körmiljö: Rust stable toolchain. Enda binär, inga körtidsberoenden.
### Homebrew (macOS/Linuxbrew)
```bash
brew install zeroclaw
```
### Ett-klicks-installation
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./install.sh
```
`zeroclaw onboard` körs automatiskt efter installationen för att konfigurera din arbetsyta och leverantör.
## Snabbstart ## Snabbstart
### Krav Fullständig nybörjarguide (autentisering, parkoppling, kanaler): [Kom igång](docs/setup-guides/one-click-bootstrap.md)
- Rust 1.70+ ```bash
- En LLM-leverantörs API-nyckel (Anthropic, OpenAI, etc.) # Installera + onboard
./install.sh --api-key "sk-..." --provider openrouter
### Installation
# Starta gateway (webhook-server + webbpanel)
zeroclaw gateway # standard: 127.0.0.1:42617
zeroclaw gateway --port 0 # slumpmässig port (säkerhetshärdad)
# Prata med assistenten
zeroclaw agent -m "Hello, ZeroClaw!"
# Interaktivt läge
zeroclaw agent
# Starta full autonom körmiljö (gateway + kanaler + cron + hands)
zeroclaw daemon
# Kontrollera status
zeroclaw status
# Kör diagnostik
zeroclaw doctor
```
Uppgraderar du? Kör `zeroclaw doctor` efter uppdatering.
### Från källkod (utveckling)
```bash ```bash
# Klona repositoryt
git clone https://github.com/zeroclaw-labs/zeroclaw.git git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw cd zeroclaw
# Bygg cargo build --release --locked
cargo build --release cargo install --path . --force --locked
# Kör zeroclaw onboard
cargo run --release
``` ```
### Med Docker > **Utvecklar-fallback (ingen global installation):** prefixera kommandon med `cargo run --release --` (exempel: `cargo run --release -- status`).
## Migrera från OpenClaw
ZeroClaw kan importera din OpenClaw-arbetsyta, minne och konfiguration:
```bash ```bash
docker run -d \ # Förhandsgranska vad som migreras (säkert, skrivskyddat)
--name zeroclaw \ zeroclaw migrate openclaw --dry-run
-e ANTHROPIC_API_KEY=your_key \
-v zeroclaw-data:/app/data \ # Kör migreringen
zeroclaw/zeroclaw:latest zeroclaw migrate openclaw
``` ```
--- Detta migrerar dina minnesposter, arbetsytefiler och konfiguration från `~/.openclaw/` till `~/.zeroclaw/`. Konfiguration konverteras automatiskt från JSON till TOML.
## Säkerhetsstandarder (DM-åtkomst)
ZeroClaw ansluter till riktiga meddelandeytor. Behandla inkommande DM som opålitlig indata.
Fullständig säkerhetsguide: [SECURITY.md](SECURITY.md)
Standardbeteende på alla kanaler:
- **DM-parkoppling** (standard): okända avsändare får en kort parkopplingskod och boten behandlar inte deras meddelande.
- Godkänn med: `zeroclaw pairing approve <channel> <code>` (sedan läggs avsändaren till i en lokal tillåtlista).
- Offentliga inkommande DM kräver ett explicit opt-in i `config.toml`.
- Kör `zeroclaw doctor` för att hitta riskfyllda eller felkonfigurerade DM-policyer.
**Autonominivåer:**
| Nivå | Beteende |
|------|----------|
| `ReadOnly` | Agenten kan observera men inte agera |
| `Supervised` (standard) | Agenten agerar med godkännande för medel-/högriskoperationer |
| `Full` | Agenten agerar autonomt inom policygränser |
**Sandboxlager:** arbetsyteisolering, sökvägstraversblockering, kommandotillåtlistor, förbjudna sökvägar (`/etc`, `/root`, `~/.ssh`), hastighetsbegränsning (max åtgärder/timme, kostnad/dag-gränser).
<!-- BEGIN:WHATS_NEW -->
<!-- END:WHATS_NEW -->
### 📢 Meddelanden
Använd denna tavla för viktiga meddelanden (brytande ändringar, säkerhetsrådgivningar, underhållsfönster och releaseblockerare).
| Datum (UTC) | Nivå | Meddelande | Åtgärd |
| ----------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2026-02-19 | _Kritisk_ | Vi är **inte affilierade** med `openagen/zeroclaw`, `zeroclaw.org` eller `zeroclaw.net`. Domänerna `zeroclaw.org` och `zeroclaw.net` pekar för närvarande till `openagen/zeroclaw`-forken, och den domänen/repositoryt utger sig för att vara vår officiella webbplats/projekt. | Lita inte på information, binärer, insamlingar eller meddelanden från dessa källor. Använd bara [detta repository](https://github.com/zeroclaw-labs/zeroclaw) och våra verifierade sociala konton. |
| 2026-02-21 | _Viktigt_ | Vår officiella webbplats är nu live: [zeroclawlabs.ai](https://zeroclawlabs.ai). Tack för ert tålamod medan vi förberedde lanseringen. Vi ser fortfarande imitationsförsök, så **gå inte** med i några investerings- eller insamlingsaktiviteter som hävdar ZeroClaw-namnet om de inte publicerats via våra officiella kanaler. | Använd [detta repository](https://github.com/zeroclaw-labs/zeroclaw) som enda sanningskälla. Följ [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21), [Facebook (Grupp)](https://www.facebook.com/groups/zeroclawlabs) och [Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/) för officiella uppdateringar. |
| 2026-02-19 | _Viktigt_ | Anthropic uppdaterade villkoren för autentisering och inloggningsanvändning 2026-02-19. Claude Code OAuth-tokens (Free, Pro, Max) är avsedda uteslutande för Claude Code och Claude.ai; att använda OAuth-tokens från Claude Free/Pro/Max i någon annan produkt, verktyg eller tjänst (inklusive Agent SDK) är inte tillåtet och kan bryta mot Consumer Terms of Service. | Undvik tillfälligt Claude Code OAuth-integrationer för att förhindra potentiell förlust. Originalklausul: [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use). |
## Höjdpunkter
- **Lean körmiljö som standard** — vanliga CLI- och statusarbetsflöden körs i ett fåmegabyte-minnesutrymme på release-byggen.
- **Kostnadseffektiv distribution** — designad för $10-kort och små molninstanser, inga tunga körtidsberoenden.
- **Snabba kallstarter** — enkel binär Rust-körmiljö håller kommando- och daemon-uppstart nära ögonblicklig.
- **Portabel arkitektur** — en binär över ARM, x86 och RISC-V med utbytbara providers/channels/tools.
- **Lokal-först Gateway** — enda kontrollplan för sessioner, kanaler, verktyg, cron, SOP:er och händelser.
- **Multikanalinkorg** — WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WebSocket med flera.
- **Multiagentorkestrering (Hands)** — autonoma agentsvärmar som körs på schema och blir smartare med tiden.
- **Standardoperationsprocedurer (SOPs)** — händelsedriven arbetsflödesautomatisering med MQTT, webhook, cron och periferiutlösare.
- **Webbpanel** — React 19 + Vite webb-UI med realtidschatt, minnesutforskare, konfigurationsredigerare, cron-hanterare och verktygsinspektor.
- **Hårdvaruperiferienheter** — ESP32, STM32 Nucleo, Arduino, Raspberry Pi GPIO via `Peripheral`-traiten.
- **Förstklassiga verktyg** — shell, fil-I/O, webbläsare, git, web fetch/search, MCP, Jira, Notion, Google Workspace och 70+ fler.
- **Livscykelkrokar** — fånga upp och modifiera LLM-anrop, verktygsexekveringar och meddelanden i varje steg.
- **Färdighetsplattform** — medföljande, community- och arbetsytefärdigheter med säkerhetsgranskning.
- **Tunnelstöd** — Cloudflare, Tailscale, ngrok, OpenVPN och anpassade tunnlar för fjärråtkomst.
### Varför team väljer ZeroClaw
- **Lean som standard:** liten Rust-binär, snabb start, lågt minnesavtryck.
- **Säker från grunden:** parkoppling, strikt sandboxning, explicita tillåtlistor, arbetsyteavgränsning.
- **Fullt utbytbar:** kärnssystem är traits (providers, channels, tools, memory, tunnels).
- **Inget leverantörslås:** OpenAI-kompatibelt leverantörsstöd + pluggbara anpassade endpoints.
## Benchmarkögonblicksbild (ZeroClaw vs OpenClaw, Reproducerbar)
Lokal maskin-snabbtest (macOS arm64, feb 2026) normaliserat för 0.8GHz edge-hårdvara.
| | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 |
| ------------------------- | ------------- | -------------- | --------------- | -------------------- |
| **Språk** | TypeScript | Python | Go | **Rust** |
| **RAM** | > 1GB | > 100MB | < 10MB | **< 5MB** |
| **Uppstart (0.8GHz kärna)** | > 500s | > 30s | < 1s | **< 10ms** |
| **Binärstorlek** | ~28MB (dist) | N/A (Scripts) | ~8MB | **~8.8 MB** |
| **Kostnad** | Mac Mini $599 | Linux SBC ~$50 | Linux Board $10 | **Vilken hårdvara som helst $10** |
> Noteringar: ZeroClaw-resultat mäts på release-byggen med `/usr/bin/time -l`. OpenClaw kräver Node.js-körmiljö (typiskt ~390MB extra minnesoverhead), medan NanoBot kräver Python-körmiljö. PicoClaw och ZeroClaw är statiska binärer. RAM-siffrorna ovan är körtidsminne; kompileringskrav vid byggtid är högre.
<p align="center">
<img src="docs/assets/zeroclaw-comparison.jpeg" alt="ZeroClaw vs OpenClaw jämförelse" width="800" />
</p>
### Reproducerbar lokal mätning
```bash
cargo build --release
ls -lh target/release/zeroclaw
/usr/bin/time -l target/release/zeroclaw --help
/usr/bin/time -l target/release/zeroclaw status
```
## Allt vi byggt hittills
### Kärnplattform
- Gateway HTTP/WS/SSE-kontrollplan med sessioner, närvaro, konfiguration, cron, webhooks, webbpanel och parkoppling.
- CLI-yta: `gateway`, `agent`, `onboard`, `doctor`, `status`, `service`, `migrate`, `auth`, `cron`, `channel`, `skills`.
- Agentorkestreringsloop med verktygsdistribution, promptkonstruktion, meddelandeklassificering och minnesinläsning.
- Sessionsmodell med säkerhetspolicyefterlevnad, autonominivåer och godkännandeportar.
- Motståndskraftig leverantörswrapper med failover, retry och modellroutning över 20+ LLM-backends.
### Kanaler
Kanaler: WhatsApp (nativ), Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, DingTalk, Lark, Mattermost, Nextcloud Talk, Nostr, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WATI, Mochat, Linq, Notion, WebSocket, ClawdTalk.
Funktionsgated: Matrix (`channel-matrix`), Lark (`channel-lark`), Nostr (`channel-nostr`).
### Webbpanel
React 19 + Vite 6 + Tailwind CSS 4 webbpanel serverad direkt från Gateway:
- **Dashboard** — systemöversikt, hälsostatus, drifttid, kostnadsspårning
- **Agentchatt** — interaktiv chatt med agenten
- **Minne** — bläddra och hantera minnesposter
- **Konfiguration** — visa och redigera konfiguration
- **Cron** — hantera schemalagda uppgifter
- **Verktyg** — bläddra tillgängliga verktyg
- **Loggar** — visa agentaktivitetsloggar
- **Kostnad** — tokenanvändning och kostnadsspårning
- **Doktor** — systemhälsodiagnostik
- **Integrationer** — integrationsstatus och konfiguration
- **Parkoppling** — hantering av enhetsparkoppling
### Firmware-mål
| Mål | Plattform | Syfte |
|-----|-----------|-------|
| ESP32 | Espressif ESP32 | Trådlös periferienhetagent |
| ESP32-UI | ESP32 + Display | Agent med visuellt gränssnitt |
| STM32 Nucleo | STM32 (ARM Cortex-M) | Industriell periferienhet |
| Arduino | Arduino | Grundläggande sensor-/aktuatorbrygga |
| Uno Q Bridge | Arduino Uno | Seriell brygga till agent |
### Verktyg + automatisering
- **Kärna:** shell, filläsning/skrivning/redigering, git-operationer, glob-sökning, innehållssökning
- **Webb:** webbläsarkontroll, web fetch, webbsökning, skärmdump, bildinformation, PDF-läsning
- **Integrationer:** Jira, Notion, Google Workspace, Microsoft 365, LinkedIn, Composio, Pushover
- **MCP:** Model Context Protocol-verktygs-wrapper + uppskjutna verktygsuppsättningar
- **Schemaläggning:** cron add/remove/update/run, schemaverktyg
- **Minne:** recall, store, forget, knowledge, project intel
- **Avancerat:** delegate (agent-till-agent), swarm, modellväxling/routing, säkerhetsoperationer, molnoperationer
- **Hårdvara:** board info, memory map, memory read (funktionsgated)
### Körmiljö + säkerhet
- **Autonominivåer:** ReadOnly, Supervised (standard), Full.
- **Sandboxning:** arbetsyteisolering, sökvägstraversblockering, kommandotillåtlistor, förbjudna sökvägar, Landlock (Linux), Bubblewrap.
- **Hastighetsbegränsning:** max åtgärder per timme, max kostnad per dag (konfigurerbart).
- **Godkännandeportar:** interaktivt godkännande för medel-/högriskoperationer.
- **E-stopp:** nödavstängningskapacitet.
- **129+ säkerhetstester** i automatiserad CI.
### Drift + paketering
- Webbpanel serverad direkt från Gateway.
- Tunnelstöd: Cloudflare, Tailscale, ngrok, OpenVPN, anpassat kommando.
- Docker-körmiljöadapter för containeriserad exekvering.
- CI/CD: beta (automatiskt vid push) → stable (manuell dispatch) → Docker, crates.io, Scoop, AUR, Homebrew, tweet.
- Förbyggda binärer för Linux (x86_64, aarch64, armv7), macOS (x86_64, aarch64), Windows (x86_64).
## Konfiguration ## Konfiguration
ZeroClaw använder en YAML-konfigurationsfil. Som standard letar den efter `config.yaml`. Minimal `~/.zeroclaw/config.toml`:
```yaml ```toml
# Standardleverantör default_provider = "anthropic"
provider: anthropic api_key = "sk-ant-..."
# Leverantörskonfiguration
providers:
anthropic:
api_key: ${ANTHROPIC_API_KEY}
model: claude-3-5-sonnet-20241022
openai:
api_key: ${OPENAI_API_KEY}
model: gpt-4o
# Minneskonfiguration
memory:
backend: sqlite
path: data/memory.db
# Kanalkonfiguration
channels:
telegram:
token: ${TELEGRAM_BOT_TOKEN}
``` ```
--- Fullständig konfigurationsreferens: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md).
### Kanalkonfiguration
**Telegram:**
```toml
[channels.telegram]
bot_token = "123456:ABC-DEF..."
```
**Discord:**
```toml
[channels.discord]
token = "your-bot-token"
```
**Slack:**
```toml
[channels.slack]
bot_token = "xoxb-..."
app_token = "xapp-..."
```
**WhatsApp:**
```toml
[channels.whatsapp]
enabled = true
```
**Matrix:**
```toml
[channels.matrix]
homeserver_url = "https://matrix.org"
username = "@bot:matrix.org"
password = "..."
```
**Signal:**
```toml
[channels.signal]
phone_number = "+1234567890"
```
### Tunnelkonfiguration
```toml
[tunnel]
kind = "cloudflare" # eller "tailscale", "ngrok", "openvpn", "custom", "none"
```
Detaljer: [Kanalreferens](docs/reference/api/channels-reference.md) · [Konfigurationsreferens](docs/reference/api/config-reference.md)
### Körmiljöstöd (nuvarande)
- **`native`** (standard) — direkt processexekvering, snabbaste vägen, idealisk för betrodda miljöer.
- **`docker`** — full containerisolering, tvingade säkerhetspolicyer, kräver Docker.
Ställ in `runtime.kind = "docker"` för strikt sandboxning eller nätverksisolering.
## Prenumerationsautentisering (OpenAI Codex / Claude Code / Gemini)
ZeroClaw stöder prenumerationsnativa autentiseringsprofiler (multikonto, krypterat i vila).
- Lagringsfil: `~/.zeroclaw/auth-profiles.json`
- Krypteringsnyckel: `~/.zeroclaw/.secret_key`
- Profil-ID-format: `<provider>:<profile_name>` (exempel: `openai-codex:work`)
```bash
# OpenAI Codex OAuth (ChatGPT-prenumeration)
zeroclaw auth login --provider openai-codex --device-code
# Gemini OAuth
zeroclaw auth login --provider gemini --profile default
# Anthropic setup-token
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# Kontrollera / uppdatera / byt profil
zeroclaw auth status
zeroclaw auth refresh --provider openai-codex --profile default
zeroclaw auth use --provider openai-codex --profile work
# Kör agenten med prenumerationsautentisering
zeroclaw agent --provider openai-codex -m "hello"
zeroclaw agent --provider anthropic -m "hello"
```
## Agentarbetsyta + färdigheter
Arbetsyterot: `~/.zeroclaw/workspace/` (konfigurerbart via config).
Injicerade promptfiler:
- `IDENTITY.md` — agentpersonlighet och roll
- `USER.md` — användarkontext och preferenser
- `MEMORY.md` — långtidsfakta och lärdomar
- `AGENTS.md` — sessionskonventioner och initieringsregler
- `SOUL.md` — kärnidentitet och operationsprinciper
Färdigheter: `~/.zeroclaw/workspace/skills/<skill>/SKILL.md` eller `SKILL.toml`.
```bash
# Lista installerade färdigheter
zeroclaw skills list
# Installera från git
zeroclaw skills install https://github.com/user/my-skill.git
# Säkerhetsgranskning före installation
zeroclaw skills audit https://github.com/user/my-skill.git
# Ta bort en färdighet
zeroclaw skills remove my-skill
```
## CLI-kommandon
```bash
# Arbetsytehantering
zeroclaw onboard # Guidad installationsguide
zeroclaw status # Visa daemon-/agentstatus
zeroclaw doctor # Kör systemdiagnostik
# Gateway + daemon
zeroclaw gateway # Starta gateway-server (127.0.0.1:42617)
zeroclaw daemon # Starta full autonom körmiljö
# Agent
zeroclaw agent # Interaktivt chattläge
zeroclaw agent -m "message" # Enstaka meddelandeläge
# Tjänstehantering
zeroclaw service install # Installera som OS-tjänst (launchd/systemd)
zeroclaw service start|stop|restart|status
# Kanaler
zeroclaw channel list # Lista konfigurerade kanaler
zeroclaw channel doctor # Kontrollera kanalhälsa
zeroclaw channel bind-telegram 123456789
# Cron + schemaläggning
zeroclaw cron list # Lista schemalagda jobb
zeroclaw cron add "*/5 * * * *" --prompt "Check system health"
zeroclaw cron remove <id>
# Minne
zeroclaw memory list # Lista minnesposter
zeroclaw memory get <key> # Hämta ett minne
zeroclaw memory stats # Minnesstatistik
# Autentiseringsprofiler
zeroclaw auth login --provider <name>
zeroclaw auth status
zeroclaw auth use --provider <name> --profile <profile>
# Hårdvaruperiferienheter
zeroclaw hardware discover # Sök efter anslutna enheter
zeroclaw peripheral list # Lista anslutna periferienheter
zeroclaw peripheral flash # Flasha firmware till enhet
# Migrering
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw
# Shell-kompletteringar
source <(zeroclaw completions bash)
zeroclaw completions zsh > ~/.zfunc/_zeroclaw
```
Fullständig kommandoreferens: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
<!-- markdownlint-disable MD001 MD024 -->
## Förutsättningar
<details>
<summary><strong>Windows</strong></summary>
#### Obligatoriskt
1. **Visual Studio Build Tools** (tillhandahåller MSVC-länkaren och Windows SDK):
```powershell
winget install Microsoft.VisualStudio.2022.BuildTools
```
Under installationen (eller via Visual Studio Installer), välj arbetsbelastningen **"Desktop development with C++"**.
2. **Rust toolchain:**
```powershell
winget install Rustlang.Rustup
```
Efter installationen, öppna en ny terminal och kör `rustup default stable` för att säkerställa att stable-toolchainen är aktiv.
3. **Verifiera** att båda fungerar:
```powershell
rustc --version
cargo --version
```
#### Valfritt
- **Docker Desktop** — krävs bara om du använder [Docker sandboxad körmiljö](#körmiljöstöd-nuvarande) (`runtime.kind = "docker"`). Installera via `winget install Docker.DockerDesktop`.
</details>
<details>
<summary><strong>Linux / macOS</strong></summary>
#### Obligatoriskt
1. **Byggverktyg:**
- **Linux (Debian/Ubuntu):** `sudo apt install build-essential pkg-config`
- **Linux (Fedora/RHEL):** `sudo dnf group install development-tools && sudo dnf install pkg-config`
- **macOS:** Installera Xcode Command Line Tools: `xcode-select --install`
2. **Rust toolchain:**
```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
Se [rustup.rs](https://rustup.rs) för detaljer.
3. **Verifiera** att båda fungerar:
```bash
rustc --version
cargo --version
```
#### Enradsinstallerare
Eller hoppa över stegen ovan och installera allt (systemberoenden, Rust, ZeroClaw) med ett enda kommando:
```bash
curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash
```
#### Kompileringsresurskrav
Att bygga från källkod kräver mer resurser än att köra den resulterande binären:
| Resurs | Minimum | Rekommenderat |
| -------------- | ------- | ------------- |
| **RAM + swap** | 2 GB | 4 GB+ |
| **Ledigt disk**| 6 GB | 10 GB+ |
Om din värd ligger under minimum, använd förbyggda binärer:
```bash
./install.sh --prefer-prebuilt
```
För att kräva enbart binärinstallation utan källkods-fallback:
```bash
./install.sh --prebuilt-only
```
#### Valfritt
- **Docker** — krävs bara om du använder [Docker sandboxad körmiljö](#körmiljöstöd-nuvarande) (`runtime.kind = "docker"`). Installera via din pakethanterare eller [docker.com](https://docs.docker.com/engine/install/).
> **Notering:** Standard `cargo build --release` använder `codegen-units=1` för att minska toppkompileringstrycket. För snabbare byggen på kraftfulla maskiner, använd `cargo build --profile release-fast`.
</details>
<!-- markdownlint-enable MD001 MD024 -->
### Förbyggda binärer
Release-tillgångar publiceras för:
- Linux: `x86_64`, `aarch64`, `armv7`
- macOS: `x86_64`, `aarch64`
- Windows: `x86_64`
Ladda ner de senaste tillgångarna från:
<https://github.com/zeroclaw-labs/zeroclaw/releases/latest>
## Dokumentation ## Dokumentation
För detaljerad dokumentation, se: Använd dessa när du är förbi onboarding-flödet och vill ha den djupare referensen.
- [Dokumentationshubb](docs/README.md) - Börja med [dokumentationsindexet](docs/README.md) för navigering och "vad finns var."
- [Kommandoreferens](docs/commands-reference.md) - Läs [arkitekturöversikten](docs/architecture.md) för den fullständiga systemmodellen.
- [Leverantörsreferens](docs/providers-reference.md) - Använd [konfigurationsreferensen](docs/reference/api/config-reference.md) när du behöver varje nyckel och exempel.
- [Kanalreferens](docs/channels-reference.md) - Kör Gateway enligt boken med [operationsrunbook](docs/ops/operations-runbook.md).
- [Konfigurationsreferens](docs/config-reference.md) - Följ [ZeroClaw Onboard](#snabbstart) för en guidad installation.
- Felsök vanliga problem med [felsökningsguiden](docs/ops/troubleshooting.md).
- Granska [säkerhetsvägledning](docs/security/README.md) innan du exponerar något.
--- ### Referensdokumentation
## Bidrag - Dokumentationshubb: [docs/README.md](docs/README.md)
- Enhetlig dokumentations-TOC: [docs/SUMMARY.md](docs/SUMMARY.md)
- Kommandoreferens: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
- Konfigurationsreferens: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
- Leverantörsreferens: [docs/reference/api/providers-reference.md](docs/reference/api/providers-reference.md)
- Kanalreferens: [docs/reference/api/channels-reference.md](docs/reference/api/channels-reference.md)
- Operationsrunbook: [docs/ops/operations-runbook.md](docs/ops/operations-runbook.md)
- Felsökning: [docs/ops/troubleshooting.md](docs/ops/troubleshooting.md)
Bidrag är välkomna! Vänligen läs [Bidragsguiden](CONTRIBUTING.md). ### Samarbetsdokumentation
- Bidragsguide: [CONTRIBUTING.md](CONTRIBUTING.md)
- PR-arbetsflödespolicy: [docs/contributing/pr-workflow.md](docs/contributing/pr-workflow.md)
- CI-arbetsflödesguide: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Granskningsplaybook: [docs/contributing/reviewer-playbook.md](docs/contributing/reviewer-playbook.md)
- Säkerhetsutlämnandepolicy: [SECURITY.md](SECURITY.md)
- Dokumentationsmall: [docs/contributing/doc-template.md](docs/contributing/doc-template.md)
### Distribution + drift
- Nätverksdistributionsguide: [docs/ops/network-deployment.md](docs/ops/network-deployment.md)
- Proxy-agentplaybook: [docs/ops/proxy-agent-playbook.md](docs/ops/proxy-agent-playbook.md)
- Hårdvaruguider: [docs/hardware/README.md](docs/hardware/README.md)
## Smooth Crab 🦀
ZeroClaw byggdes för smooth crab 🦀, en snabb och effektiv AI-assistent. Byggd av Argenis De La Rosa och gemenskapen.
- [zeroclawlabs.ai](https://zeroclawlabs.ai)
- [@zeroclawlabs](https://x.com/zeroclawlabs)
## Stöd ZeroClaw
Om ZeroClaw hjälper ditt arbete och du vill stödja pågående utveckling kan du donera här:
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
### 🙏 Särskilt tack
Ett hjärtligt tack till de gemenskaper och institutioner som inspirerar och driver detta open source-arbete:
- **Harvard University** — för att främja intellektuell nyfikenhet och tänja gränserna för vad som är möjligt.
- **MIT** — för att försvara öppen kunskap, öppen källkod och tron att teknologi bör vara tillgänglig för alla.
- **Sundai Club** — för gemenskapen, energin och den outtröttliga driften att bygga saker som spelar roll.
- **Världen & bortom** 🌍✨ — till varje bidragsgivare, drömmare och byggare där ute som gör öppen källkod till en kraft för gott. Det här är för er.
Vi bygger öppet eftersom de bästa idéerna kommer från överallt. Om du läser detta är du en del av det. Välkommen. 🦀❤️
## Bidra
Ny till ZeroClaw? Leta efter ärenden märkta [`good first issue`](https://github.com/zeroclaw-labs/zeroclaw/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) — se vår [Bidragsguide](CONTRIBUTING.md#first-time-contributors) för hur du kommer igång. AI/vibe-kodade PR:er är välkomna! 🤖
Se [CONTRIBUTING.md](CONTRIBUTING.md) och [CLA.md](docs/contributing/cla.md). Implementera en trait, skicka in en PR:
- CI-arbetsflödesguide: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Ny `Provider``src/providers/`
- Ny `Channel``src/channels/`
- Ny `Observer``src/observability/`
- Nytt `Tool``src/tools/`
- Nytt `Memory``src/memory/`
- Ny `Tunnel``src/tunnel/`
- Ny `Peripheral``src/peripherals/`
- Ny `Skill``~/.zeroclaw/workspace/skills/<name>/`
<!-- BEGIN:RECENT_CONTRIBUTORS -->
<!-- END:RECENT_CONTRIBUTORS -->
## ⚠️ Officiellt repository & varning för imitation
**Detta är det enda officiella ZeroClaw-repositoryt:**
> https://github.com/zeroclaw-labs/zeroclaw
Alla andra repositorier, organisationer, domäner eller paket som hävdar att vara "ZeroClaw" eller antyder anslutning till ZeroClaw Labs är **obehöriga och inte affilierade med detta projekt**. Kända obehöriga forkar listas i [TRADEMARK.md](docs/maintainers/trademark.md).
Om du stöter på imitation eller varumärkesmissbruk, vänligen [öppna ett ärende](https://github.com/zeroclaw-labs/zeroclaw/issues).
--- ---
## Licens ## Licens
Detta projekt är dubbellicensierat: ZeroClaw är dubbellicensierat för maximal öppenhet och bidragsgivarskydd:
- MIT License | Licens | Användningsfall |
- Apache License, version 2.0 |--------|-----------------|
| [MIT](LICENSE-MIT) | Öppen källkod, forskning, akademiskt, personligt bruk |
| [Apache 2.0](LICENSE-APACHE) | Patentskydd, institutionell, kommersiell distribution |
Se [LICENSE-APACHE](LICENSE-APACHE) och [LICENSE-MIT](LICENSE-MIT) för detaljer. Du kan välja endera licens. **Bidragsgivare beviljar automatiskt rättigheter under båda** — se [CLA.md](docs/contributing/cla.md) för det fullständiga bidragsgivaravtalet.
### Varumärke
**ZeroClaw**-namnet och logotypen är varumärken som tillhör ZeroClaw Labs. Denna licens beviljar inte tillstånd att använda dem för att antyda stöd eller anslutning. Se [TRADEMARK.md](docs/maintainers/trademark.md) för tillåtna och förbjudna användningar.
### Bidragsgivarskydd
- Du **behåller upphovsrätten** till dina bidrag
- **Patentbeviljande** (Apache 2.0) skyddar dig från patentkrav från andra bidragsgivare
- Dina bidrag är **permanent tillskrivna** i commit-historik och [NOTICE](NOTICE)
- Inga varumärkesrättigheter överförs genom att bidra
--- ---
## Community **ZeroClaw** — Noll overhead. Noll kompromiss. Distribuera var som helst. Byt ut vad som helst. 🦀
- [Telegram](https://t.me/zeroclawlabs) ## Bidragsgivare
- [Facebook Group](https://www.facebook.com/groups/zeroclaw)
- [WeChat Group](https://zeroclawlabs.cn/group.jpg)
--- <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors">
<img src="https://contrib.rocks/image?repo=zeroclaw-labs/zeroclaw" alt="ZeroClaw-bidragsgivare" />
</a>
## Sponsorer Denna lista genereras från GitHub-bidragsgivargrafen och uppdateras automatiskt.
Om ZeroClaw är användbart för dig, vänligen överväg att köpa en kaffe till oss: ## Stjärnhistorik
[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee)](https://buymeacoffee.com/argenistherose) <p align="center">
<a href="https://www.star-history.com/#zeroclaw-labs/zeroclaw&type=date&legend=top-left">
<!-- BEGIN:RECENT_CONTRIBUTORS --> <picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&theme=dark&legend=top-left" />
### 🌟 Recent Contributors (v0.3.1) <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
3 contributors shipped features, fixes, and improvements in this release cycle: </picture>
</a>
- **Argenis** </p>
- **argenis de la rosa**
- **Claude Opus 4.6**
Thank you to everyone who opened issues, reviewed PRs, translated docs, and helped test. Every contribution matters. 🦀
<!-- END:RECENT_CONTRIBUTORS -->

View File

@ -1,23 +1,29 @@
<p align="center"> <p align="center">
<img src="zeroclaw.png" alt="ZeroClaw" width="200" /> <img src="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/docs/assets/zeroclaw-banner.png" alt="ZeroClaw" width="600" />
</p> </p>
<h1 align="center">ZeroClaw 🦀</h1> <h1 align="center">🦀 ZeroClaw — ผู้ช่วย AI ส่วนตัว</h1>
<p align="center"> <p align="center">
<strong>โอเวอร์เฮดเป็นศูนย์ ไม่มีการประนีประนอม 100% Rust 100% Agnostic</strong><br> <strong>ไม่มีโอเวอร์เฮด ไม่มีการประนีประนอม 100% Rust 100% ไม่ผูกมัด</strong><br>
⚡️ <strong>ทำงานบนฮาร์ดแวร์ $10 ด้วย RAM <5MB: ใช้หน่วยความจำน้อยกว่า OpenClaw 99% และถูกกว่า Mac mini 98%!</strong> ⚡️ <strong>ทำงานบนฮาร์ดแวร์ $10 ด้วย RAM <5MB: นั่นคือหน่วยความจำน้อยกว่า OpenClaw 99% และราคาถูกกว่า Mac mini 98%!</strong>
</p> </p>
<p align="center"> <p align="center">
<a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a> <a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
<a href="NOTICE"><img src="https://img.shields.io/badge/contributors-27+-green.svg" alt="Contributors" /></a> <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors"><img src="https://img.shields.io/github/contributors/zeroclaw-labs/zeroclaw?color=green" alt="Contributors" /></a>
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a> <a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
<a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a> <a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a>
<a href="https://zeroclawlabs.cn/group.jpg"><img src="https://img.shields.io/badge/WeChat-Group-B7D7A8?logo=wechat&logoColor=white" alt="WeChat Group" /></a> <a href="https://www.facebook.com/groups/zeroclawlabs"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a>
<a href="https://www.xiaohongshu.com/user/profile/67cbfc43000000000d008307?xsec_token=AB73VnYnGNx5y36EtnnZfGmAmS-6Wzv8WMuGpfwfkg6Yc%3D&xsec_source=pc_search"><img src="https://img.shields.io/badge/Xiaohongshu-Official-FF2442?style=flat" alt="Xiaohongshu: Official" /></a> <a href="https://discord.com/invite/wDshRVqRjx"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://t.me/zeroclawlabs"><img src="https://img.shields.io/badge/Telegram-%40zeroclawlabs-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @zeroclawlabs" /></a> <a href="https://www.instagram.com/therealzeroclaw"><img src="https://img.shields.io/badge/Instagram-%40therealzeroclaw-E4405F?style=flat&logo=instagram&logoColor=white" alt="Instagram: @therealzeroclaw" /></a>
<a href="https://www.facebook.com/groups/zeroclaw"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a> <a href="https://www.tiktok.com/@zeroclawlabs"><img src="https://img.shields.io/badge/TikTok-%40zeroclawlabs-000000?style=flat&logo=tiktok&logoColor=white" alt="TikTok: @zeroclawlabs" /></a>
<a href="https://www.rednote.com/user/profile/69b735e6000000002603927e"><img src="https://img.shields.io/badge/RedNote-Official-FF2442?style=flat" alt="RedNote" /></a>
<a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a>
</p>
<p align="center">
สร้างโดยนักศึกษาและสมาชิกจากชุมชน Harvard, MIT, และ Sundai.Club
</p> </p>
<p align="center"> <p align="center">
@ -55,149 +61,695 @@
<a href="README.nb.md">🇳🇴 Norsk</a> <a href="README.nb.md">🇳🇴 Norsk</a>
</p> </p>
--- ZeroClaw คือผู้ช่วย AI ส่วนตัวที่คุณรันบนอุปกรณ์ของคุณเอง มันตอบคุณผ่านช่องทางที่คุณใช้อยู่แล้ว (WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work และอื่นๆ) มีแดชบอร์ดเว็บสำหรับการควบคุมแบบเรียลไทม์และสามารถเชื่อมต่อกับอุปกรณ์ต่อพ่วง (ESP32, STM32, Arduino, Raspberry Pi) Gateway เป็นเพียง control plane — ผลิตภัณฑ์คือผู้ช่วย
<!-- BEGIN:WHATS_NEW --> หากคุณต้องการผู้ช่วยส่วนตัว ผู้ใช้คนเดียว ที่รู้สึกเหมือนอยู่ในเครื่อง เร็ว และพร้อมใช้งานตลอดเวลา นี่คือมัน
### 🚀 What's New in v0.3.1 (March 2026) <p align="center">
<a href="https://zeroclawlabs.ai">เว็บไซต์</a> ·
<a href="docs/README.md">เอกสาร</a> ·
<a href="docs/architecture.md">สถาปัตยกรรม</a> ·
<a href="#เริ่มต้นอย่างรวดเร็ว">เริ่มต้นใช้งาน</a> ·
<a href="#การย้ายจาก-openclaw">ย้ายจาก OpenClaw</a> ·
<a href="docs/ops/troubleshooting.md">แก้ไขปัญหา</a> ·
<a href="https://discord.com/invite/wDshRVqRjx">Discord</a>
</p>
| Area | Highlights | > **การตั้งค่าที่แนะนำ:** รัน `zeroclaw onboard` ในเทอร์มินัลของคุณ ZeroClaw Onboard จะแนะนำคุณทีละขั้นตอนในการตั้งค่า gateway, workspace, ช่องทาง และ provider เป็นเส้นทางการตั้งค่าที่แนะนำและใช้งานได้บน macOS, Linux และ Windows (ผ่าน WSL2) ติดตั้งใหม่? เริ่มที่นี่: [เริ่มต้นใช้งาน](#เริ่มต้นอย่างรวดเร็ว)
|---|---|
| ci | add Termux (aarch64-linux-android) release target |
<!-- END:WHATS_NEW --> ### การยืนยันตัวตนแบบสมัครสมาชิก (OAuth)
## ZeroClaw คืออะไร? - **OpenAI Codex** (สมัครสมาชิก ChatGPT)
- **Gemini** (Google OAuth)
- **Anthropic** (API key หรือ auth token)
ZeroClaw เป็นโครงสร้างพื้นฐานผู้ช่วย AI ที่มีน้ำหนักเบา ปรับเปลี่ยนได้ และขยายได้ สร้างด้วย Rust มันเชื่อมต่อผู้ให้บริการ LLM ต่างๆ (Anthropic, OpenAI, Google, Ollama ฯลฯ) ผ่านอินเทอร์เฟซแบบรวมและรองรับหลายช่องทาง (Telegram, Matrix, CLI ฯลฯ) หมายเหตุเกี่ยวกับโมเดล: แม้จะรองรับ provider/โมเดลหลายตัว แต่เพื่อประสบการณ์ที่ดีที่สุด ให้ใช้โมเดลรุ่นล่าสุดที่แข็งแกร่งที่สุดที่คุณมี ดู [Onboarding](#เริ่มต้นอย่างรวดเร็ว)
### คุณสมบัติหลัก การตั้งค่าโมเดล + CLI: [อ้างอิง Provider](docs/reference/api/providers-reference.md)
การหมุนเวียนโปรไฟล์การยืนยันตัวตน (OAuth vs API keys) + failover: [Model failover](docs/reference/api/providers-reference.md)
- **🦀 เขียนด้วย Rust**: ประสิทธิภาพสูง ความปลอดภัยของหน่วยความจำ และ abstraction แบบไม่มีค่าใช้จ่าย ## ติดตั้ง (แนะนำ)
- **🔌 Agnostic ต่อผู้ให้บริการ**: รองรับ OpenAI, Anthropic, Google Gemini, Ollama และอื่นๆ
- **📱 หลายช่องทาง**: Telegram, Matrix (พร้อม E2EE), CLI และอื่นๆ
- **🧠 หน่วยความจำแบบเสียบได้**: Backend แบบ SQLite และ Markdown
- **🛠️ เครื่องมือที่ขยายได้**: เพิ่มเครื่องมือที่กำหนดเองได้ง่าย
- **🔒 ความปลอดภัยเป็นอันดับหนึ่ง**: Reverse proxy, การออกแบบที่ให้ความสำคัญกับความเป็นส่วนตัว
--- Runtime: Rust stable toolchain ไบนารีเดียว ไม่มี runtime dependencies
## เริ่มต้นอย่างรวดเร็ว ### Homebrew (macOS/Linuxbrew)
### ข้อกำหนด ```bash
brew install zeroclaw
- Rust 1.70+ ```
- API key ของผู้ให้บริการ LLM (Anthropic, OpenAI ฯลฯ)
### Bootstrap คลิกเดียว
### การติดตั้ง
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./install.sh
```
`zeroclaw onboard` จะรันโดยอัตโนมัติหลังติดตั้งเพื่อกำหนดค่า workspace และ provider ของคุณ
## เริ่มต้นอย่างรวดเร็ว (TL;DR)
คู่มือสำหรับผู้เริ่มต้นฉบับสมบูรณ์ (การยืนยันตัวตน, pairing, ช่องทาง): [เริ่มต้นใช้งาน](docs/setup-guides/one-click-bootstrap.md)
```bash
# ติดตั้ง + onboard
./install.sh --api-key "sk-..." --provider openrouter
# เริ่ม gateway (เซิร์ฟเวอร์ webhook + แดชบอร์ดเว็บ)
zeroclaw gateway # ค่าเริ่มต้น: 127.0.0.1:42617
zeroclaw gateway --port 0 # พอร์ตสุ่ม (ความปลอดภัยเพิ่มขึ้น)
# พูดคุยกับผู้ช่วย
zeroclaw agent -m "Hello, ZeroClaw!"
# โหมดโต้ตอบ
zeroclaw agent
# เริ่ม runtime อัตโนมัติเต็มรูปแบบ (gateway + ช่องทาง + cron + hands)
zeroclaw daemon
# ตรวจสอบสถานะ
zeroclaw status
# รันการวินิจฉัย
zeroclaw doctor
```
กำลังอัปเกรด? รัน `zeroclaw doctor` หลังจากอัปเดต
### จากซอร์ส (สำหรับนักพัฒนา)
```bash ```bash
# Clone repository
git clone https://github.com/zeroclaw-labs/zeroclaw.git git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw cd zeroclaw
# Build cargo build --release --locked
cargo build --release cargo install --path . --force --locked
# Run zeroclaw onboard
cargo run --release
``` ```
### ด้วย Docker > **ทางเลือกสำหรับนักพัฒนา (ไม่ต้องติดตั้งแบบ global):** นำหน้าคำสั่งด้วย `cargo run --release --` (ตัวอย่าง: `cargo run --release -- status`)
## การย้ายจาก OpenClaw
ZeroClaw สามารถนำเข้า workspace, หน่วยความจำ และการกำหนดค่าจาก OpenClaw ของคุณ:
```bash ```bash
docker run -d \ # ดูตัวอย่างสิ่งที่จะถูกย้าย (ปลอดภัย, อ่านอย่างเดียว)
--name zeroclaw \ zeroclaw migrate openclaw --dry-run
-e ANTHROPIC_API_KEY=your_key \
-v zeroclaw-data:/app/data \ # รันการย้าย
zeroclaw/zeroclaw:latest zeroclaw migrate openclaw
``` ```
--- สิ่งนี้จะย้ายรายการหน่วยความจำ ไฟล์ workspace และการกำหนดค่าจาก `~/.openclaw/` ไปยัง `~/.zeroclaw/` การกำหนดค่าจะถูกแปลงจาก JSON เป็น TOML โดยอัตโนมัติ
## ค่าเริ่มต้นด้านความปลอดภัย (การเข้าถึง DM)
ZeroClaw เชื่อมต่อกับพื้นผิวการส่งข้อความจริง ถือว่า DM ขาเข้าเป็นข้อมูลที่ไม่น่าเชื่อถือ
คู่มือความปลอดภัยฉบับเต็ม: [SECURITY.md](SECURITY.md)
พฤติกรรมเริ่มต้นบนทุกช่องทาง:
- **DM pairing** (ค่าเริ่มต้น): ผู้ส่งที่ไม่รู้จักจะได้รับรหัส pairing สั้นๆ และบอทจะไม่ประมวลผลข้อความของพวกเขา
- อนุมัติด้วย: `zeroclaw pairing approve <channel> <code>` (จากนั้นผู้ส่งจะถูกเพิ่มในรายการอนุญาตในเครื่อง)
- DM ขาเข้าสาธารณะต้องมีการเลือกเข้าร่วมอย่างชัดเจนใน `config.toml`
- รัน `zeroclaw doctor` เพื่อค้นหานโยบาย DM ที่เสี่ยงหรือกำหนดค่าผิด
**ระดับความเป็นอัตโนมัติ:**
| ระดับ | พฤติกรรม |
|-------|----------|
| `ReadOnly` | เอเจนต์สามารถสังเกตแต่ไม่สามารถดำเนินการ |
| `Supervised` (ค่าเริ่มต้น) | เอเจนต์ดำเนินการโดยมีการอนุมัติสำหรับการดำเนินการที่มีความเสี่ยงปานกลาง/สูง |
| `Full` | เอเจนต์ดำเนินการอย่างอัตโนมัติภายในขอบเขตนโยบาย |
**ชั้นของ sandboxing:** การแยก workspace, การบล็อก path traversal, รายการอนุญาตคำสั่ง, เส้นทางที่ห้าม (`/etc`, `/root`, `~/.ssh`), การจำกัดอัตรา (การดำเนินการสูงสุด/ชั่วโมง, ขีดจำกัดค่าใช้จ่าย/วัน)
<!-- BEGIN:WHATS_NEW -->
<!-- END:WHATS_NEW -->
### 📢 ประกาศ
ใช้บอร์ดนี้สำหรับประกาศสำคัญ (การเปลี่ยนแปลงที่ทำลาย, คำแนะนำด้านความปลอดภัย, ช่วงเวลาบำรุงรักษา และตัวบล็อกการปล่อย)
| วันที่ (UTC) | ระดับ | ประกาศ | การดำเนินการ |
| ---------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2026-02-19 | _วิกฤต_ | เรา**ไม่มีส่วนเกี่ยวข้อง**กับ `openagen/zeroclaw`, `zeroclaw.org` หรือ `zeroclaw.net` โดเมน `zeroclaw.org` และ `zeroclaw.net` ปัจจุบันชี้ไปที่ fork `openagen/zeroclaw` และโดเมน/repository เหล่านั้นกำลังปลอมตัวเป็นเว็บไซต์/โปรเจกต์อย่างเป็นทางการของเรา | อย่าเชื่อถือข้อมูล ไบนารี การระดมทุน หรือประกาศจากแหล่งเหล่านั้น ใช้เฉพาะ[repository นี้](https://github.com/zeroclaw-labs/zeroclaw)และบัญชีโซเชียลที่ได้รับการยืนยันของเรา |
| 2026-02-21 | _สำคัญ_ | เว็บไซต์อย่างเป็นทางการของเราพร้อมใช้งานแล้ว: [zeroclawlabs.ai](https://zeroclawlabs.ai) ขอบคุณสำหรับความอดทนขณะที่เราเตรียมการเปิดตัว เรายังคงเห็นความพยายามในการแอบอ้าง ดังนั้น**อย่า**เข้าร่วมกิจกรรมการลงทุนหรือระดมทุนที่อ้างชื่อ ZeroClaw เว้นแต่จะเผยแพร่ผ่านช่องทางอย่างเป็นทางการของเรา | ใช้[repository นี้](https://github.com/zeroclaw-labs/zeroclaw)เป็นแหล่งข้อมูลที่เชื่อถือได้เพียงแหล่งเดียว ติดตาม [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21), [Facebook (Group)](https://www.facebook.com/groups/zeroclawlabs) และ [Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/) สำหรับอัปเดตอย่างเป็นทางการ |
| 2026-02-19 | _สำคัญ_ | Anthropic อัปเดตข้อกำหนดการยืนยันตัวตนและการใช้ข้อมูลรับรองเมื่อ 2026-02-19 โทเค็น OAuth ของ Claude Code (Free, Pro, Max) มีไว้สำหรับ Claude Code และ Claude.ai โดยเฉพาะ การใช้โทเค็น OAuth จาก Claude Free/Pro/Max ในผลิตภัณฑ์ เครื่องมือ หรือบริการอื่น (รวมถึง Agent SDK) ไม่ได้รับอนุญาตและอาจละเมิดข้อกำหนดบริการสำหรับผู้บริโภค | โปรดหลีกเลี่ยงการรวม OAuth ของ Claude Code ชั่วคราวเพื่อป้องกันการสูญเสียที่อาจเกิดขึ้น ข้อความต้นฉบับ: [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use) |
## จุดเด่น
- **Runtime ที่เบาเป็นค่าเริ่มต้น** — เวิร์กโฟลว์ CLI และสถานะทั่วไปทำงานในซองหน่วยความจำไม่กี่เมกะไบต์บน release builds
- **Deployment ที่คุ้มค่า** — ออกแบบสำหรับบอร์ด $10 และอินสแตนซ์คลาวด์ขนาดเล็ก ไม่มี runtime dependencies ที่หนัก
- **Cold Start ที่รวดเร็ว** — runtime Rust ไบนารีเดียวทำให้การเริ่มต้นคำสั่งและ daemon เกือบจะทันที
- **สถาปัตยกรรมที่พกพาได้** — ไบนารีเดียวข้าม ARM, x86 และ RISC-V พร้อม provider/ช่องทาง/เครื่องมือที่สลับได้
- **Gateway แบบ Local-first** — control plane เดียวสำหรับ sessions, ช่องทาง, เครื่องมือ, cron, SOPs และเหตุการณ์
- **กล่องข้อความหลายช่องทาง** — WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WebSocket และอื่นๆ
- **การจัดการหลายเอเจนต์ (Hands)** — ฝูงเอเจนต์อัตโนมัติที่ทำงานตามกำหนดเวลาและฉลาดขึ้นตามเวลา
- **Standard Operating Procedures (SOPs)** — การทำงานอัตโนมัติของเวิร์กโฟลว์ที่ขับเคลื่อนด้วยเหตุการณ์ด้วย MQTT, webhook, cron และทริกเกอร์อุปกรณ์ต่อพ่วง
- **แดชบอร์ดเว็บ** — UI เว็บ React 19 + Vite พร้อมแชทเรียลไทม์, เบราว์เซอร์หน่วยความจำ, ตัวแก้ไขการกำหนดค่า, ตัวจัดการ cron และตัวตรวจสอบเครื่องมือ
- **อุปกรณ์ต่อพ่วง** — ESP32, STM32 Nucleo, Arduino, Raspberry Pi GPIO ผ่าน trait `Peripheral`
- **เครื่องมือชั้นหนึ่ง** — shell, file I/O, browser, git, web fetch/search, MCP, Jira, Notion, Google Workspace และ 70+ อื่นๆ
- **Hook วงจรชีวิต** — สกัดกั้นและแก้ไขการเรียก LLM, การทำงานของเครื่องมือ และข้อความในทุกขั้นตอน
- **แพลตฟอร์ม skill** — skill ที่รวมมา, ชุมชน และ workspace พร้อมการตรวจสอบความปลอดภัย
- **รองรับ tunnel** — Cloudflare, Tailscale, ngrok, OpenVPN และ tunnel แบบกำหนดเองสำหรับการเข้าถึงระยะไกล
### ทำไมทีมถึงเลือก ZeroClaw
- **เบาเป็นค่าเริ่มต้น:** ไบนารี Rust ขนาดเล็ก เริ่มต้นเร็ว footprint หน่วยความจำต่ำ
- **ปลอดภัยตามการออกแบบ:** pairing, sandboxing ที่เข้มงวด, รายการอนุญาตที่ชัดเจน, การกำหนดขอบเขต workspace
- **สลับได้ทั้งหมด:** ระบบหลักเป็น traits (providers, ช่องทาง, เครื่องมือ, หน่วยความจำ, tunnels)
- **ไม่มี lock-in:** รองรับ provider ที่เข้ากันได้กับ OpenAI + endpoint แบบกำหนดเองที่เสียบได้
## สรุป Benchmark (ZeroClaw vs OpenClaw, ทำซ้ำได้)
Benchmark เร็วบนเครื่องท้องถิ่น (macOS arm64, ก.พ. 2026) ปรับมาตรฐานสำหรับฮาร์ดแวร์ edge 0.8GHz
| | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 |
| ------------------------- | ------------- | -------------- | --------------- | -------------------- |
| **ภาษา** | TypeScript | Python | Go | **Rust** |
| **RAM** | > 1GB | > 100MB | < 10MB | **< 5MB** |
| **Startup (แกน 0.8GHz)** | > 500s | > 30s | < 1s | **< 10ms** |
| **ขนาดไบนารี** | ~28MB (dist) | N/A (Scripts) | ~8MB | **~8.8 MB** |
| **ค่าใช้จ่าย** | Mac Mini $599 | Linux SBC ~$50 | Linux Board $10 | **ฮาร์ดแวร์ใดก็ได้ $10** |
> หมายเหตุ: ผลลัพธ์ ZeroClaw วัดจาก release builds โดยใช้ `/usr/bin/time -l` OpenClaw ต้องการ runtime Node.js (โดยทั่วไป ~390MB overhead หน่วยความจำเพิ่มเติม) ในขณะที่ NanoBot ต้องการ runtime Python PicoClaw และ ZeroClaw เป็นไบนารีแบบ static ตัวเลข RAM ด้านบนเป็นหน่วยความจำ runtime ความต้องการการคอมไพล์ตอน build สูงกว่า
<p align="center">
<img src="docs/assets/zeroclaw-comparison.jpeg" alt="ZeroClaw vs OpenClaw Comparison" width="800" />
</p>
### การวัดในเครื่องที่ทำซ้ำได้
```bash
cargo build --release
ls -lh target/release/zeroclaw
/usr/bin/time -l target/release/zeroclaw --help
/usr/bin/time -l target/release/zeroclaw status
```
## ทุกสิ่งที่เราสร้างมาจนถึงตอนนี้
### แพลตฟอร์มหลัก
- Control plane HTTP/WS/SSE ของ Gateway พร้อม sessions, presence, การกำหนดค่า, cron, webhooks, แดชบอร์ดเว็บ และ pairing
- พื้นผิว CLI: `gateway`, `agent`, `onboard`, `doctor`, `status`, `service`, `migrate`, `auth`, `cron`, `channel`, `skills`
- ลูปการจัดการเอเจนต์พร้อม tool dispatch, การสร้าง prompt, การจำแนกข้อความ และการโหลดหน่วยความจำ
- โมเดล session พร้อมการบังคับใช้นโยบายความปลอดภัย ระดับความเป็นอัตโนมัติ และ approval gating
- Wrapper provider ที่ยืดหยุ่นพร้อม failover, retry และ model routing ข้าม 20+ LLM backends
### ช่องทาง
ช่องทาง: WhatsApp (native), Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, DingTalk, Lark, Mattermost, Nextcloud Talk, Nostr, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WATI, Mochat, Linq, Notion, WebSocket, ClawdTalk
Feature-gated: Matrix (`channel-matrix`), Lark (`channel-lark`), Nostr (`channel-nostr`)
### แดชบอร์ดเว็บ
แดชบอร์ดเว็บ React 19 + Vite 6 + Tailwind CSS 4 ให้บริการโดยตรงจาก Gateway:
- **Dashboard** — ภาพรวมระบบ สถานะสุขภาพ uptime การติดตามค่าใช้จ่าย
- **Agent Chat** — แชทโต้ตอบกับเอเจนต์
- **Memory** — เรียกดูและจัดการรายการหน่วยความจำ
- **Config** — ดูและแก้ไขการกำหนดค่า
- **Cron** — จัดการงานที่กำหนดเวลา
- **Tools** — เรียกดูเครื่องมือที่มี
- **Logs** — ดูบันทึกกิจกรรมเอเจนต์
- **Cost** — การใช้โทเค็นและการติดตามค่าใช้จ่าย
- **Doctor** — การวินิจฉัยสุขภาพระบบ
- **Integrations** — สถานะการรวมและการตั้งค่า
- **Pairing** — การจัดการ pairing อุปกรณ์
### เป้าหมาย firmware
| เป้าหมาย | แพลตฟอร์ม | วัตถุประสงค์ |
|--------|----------|---------|
| ESP32 | Espressif ESP32 | เอเจนต์อุปกรณ์ต่อพ่วงไร้สาย |
| ESP32-UI | ESP32 + Display | เอเจนต์พร้อมอินเทอร์เฟซภาพ |
| STM32 Nucleo | STM32 (ARM Cortex-M) | อุปกรณ์ต่อพ่วงอุตสาหกรรม |
| Arduino | Arduino | บริดจ์เซ็นเซอร์/แอคชูเอเตอร์พื้นฐาน |
| Uno Q Bridge | Arduino Uno | บริดจ์ซีเรียลไปยังเอเจนต์ |
### เครื่องมือ + การทำงานอัตโนมัติ
- **หลัก:** shell, file read/write/edit, การดำเนินการ git, glob search, content search
- **เว็บ:** browser control, web fetch, web search, screenshot, image info, PDF read
- **การรวม:** Jira, Notion, Google Workspace, Microsoft 365, LinkedIn, Composio, Pushover
- **MCP:** Model Context Protocol tool wrapper + deferred tool sets
- **การกำหนดเวลา:** cron add/remove/update/run, schedule tool
- **หน่วยความจำ:** recall, store, forget, knowledge, project intel
- **ขั้นสูง:** delegate (เอเจนต์-ต่อ-เอเจนต์), swarm, model switch/routing, security ops, cloud ops
- **ฮาร์ดแวร์:** board info, memory map, memory read (feature-gated)
### Runtime + ความปลอดภัย
- **ระดับความเป็นอัตโนมัติ:** ReadOnly, Supervised (ค่าเริ่มต้น), Full
- **Sandboxing:** การแยก workspace, การบล็อก path traversal, รายการอนุญาตคำสั่ง, เส้นทางที่ห้าม, Landlock (Linux), Bubblewrap
- **การจำกัดอัตรา:** การดำเนินการสูงสุดต่อชั่วโมง ค่าใช้จ่ายสูงสุดต่อวัน (กำหนดค่าได้)
- **Approval gating:** การอนุมัติแบบโต้ตอบสำหรับการดำเนินการที่มีความเสี่ยงปานกลาง/สูง
- **E-stop:** ความสามารถในการปิดระบบฉุกเฉิน
- **129+ การทดสอบความปลอดภัย** ใน CI อัตโนมัติ
### Ops + การแพ็กเกจ
- แดชบอร์ดเว็บให้บริการโดยตรงจาก Gateway
- รองรับ tunnel: Cloudflare, Tailscale, ngrok, OpenVPN, คำสั่งกำหนดเอง
- Docker runtime adapter สำหรับการทำงานแบบ containerized
- CI/CD: beta (อัตโนมัติเมื่อ push) → stable (dispatch แบบ manual) → Docker, crates.io, Scoop, AUR, Homebrew, tweet
- ไบนารี pre-built สำหรับ Linux (x86_64, aarch64, armv7), macOS (x86_64, aarch64), Windows (x86_64)
## การกำหนดค่า ## การกำหนดค่า
ZeroClaw ใช้ไฟล์กำหนดค่า YAML โดยค่าเริ่มต้นจะค้นหา `config.yaml` ขั้นต่ำ `~/.zeroclaw/config.toml`:
```yaml ```toml
# ผู้ให้บริการเริ่มต้น default_provider = "anthropic"
provider: anthropic api_key = "sk-ant-..."
# การกำหนดค่าผู้ให้บริการ
providers:
anthropic:
api_key: ${ANTHROPIC_API_KEY}
model: claude-3-5-sonnet-20241022
openai:
api_key: ${OPENAI_API_KEY}
model: gpt-4o
# การกำหนดค่าหน่วยความจำ
memory:
backend: sqlite
path: data/memory.db
# การกำหนดค่าช่องทาง
channels:
telegram:
token: ${TELEGRAM_BOT_TOKEN}
``` ```
--- อ้างอิงการกำหนดค่าฉบับเต็ม: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
### การกำหนดค่าช่องทาง
**Telegram:**
```toml
[channels.telegram]
bot_token = "123456:ABC-DEF..."
```
**Discord:**
```toml
[channels.discord]
token = "your-bot-token"
```
**Slack:**
```toml
[channels.slack]
bot_token = "xoxb-..."
app_token = "xapp-..."
```
**WhatsApp:**
```toml
[channels.whatsapp]
enabled = true
```
**Matrix:**
```toml
[channels.matrix]
homeserver_url = "https://matrix.org"
username = "@bot:matrix.org"
password = "..."
```
**Signal:**
```toml
[channels.signal]
phone_number = "+1234567890"
```
### การกำหนดค่า tunnel
```toml
[tunnel]
kind = "cloudflare" # หรือ "tailscale", "ngrok", "openvpn", "custom", "none"
```
รายละเอียด: [อ้างอิงช่องทาง](docs/reference/api/channels-reference.md) · [อ้างอิงการกำหนดค่า](docs/reference/api/config-reference.md)
### รองรับ runtime (ปัจจุบัน)
- **`native`** (ค่าเริ่มต้น) — การทำงานแบบ process โดยตรง เส้นทางที่เร็วที่สุด เหมาะสำหรับสภาพแวดล้อมที่เชื่อถือได้
- **`docker`** — การแยก container เต็มรูปแบบ นโยบายความปลอดภัยที่บังคับใช้ ต้องการ Docker
ตั้ง `runtime.kind = "docker"` สำหรับ sandboxing ที่เข้มงวดหรือการแยกเครือข่าย
## การยืนยันตัวตนแบบสมัครสมาชิก (OpenAI Codex / Claude Code / Gemini)
ZeroClaw รองรับโปรไฟล์การยืนยันตัวตนแบบ subscription-native (หลายบัญชี, เข้ารหัสเมื่อเก็บ)
- ไฟล์จัดเก็บ: `~/.zeroclaw/auth-profiles.json`
- คีย์เข้ารหัส: `~/.zeroclaw/.secret_key`
- รูปแบบ id โปรไฟล์: `<provider>:<profile_name>` (ตัวอย่าง: `openai-codex:work`)
```bash
# OpenAI Codex OAuth (สมัครสมาชิก ChatGPT)
zeroclaw auth login --provider openai-codex --device-code
# Gemini OAuth
zeroclaw auth login --provider gemini --profile default
# Anthropic setup-token
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# ตรวจสอบ / refresh / สลับโปรไฟล์
zeroclaw auth status
zeroclaw auth refresh --provider openai-codex --profile default
zeroclaw auth use --provider openai-codex --profile work
# รันเอเจนต์ด้วย auth แบบสมัครสมาชิก
zeroclaw agent --provider openai-codex -m "hello"
zeroclaw agent --provider anthropic -m "hello"
```
## Workspace เอเจนต์ + skill
Root workspace: `~/.zeroclaw/workspace/` (กำหนดค่าได้ผ่าน config)
ไฟล์ prompt ที่ inject:
- `IDENTITY.md` — บุคลิกภาพและบทบาทของเอเจนต์
- `USER.md` — บริบทและความชอบของผู้ใช้
- `MEMORY.md` — ข้อเท็จจริงและบทเรียนระยะยาว
- `AGENTS.md` — ข้อตกลง session และกฎการเริ่มต้น
- `SOUL.md` — อัตลักษณ์หลักและหลักการดำเนินงาน
Skills: `~/.zeroclaw/workspace/skills/<skill>/SKILL.md` หรือ `SKILL.toml`
```bash
# แสดงรายการ skill ที่ติดตั้ง
zeroclaw skills list
# ติดตั้งจาก git
zeroclaw skills install https://github.com/user/my-skill.git
# ตรวจสอบความปลอดภัยก่อนติดตั้ง
zeroclaw skills audit https://github.com/user/my-skill.git
# ลบ skill
zeroclaw skills remove my-skill
```
## คำสั่ง CLI
```bash
# การจัดการ workspace
zeroclaw onboard # วิซาร์ดการตั้งค่าแบบแนะนำ
zeroclaw status # แสดงสถานะ daemon/เอเจนต์
zeroclaw doctor # รันการวินิจฉัยระบบ
# Gateway + daemon
zeroclaw gateway # เริ่มเซิร์ฟเวอร์ gateway (127.0.0.1:42617)
zeroclaw daemon # เริ่ม runtime อัตโนมัติเต็มรูปแบบ
# เอเจนต์
zeroclaw agent # โหมดแชทโต้ตอบ
zeroclaw agent -m "message" # โหมดข้อความเดียว
# การจัดการบริการ
zeroclaw service install # ติดตั้งเป็นบริการ OS (launchd/systemd)
zeroclaw service start|stop|restart|status
# ช่องทาง
zeroclaw channel list # แสดงรายการช่องทางที่กำหนดค่า
zeroclaw channel doctor # ตรวจสอบสุขภาพช่องทาง
zeroclaw channel bind-telegram 123456789
# Cron + การกำหนดเวลา
zeroclaw cron list # แสดงรายการงานที่กำหนดเวลา
zeroclaw cron add "*/5 * * * *" --prompt "Check system health"
zeroclaw cron remove <id>
# หน่วยความจำ
zeroclaw memory list # แสดงรายการหน่วยความจำ
zeroclaw memory get <key> # ดึงหน่วยความจำ
zeroclaw memory stats # สถิติหน่วยความจำ
# โปรไฟล์การยืนยันตัวตน
zeroclaw auth login --provider <name>
zeroclaw auth status
zeroclaw auth use --provider <name> --profile <profile>
# อุปกรณ์ต่อพ่วง
zeroclaw hardware discover # สแกนอุปกรณ์ที่เชื่อมต่อ
zeroclaw peripheral list # แสดงรายการอุปกรณ์ต่อพ่วงที่เชื่อมต่อ
zeroclaw peripheral flash # แฟลช firmware ไปยังอุปกรณ์
# การย้าย
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw
# การเติมเต็ม shell
source <(zeroclaw completions bash)
zeroclaw completions zsh > ~/.zfunc/_zeroclaw
```
อ้างอิงคำสั่งฉบับเต็ม: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
<!-- markdownlint-disable MD001 MD024 -->
## ข้อกำหนดเบื้องต้น
<details>
<summary><strong>Windows</strong></summary>
#### จำเป็น
1. **Visual Studio Build Tools** (ให้ linker MSVC และ Windows SDK):
```powershell
winget install Microsoft.VisualStudio.2022.BuildTools
```
ระหว่างการติดตั้ง (หรือผ่าน Visual Studio Installer) เลือก workload **"Desktop development with C++"**
2. **Rust toolchain:**
```powershell
winget install Rustlang.Rustup
```
หลังติดตั้ง เปิดเทอร์มินัลใหม่และรัน `rustup default stable` เพื่อให้แน่ใจว่า toolchain ที่เสถียรใช้งานอยู่
3. **ตรวจสอบ** ว่าทั้งสองใช้งานได้:
```powershell
rustc --version
cargo --version
```
#### ไม่บังคับ
- **Docker Desktop** — จำเป็นเฉพาะเมื่อใช้ [Docker sandboxed runtime](#รองรับ-runtime-ปัจจุบัน) (`runtime.kind = "docker"`) ติดตั้งผ่าน `winget install Docker.DockerDesktop`
</details>
<details>
<summary><strong>Linux / macOS</strong></summary>
#### จำเป็น
1. **Build essentials:**
- **Linux (Debian/Ubuntu):** `sudo apt install build-essential pkg-config`
- **Linux (Fedora/RHEL):** `sudo dnf group install development-tools && sudo dnf install pkg-config`
- **macOS:** ติดตั้ง Xcode Command Line Tools: `xcode-select --install`
2. **Rust toolchain:**
```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
ดู [rustup.rs](https://rustup.rs) สำหรับรายละเอียด
3. **ตรวจสอบ** ว่าทั้งสองใช้งานได้:
```bash
rustc --version
cargo --version
```
#### ตัวติดตั้งบรรทัดเดียว
หรือข้ามขั้นตอนด้านบนและติดตั้งทุกอย่าง (dependencies ระบบ, Rust, ZeroClaw) ในคำสั่งเดียว:
```bash
curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash
```
#### ข้อกำหนดทรัพยากรการคอมไพล์
การ build จากซอร์สต้องการทรัพยากรมากกว่าการรันไบนารีที่ได้:
| ทรัพยากร | ขั้นต่ำ | แนะนำ |
| -------------- | ------- | ----------- |
| **RAM + swap** | 2 GB | 4 GB+ |
| **พื้นที่ว่าง** | 6 GB | 10 GB+ |
หากโฮสต์ของคุณต่ำกว่าขั้นต่ำ ใช้ไบนารี pre-built:
```bash
./install.sh --prefer-prebuilt
```
เพื่อต้องการการติดตั้งแบบไบนารีเท่านั้นโดยไม่มี fallback ซอร์ส:
```bash
./install.sh --prebuilt-only
```
#### ไม่บังคับ
- **Docker** — จำเป็นเฉพาะเมื่อใช้ [Docker sandboxed runtime](#รองรับ-runtime-ปัจจุบัน) (`runtime.kind = "docker"`) ติดตั้งผ่านตัวจัดการแพ็กเกจของคุณหรือ [docker.com](https://docs.docker.com/engine/install/)
> **หมายเหตุ:** `cargo build --release` เริ่มต้นใช้ `codegen-units=1` เพื่อลดความดันการคอมไพล์สูงสุด สำหรับ build ที่เร็วขึ้นบนเครื่องที่แรง ใช้ `cargo build --profile release-fast`
</details>
<!-- markdownlint-enable MD001 MD024 -->
### ไบนารี pre-built
Release assets เผยแพร่สำหรับ:
- Linux: `x86_64`, `aarch64`, `armv7`
- macOS: `x86_64`, `aarch64`
- Windows: `x86_64`
ดาวน์โหลด assets ล่าสุดจาก:
<https://github.com/zeroclaw-labs/zeroclaw/releases/latest>
## เอกสาร ## เอกสาร
สำหรับเอกสารโดยละเอียด ดูที่: ใช้เมื่อคุณผ่านขั้นตอน onboarding แล้วและต้องการอ้างอิงที่ลึกกว่า
- [ศูนย์เอกสาร](docs/README.md) - เริ่มด้วย[สารบัญเอกสาร](docs/README.md)สำหรับการนำทางและ "อะไรอยู่ที่ไหน"
- [ข้อมูลอ้างอิงคำสั่ง](docs/commands-reference.md) - อ่าน[ภาพรวมสถาปัตยกรรม](docs/architecture.md)สำหรับโมเดลระบบทั้งหมด
- [ข้อมูลอ้างอิงผู้ให้บริการ](docs/providers-reference.md) - ใช้[อ้างอิงการกำหนดค่า](docs/reference/api/config-reference.md)เมื่อคุณต้องการทุก key และตัวอย่าง
- [ข้อมูลอ้างอิงช่องทาง](docs/channels-reference.md) - รัน Gateway ตามหนังสือด้วย[runbook การดำเนินงาน](docs/ops/operations-runbook.md)
- [ข้อมูลอ้างอิงการกำหนดค่า](docs/config-reference.md) - ทำตาม [ZeroClaw Onboard](#เริ่มต้นอย่างรวดเร็ว) สำหรับการตั้งค่าแบบแนะนำ
- แก้ไขปัญหาที่พบบ่อยด้วย[คู่มือแก้ไขปัญหา](docs/ops/troubleshooting.md)
- ตรวจสอบ[แนวทางความปลอดภัย](docs/security/README.md)ก่อนเปิดเผยสิ่งใด
--- ### เอกสารอ้างอิง
- ศูนย์กลางเอกสาร: [docs/README.md](docs/README.md)
- TOC เอกสารรวม: [docs/SUMMARY.md](docs/SUMMARY.md)
- อ้างอิงคำสั่ง: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
- อ้างอิงการกำหนดค่า: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
- อ้างอิง provider: [docs/reference/api/providers-reference.md](docs/reference/api/providers-reference.md)
- อ้างอิงช่องทาง: [docs/reference/api/channels-reference.md](docs/reference/api/channels-reference.md)
- Runbook การดำเนินงาน: [docs/ops/operations-runbook.md](docs/ops/operations-runbook.md)
- การแก้ไขปัญหา: [docs/ops/troubleshooting.md](docs/ops/troubleshooting.md)
### เอกสารความร่วมมือ
- คู่มือการมีส่วนร่วม: [CONTRIBUTING.md](CONTRIBUTING.md)
- นโยบาย PR workflow: [docs/contributing/pr-workflow.md](docs/contributing/pr-workflow.md)
- คู่มือ CI workflow: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Playbook ผู้ตรวจสอบ: [docs/contributing/reviewer-playbook.md](docs/contributing/reviewer-playbook.md)
- นโยบายเปิดเผยความปลอดภัย: [SECURITY.md](SECURITY.md)
- เทมเพลตเอกสาร: [docs/contributing/doc-template.md](docs/contributing/doc-template.md)
### Deployment + การดำเนินงาน
- คู่มือ deployment เครือข่าย: [docs/ops/network-deployment.md](docs/ops/network-deployment.md)
- Playbook proxy agent: [docs/ops/proxy-agent-playbook.md](docs/ops/proxy-agent-playbook.md)
- คู่มือฮาร์ดแวร์: [docs/hardware/README.md](docs/hardware/README.md)
## Smooth Crab 🦀
ZeroClaw ถูกสร้างสำหรับ smooth crab 🦀 ผู้ช่วย AI ที่เร็วและมีประสิทธิภาพ สร้างโดย Argenis De La Rosa และชุมชน
- [zeroclawlabs.ai](https://zeroclawlabs.ai)
- [@zeroclawlabs](https://x.com/zeroclawlabs)
## สนับสนุน ZeroClaw
หาก ZeroClaw ช่วยงานของคุณและคุณต้องการสนับสนุนการพัฒนาต่อเนื่อง คุณสามารถบริจาคที่นี่:
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
### 🙏 ขอขอบคุณเป็นพิเศษ
ขอขอบคุณจากใจจริงถึงชุมชนและสถาบันที่สร้างแรงบันดาลใจและขับเคลื่อนงาน open-source นี้:
- **Harvard University** — สำหรับการส่งเสริมความอยากรู้ทางปัญญาและผลักดันขอบเขตของสิ่งที่เป็นไปได้
- **MIT** — สำหรับการสนับสนุนความรู้เปิด open source และความเชื่อว่าเทคโนโลยีควรเข้าถึงได้สำหรับทุกคน
- **Sundai Club** — สำหรับชุมชน พลังงาน และแรงผลักดันอย่างไม่หยุดหย่อนในการสร้างสิ่งที่สำคัญ
- **โลก & เหนือกว่า** 🌍✨ — ถึงผู้มีส่วนร่วม นักฝัน และผู้สร้างทุกคนที่ทำให้ open source เป็นพลังเพื่อสิ่งดีๆ นี่สำหรับคุณ
เราสร้างแบบเปิดเพราะไอเดียที่ดีที่สุดมาจากทุกที่ หากคุณอ่านสิ่งนี้ คุณเป็นส่วนหนึ่งของมัน ยินดีต้อนรับ 🦀❤️
## การมีส่วนร่วม ## การมีส่วนร่วม
ยินดีต้อนรับการมีส่วนร่วม! โปรดอ่าน [คู่มือการมีส่วนร่วม](CONTRIBUTING.md) ใหม่กับ ZeroClaw? มองหา issues ที่มีป้ายกำกับ [`good first issue`](https://github.com/zeroclaw-labs/zeroclaw/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) — ดู[คู่มือการมีส่วนร่วม](CONTRIBUTING.md#first-time-contributors)สำหรับวิธีเริ่มต้น ยินดีรับ PR ที่สร้างด้วย AI/vibe-coded! 🤖
ดู [CONTRIBUTING.md](CONTRIBUTING.md) และ [CLA.md](docs/contributing/cla.md) ใช้งาน trait แล้วส่ง PR:
- คู่มือ CI workflow: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- `Provider` ใหม่ → `src/providers/`
- `Channel` ใหม่ → `src/channels/`
- `Observer` ใหม่ → `src/observability/`
- `Tool` ใหม่ → `src/tools/`
- `Memory` ใหม่ → `src/memory/`
- `Tunnel` ใหม่ → `src/tunnel/`
- `Peripheral` ใหม่ → `src/peripherals/`
- `Skill` ใหม่ → `~/.zeroclaw/workspace/skills/<name>/`
<!-- BEGIN:RECENT_CONTRIBUTORS -->
<!-- END:RECENT_CONTRIBUTORS -->
## ⚠️ Repository อย่างเป็นทางการ & คำเตือนการแอบอ้าง
**นี่คือ repository อย่างเป็นทางการเพียงแห่งเดียวของ ZeroClaw:**
> https://github.com/zeroclaw-labs/zeroclaw
repository, องค์กร, โดเมน หรือแพ็กเกจอื่นใดที่อ้างว่าเป็น "ZeroClaw" หรือบ่งบอกถึงการเกี่ยวข้องกับ ZeroClaw Labs นั้น**ไม่ได้รับอนุญาตและไม่มีส่วนเกี่ยวข้องกับโปรเจกต์นี้** Fork ที่ไม่ได้รับอนุญาตที่ทราบจะถูกระบุไว้ใน [TRADEMARK.md](docs/maintainers/trademark.md)
หากคุณพบการแอบอ้างหรือการใช้เครื่องหมายการค้าในทางที่ผิด โปรด[เปิด issue](https://github.com/zeroclaw-labs/zeroclaw/issues)
--- ---
## สัญญาอนุญาต ## สัญญาอนุญาต
โปรเจกต์นี้มีสัญญาอนุญาตคู่: ZeroClaw มี dual-license เพื่อความเปิดกว้างสูงสุดและการปกป้องผู้มีส่วนร่วม:
- MIT License | สัญญาอนุญาต | กรณีการใช้งาน |
- Apache License, เวอร์ชัน 2.0 |---|---|
| [MIT](LICENSE-MIT) | Open-source, วิจัย, วิชาการ, ใช้ส่วนตัว |
| [Apache 2.0](LICENSE-APACHE) | การปกป้องสิทธิบัตร, สถาบัน, deployment เชิงพาณิชย์ |
ดู [LICENSE-APACHE](LICENSE-APACHE) และ [LICENSE-MIT](LICENSE-MIT) สำหรับรายละเอียด คุณสามารถเลือกสัญญาอนุญาตใดก็ได้ **ผู้มีส่วนร่วมให้สิทธิ์โดยอัตโนมัติภายใต้ทั้งสอง** — ดู [CLA.md](docs/contributing/cla.md) สำหรับข้อตกลงผู้มีส่วนร่วมฉบับเต็ม
### เครื่องหมายการค้า
ชื่อและโลโก้ **ZeroClaw** เป็นเครื่องหมายการค้าของ ZeroClaw Labs สัญญาอนุญาตนี้ไม่ให้สิทธิ์ในการใช้เพื่อบ่งบอกถึงการรับรองหรือการเกี่ยวข้อง ดู [TRADEMARK.md](docs/maintainers/trademark.md) สำหรับการใช้งานที่อนุญาตและห้าม
### การปกป้องผู้มีส่วนร่วม
- คุณ**คงสิทธิ์ลิขสิทธิ์**ของผลงานของคุณ
- **การให้สิทธิ์สิทธิบัตร** (Apache 2.0) ปกป้องคุณจากการเรียกร้องสิทธิบัตรโดยผู้มีส่วนร่วมคนอื่น
- ผลงานของคุณ**ได้รับการระบุอย่างถาวร**ในประวัติ commit และ [NOTICE](NOTICE)
- ไม่มีสิทธิ์เครื่องหมายการค้าที่ถ่ายโอนโดยการมีส่วนร่วม
--- ---
## ชุมชน **ZeroClaw** — ไม่มีโอเวอร์เฮด ไม่มีการประนีประนอม Deploy ที่ไหนก็ได้ สลับอะไรก็ได้ 🦀
- [Telegram](https://t.me/zeroclawlabs) ## ผู้มีส่วนร่วม
- [Facebook Group](https://www.facebook.com/groups/zeroclaw)
- [WeChat Group](https://zeroclawlabs.cn/group.jpg)
--- <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors">
<img src="https://contrib.rocks/image?repo=zeroclaw-labs/zeroclaw" alt="ZeroClaw contributors" />
</a>
## ผู้สนับสนุน รายการนี้สร้างจากกราฟผู้มีส่วนร่วม GitHub และอัปเดตโดยอัตโนมัติ
หาก ZeroClaw มีประโยชน์สำหรับคุณ โปรดพิจารณาซื้อกาแฟให้เรา: ## ประวัติดาว
[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee)](https://buymeacoffee.com/argenistherose) <p align="center">
<a href="https://www.star-history.com/#zeroclaw-labs/zeroclaw&type=date&legend=top-left">
<!-- BEGIN:RECENT_CONTRIBUTORS --> <picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&theme=dark&legend=top-left" />
### 🌟 Recent Contributors (v0.3.1) <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
3 contributors shipped features, fixes, and improvements in this release cycle: </picture>
</a>
- **Argenis** </p>
- **argenis de la rosa**
- **Claude Opus 4.6**
Thank you to everyone who opened issues, reviewed PRs, translated docs, and helped test. Every contribution matters. 🦀
<!-- END:RECENT_CONTRIBUTORS -->

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,23 +1,29 @@
<p align="center"> <p align="center">
<img src="zeroclaw.png" alt="ZeroClaw" width="200" /> <img src="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/docs/assets/zeroclaw-banner.png" alt="ZeroClaw" width="600" />
</p> </p>
<h1 align="center">ZeroClaw 🦀</h1> <h1 align="center">🦀 ZeroClaw — Персональний AI-Асистент</h1>
<p align="center"> <p align="center">
<strong>Нуль накладних витрат. Нуль компромісів. 100% Rust. 100% Агностичний.</strong><br> <strong>Нуль накладних витрат. Нуль компромісів. 100% Rust. 100% Агностичний.</strong><br>
⚡️ <strong>Працює на $10 обладнанні з <5MB RAM: Це на 99% менше пам'яті ніж OpenClaw і на 98% дешевше ніж Mac mini!</strong> ⚡️ <strong>Працює на обладнанні за $10 з <5MB RAM: це на 99% менше пам'яті, ніж OpenClaw, і на 98% дешевше, ніж Mac mini!</strong>
</p> </p>
<p align="center"> <p align="center">
<a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a> <a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
<a href="NOTICE"><img src="https://img.shields.io/badge/contributors-27+-green.svg" alt="Contributors" /></a> <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors"><img src="https://img.shields.io/github/contributors/zeroclaw-labs/zeroclaw?color=green" alt="Contributors" /></a>
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a> <a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
<a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a> <a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a>
<a href="https://zeroclawlabs.cn/group.jpg"><img src="https://img.shields.io/badge/WeChat-Group-B7D7A8?logo=wechat&logoColor=white" alt="WeChat Group" /></a> <a href="https://www.facebook.com/groups/zeroclawlabs"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a>
<a href="https://www.xiaohongshu.com/user/profile/67cbfc43000000000d008307?xsec_token=AB73VnYnGNx5y36EtnnZfGmAmS-6Wzv8WMuGpfwfkg6Yc%3D&xsec_source=pc_search"><img src="https://img.shields.io/badge/Xiaohongshu-Official-FF2442?style=flat" alt="Xiaohongshu: Official" /></a> <a href="https://discord.com/invite/wDshRVqRjx"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://t.me/zeroclawlabs"><img src="https://img.shields.io/badge/Telegram-%40zeroclawlabs-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @zeroclawlabs" /></a> <a href="https://www.instagram.com/therealzeroclaw"><img src="https://img.shields.io/badge/Instagram-%40therealzeroclaw-E4405F?style=flat&logo=instagram&logoColor=white" alt="Instagram: @therealzeroclaw" /></a>
<a href="https://www.facebook.com/groups/zeroclaw"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a> <a href="https://www.tiktok.com/@zeroclawlabs"><img src="https://img.shields.io/badge/TikTok-%40zeroclawlabs-000000?style=flat&logo=tiktok&logoColor=white" alt="TikTok: @zeroclawlabs" /></a>
<a href="https://www.rednote.com/user/profile/69b735e6000000002603927e"><img src="https://img.shields.io/badge/RedNote-Official-FF2442?style=flat" alt="RedNote" /></a>
<a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a>
</p>
<p align="center">
Створено студентами та учасниками спільнот Harvard, MIT і Sundai.Club.
</p> </p>
<p align="center"> <p align="center">
@ -55,149 +61,695 @@
<a href="README.nb.md">🇳🇴 Norsk</a> <a href="README.nb.md">🇳🇴 Norsk</a>
</p> </p>
--- ZeroClaw — це персональний AI-асистент, який ви запускаєте на власних пристроях. Він відповідає вам у каналах, які ви вже використовуєте (WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work та інші). Він має веб-панель керування для контролю в реальному часі та може підключатися до апаратних периферійних пристроїв (ESP32, STM32, Arduino, Raspberry Pi). Gateway — це лише площина управління, а продукт — це асистент.
<!-- BEGIN:WHATS_NEW --> Якщо вам потрібен персональний, одного користувача асистент, який відчувається локальним, швидким і завжди доступним — це він.
### 🚀 What's New in v0.3.1 (March 2026) <p align="center">
<a href="https://zeroclawlabs.ai">Вебсайт</a> ·
<a href="docs/README.md">Документація</a> ·
<a href="docs/architecture.md">Архітектура</a> ·
<a href="#швидкий-старт-tldr">Початок роботи</a> ·
<a href="#міграція-з-openclaw">Міграція з OpenClaw</a> ·
<a href="docs/ops/troubleshooting.md">Усунення неполадок</a> ·
<a href="https://discord.com/invite/wDshRVqRjx">Discord</a>
</p>
| Area | Highlights | > **Рекомендований спосіб налаштування:** виконайте `zeroclaw onboard` у вашому терміналі. ZeroClaw Onboard покроково проведе вас через налаштування gateway, робочого простору, каналів і провайдера. Це рекомендований шлях налаштування, який працює на macOS, Linux і Windows (через WSL2). Нова установка? Почніть тут: [Початок роботи](#швидкий-старт-tldr)
|---|---|
| ci | add Termux (aarch64-linux-android) release target |
<!-- END:WHATS_NEW --> ### Subscription Auth (OAuth)
## Що таке ZeroClaw? - **OpenAI Codex** (підписка ChatGPT)
- **Gemini** (Google OAuth)
- **Anthropic** (API-ключ або токен авторизації)
ZeroClaw — це легка, змінювана та розширювана інфраструктура AI-асистента, написана на Rust. Вона з'єднує різних LLM-провайдерів (Anthropic, OpenAI, Google, Ollama тощо) через уніфікований інтерфейс і підтримує багато каналів (Telegram, Matrix, CLI тощо). Примітка щодо моделей: хоча підтримується багато провайдерів/моделей, для найкращого досвіду використовуйте найпотужнішу модель останнього покоління, доступну вам. Дивіться [Онбординг](#швидкий-старт-tldr).
### Ключові особливості Конфігурація моделей + CLI: [Довідник провайдерів](docs/reference/api/providers-reference.md)
Ротація профілів авторизації (OAuth vs API-ключі) + аварійне перемикання: [Аварійне перемикання моделей](docs/reference/api/providers-reference.md)
- **🦀 Написано на Rust**: Висока продуктивність, безпека пам'яті та абстракції без накладних витрат ## Встановлення (рекомендовано)
- **🔌 Агностичний до провайдерів**: Підтримка OpenAI, Anthropic, Google Gemini, Ollama та інших
- **📱 Багатоканальність**: Telegram, Matrix (з E2EE), CLI та інші
- **🧠 Плагінна пам'ять**: SQLite та Markdown бекенди
- **🛠️ Розширювані інструменти**: Легко додавайте власні інструменти
- **🔒 Безпека першочергово**: Зворотний проксі, дизайн з пріоритетом конфіденційності
--- Середовище виконання: стабільний набір інструментів Rust. Єдиний бінарний файл, без залежностей середовища виконання.
## Швидкий старт ### Homebrew (macOS/Linuxbrew)
### Вимоги ```bash
brew install zeroclaw
- Rust 1.70+ ```
- API-ключ LLM-провайдера (Anthropic, OpenAI тощо)
### Встановлення одним кліком
### Встановлення
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./install.sh
```
`zeroclaw onboard` запускається автоматично після встановлення для налаштування вашого робочого простору та провайдера.
## Швидкий старт (TL;DR)
Повний посібник для початківців (авторизація, сполучення, канали): [Початок роботи](docs/setup-guides/one-click-bootstrap.md)
```bash
# Встановлення + онбординг
./install.sh --api-key "sk-..." --provider openrouter
# Запуск gateway (вебхук-сервер + веб-панель)
zeroclaw gateway # за замовчуванням: 127.0.0.1:42617
zeroclaw gateway --port 0 # випадковий порт (посилена безпека)
# Розмова з асистентом
zeroclaw agent -m "Hello, ZeroClaw!"
# Інтерактивний режим
zeroclaw agent
# Запуск повного автономного середовища (gateway + канали + cron + hands)
zeroclaw daemon
# Перевірка статусу
zeroclaw status
# Запуск діагностики
zeroclaw doctor
```
Оновлюєтесь? Виконайте `zeroclaw doctor` після оновлення.
### З вихідного коду (розробка)
```bash ```bash
# Клонуйте репозиторій
git clone https://github.com/zeroclaw-labs/zeroclaw.git git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw cd zeroclaw
# Зберіть проект cargo build --release --locked
cargo build --release cargo install --path . --force --locked
# Запустіть zeroclaw onboard
cargo run --release
``` ```
### З Docker > **Резервний варіант для розробників (без глобальної установки):** додайте до команд префікс `cargo run --release --` (приклад: `cargo run --release -- status`).
## Міграція з OpenClaw
ZeroClaw може імпортувати ваш робочий простір, пам'ять та конфігурацію OpenClaw:
```bash ```bash
docker run -d \ # Попередній перегляд того, що буде мігровано (безпечно, лише читання)
--name zeroclaw \ zeroclaw migrate openclaw --dry-run
-e ANTHROPIC_API_KEY=your_key \
-v zeroclaw-data:/app/data \ # Виконання міграції
zeroclaw/zeroclaw:latest zeroclaw migrate openclaw
``` ```
--- Це мігрує ваші записи пам'яті, файли робочого простору та конфігурацію з `~/.openclaw/` до `~/.zeroclaw/`. Конфігурація автоматично конвертується з JSON у TOML.
## Стандартні налаштування безпеки (доступ через DM)
ZeroClaw підключається до реальних платформ обміну повідомленнями. Розглядайте вхідні DM як ненадійний ввід.
Повний посібник з безпеки: [SECURITY.md](SECURITY.md)
Поведінка за замовчуванням на всіх каналах:
- **Сполучення через DM** (за замовчуванням): невідомі відправники отримують короткий код сполучення, і бот не обробляє їхні повідомлення.
- Підтвердіть за допомогою: `zeroclaw pairing approve <channel> <code>` (після чого відправник додається до локального списку дозволених).
- Публічні вхідні DM вимагають явного увімкнення в `config.toml`.
- Виконайте `zeroclaw doctor` для виявлення ризикованих або неправильно налаштованих політик DM.
**Рівні автономності:**
| Рівень | Поведінка |
|--------|-----------|
| `ReadOnly` | Агент може спостерігати, але не діяти |
| `Supervised` (за замовчуванням) | Агент діє із затвердженням для операцій середнього/високого ризику |
| `Full` | Агент діє автономно в межах політики |
**Шари ізоляції:** ізоляція робочого простору, блокування обходу шляху, списки дозволених команд, заборонені шляхи (`/etc`, `/root`, `~/.ssh`), обмеження частоти (макс. дій/годину, ліміти витрат/день).
<!-- BEGIN:WHATS_NEW -->
<!-- END:WHATS_NEW -->
### Оголошення
Використовуйте цю дошку для важливих повідомлень (критичні зміни, рекомендації з безпеки, вікна обслуговування та блокери випусків).
| Дата (UTC) | Рівень | Повідомлення | Дія |
| ---------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2026-02-19 | _Критичний_ | Ми **не пов'язані** з `openagen/zeroclaw`, `zeroclaw.org` або `zeroclaw.net`. Домени `zeroclaw.org` та `zeroclaw.net` наразі вказують на форк `openagen/zeroclaw`, і цей домен/репозиторій видають себе за наш офіційний вебсайт/проєкт. | Не довіряйте інформації, бінарним файлам, збору коштів або оголошенням з цих джерел. Використовуйте лише [цей репозиторій](https://github.com/zeroclaw-labs/zeroclaw) та наші верифіковані соціальні акаунти. |
| 2026-02-21 | _Важливий_ | Наш офіційний вебсайт тепер доступний: [zeroclawlabs.ai](https://zeroclawlabs.ai). Дякуємо за терпіння, поки ми готували запуск. Ми все ще бачимо спроби імітації, тому **не** приєднуйтесь до будь-якої інвестиційної або збіркової діяльності, що використовує назву ZeroClaw, якщо вона не опублікована через наші офіційні канали. | Використовуйте [цей репозиторій](https://github.com/zeroclaw-labs/zeroclaw) як єдине джерело істини. Слідкуйте за [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21), [Facebook (Group)](https://www.facebook.com/groups/zeroclawlabs) та [Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/) для офіційних оновлень. |
| 2026-02-19 | _Важливий_ | Anthropic оновила умови автентифікації та використання облікових даних 2026-02-19. OAuth-токени Claude Code (Free, Pro, Max) призначені виключно для Claude Code та Claude.ai; використання OAuth-токенів Claude Free/Pro/Max у будь-якому іншому продукті, інструменті або сервісі (включаючи Agent SDK) не дозволяється та може порушувати Умови обслуговування для споживачів. | Будь ласка, тимчасово уникайте інтеграцій Claude Code OAuth для запобігання потенційних втрат. Оригінальний пункт: [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use). |
## Основні можливості
- **Легке середовище за замовчуванням** — типові робочі процеси CLI та статусу працюють у конверті пам'яті декількох мегабайтів на релізних збірках.
- **Економічне розгортання** — розроблено для плат за $10 і малих хмарних інстансів, без важких залежностей середовища виконання.
- **Швидкий холодний старт** — однобінарне середовище Rust забезпечує майже миттєвий запуск команд і демона.
- **Портативна архітектура** — один бінарний файл для ARM, x86 та RISC-V зі змінними провайдерами/каналами/інструментами.
- **Локальний Gateway** — єдина площина управління для сесій, каналів, інструментів, cron, SOP та подій.
- **Багатоканальна скринька** — WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, Nostr, Mattermost, Nextcloud Talk, DingTalk, Lark, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WebSocket та інші.
- **Мультиагентна оркестрація (Hands)** — автономні рої агентів, що працюють за розкладом і стають розумнішими з часом.
- **Стандартні операційні процедури (SOPs)** — автоматизація робочих процесів на основі подій з MQTT, webhook, cron та тригерами периферійних пристроїв.
- **Веб-панель керування** — веб-інтерфейс React 19 + Vite з чатом у реальному часі, браузером пам'яті, редактором конфігурації, менеджером cron та інспектором інструментів.
- **Апаратні периферійні пристрої** — ESP32, STM32 Nucleo, Arduino, Raspberry Pi GPIO через трейт `Peripheral`.
- **Першокласні інструменти** — shell, file I/O, browser, git, web fetch/search, MCP, Jira, Notion, Google Workspace та 70+ інших.
- **Хуки життєвого циклу** — перехоплення та модифікація викликів LLM, виконань інструментів і повідомлень на кожному етапі.
- **Платформа навичок** — вбудовані, спільноти та навички робочого простору з аудитом безпеки.
- **Підтримка тунелів** — Cloudflare, Tailscale, ngrok, OpenVPN та власні тунелі для віддаленого доступу.
### Чому команди обирають ZeroClaw
- **Легкий за замовчуванням:** малий бінарний файл Rust, швидкий запуск, низьке споживання пам'яті.
- **Безпечний за проєктуванням:** сполучення, суворе ізолювання, явні списки дозволених, обмеження робочого простору.
- **Повністю змінний:** основні системи — це трейти (провайдери, канали, інструменти, пам'ять, тунелі).
- **Без прив'язки:** підтримка провайдерів, сумісних з OpenAI + підключувані власні ендпоінти.
## Порівняльний бенчмарк (ZeroClaw проти OpenClaw, відтворюваний)
Локальний швидкий бенчмарк (macOS arm64, лютий 2026), нормалізований для edge-обладнання 0,8 ГГц.
| | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 |
| ------------------------- | ------------- | -------------- | --------------- | -------------------- |
| **Мова** | TypeScript | Python | Go | **Rust** |
| **RAM** | > 1GB | > 100MB | < 10MB | **< 5MB** |
| **Запуск (ядро 0,8 ГГц)**| > 500s | > 30s | < 1s | **< 10ms** |
| **Розмір бінарного файлу**| ~28MB (dist) | N/A (Scripts) | ~8MB | **~8.8 MB** |
| **Вартість** | Mac Mini $599 | Linux SBC ~$50 | Linux Board $10 | **Будь-яке обладнання $10** |
> Примітки: результати ZeroClaw виміряні на релізних збірках за допомогою `/usr/bin/time -l`. OpenClaw вимагає середовище Node.js (зазвичай ~390MB додаткових накладних витрат пам'яті), тоді як NanoBot вимагає середовище Python. PicoClaw і ZeroClaw — це статичні бінарні файли. Наведені цифри RAM — це пам'ять часу виконання; вимоги до компіляції вищі.
<p align="center">
<img src="docs/assets/zeroclaw-comparison.jpeg" alt="ZeroClaw vs OpenClaw Comparison" width="800" />
</p>
### Відтворюване локальне вимірювання
```bash
cargo build --release
ls -lh target/release/zeroclaw
/usr/bin/time -l target/release/zeroclaw --help
/usr/bin/time -l target/release/zeroclaw status
```
## Все, що ми побудували на сьогодні
### Основна платформа
- Gateway HTTP/WS/SSE площина управління з сесіями, присутністю, конфігурацією, cron, вебхуками, веб-панеллю та сполученням.
- CLI-поверхня: `gateway`, `agent`, `onboard`, `doctor`, `status`, `service`, `migrate`, `auth`, `cron`, `channel`, `skills`.
- Цикл оркестрації агента з диспетчеризацією інструментів, побудовою промптів, класифікацією повідомлень та завантаженням пам'яті.
- Модель сесій з примусовим виконанням політик безпеки, рівнями автономності та затвердженням операцій.
- Стійкий обгортка провайдера з аварійним перемиканням, повторами та маршрутизацією моделей через 20+ LLM-бекендів.
### Канали
Канали: WhatsApp (нативний), Telegram, Slack, Discord, Signal, iMessage, Matrix, IRC, Email, Bluesky, DingTalk, Lark, Mattermost, Nextcloud Talk, Nostr, QQ, Reddit, LinkedIn, Twitter, MQTT, WeChat Work, WATI, Mochat, Linq, Notion, WebSocket, ClawdTalk.
З feature-гейтами: Matrix (`channel-matrix`), Lark (`channel-lark`), Nostr (`channel-nostr`).
### Веб-панель керування
Веб-панель React 19 + Vite 6 + Tailwind CSS 4, що обслуговується безпосередньо з Gateway:
- **Панель керування** — огляд системи, стан здоров'я, час роботи, відстеження витрат
- **Чат з агентом** — інтерактивний чат з агентом
- **Пам'ять** — перегляд та керування записами пам'яті
- **Конфігурація** — перегляд та редагування конфігурації
- **Cron** — керування запланованими завданнями
- **Інструменти** — перегляд доступних інструментів
- **Логи** — перегляд журналів активності агента
- **Витрати** — відстеження використання токенів та витрат
- **Діагностика** — діагностика стану системи
- **Інтеграції** — стан та налаштування інтеграцій
- **Сполучення** — керування сполученням пристроїв
### Цільові прошивки
| Ціль | Платформа | Призначення |
|------|-----------|-------------|
| ESP32 | Espressif ESP32 | Бездротовий периферійний агент |
| ESP32-UI | ESP32 + Display | Агент з візуальним інтерфейсом |
| STM32 Nucleo | STM32 (ARM Cortex-M) | Промисловий периферійний пристрій |
| Arduino | Arduino | Базовий міст датчиків/виконавчих пристроїв |
| Uno Q Bridge | Arduino Uno | Послідовний міст до агента |
### Інструменти + автоматизація
- **Основні:** shell, file read/write/edit, git operations, glob search, content search
- **Веб:** browser control, web fetch, web search, screenshot, image info, PDF read
- **Інтеграції:** Jira, Notion, Google Workspace, Microsoft 365, LinkedIn, Composio, Pushover
- **MCP:** Model Context Protocol tool wrapper + відкладені набори інструментів
- **Планування:** cron add/remove/update/run, schedule tool
- **Пам'ять:** recall, store, forget, knowledge, project intel
- **Розширені:** delegate (агент-агенту), swarm, model switch/routing, security ops, cloud ops
- **Апаратне забезпечення:** board info, memory map, memory read (з feature-гейтом)
### Середовище виконання + безпека
- **Рівні автономності:** ReadOnly, Supervised (за замовчуванням), Full.
- **Ізоляція:** ізоляція робочого простору, блокування обходу шляху, списки дозволених команд, заборонені шляхи, Landlock (Linux), Bubblewrap.
- **Обмеження частоти:** максимум дій на годину, максимум витрат на день (налаштовуване).
- **Затвердження операцій:** інтерактивне затвердження для операцій середнього/високого ризику.
- **Екстрена зупинка:** можливість екстреного вимкнення.
- **129+ тестів безпеки** в автоматизованому CI.
### Операції + пакування
- Веб-панель, що обслуговується безпосередньо з Gateway.
- Підтримка тунелів: Cloudflare, Tailscale, ngrok, OpenVPN, власна команда.
- Docker runtime adapter для контейнерного виконання.
- CI/CD: beta (автоматично при push) → stable (ручний запуск) → Docker, crates.io, Scoop, AUR, Homebrew, tweet.
- Попередньо зібрані бінарні файли для Linux (x86_64, aarch64, armv7), macOS (x86_64, aarch64), Windows (x86_64).
## Конфігурація ## Конфігурація
ZeroClaw використовує YAML-файл конфігурації. За замовчуванням він шукає `config.yaml`. Мінімальний `~/.zeroclaw/config.toml`:
```yaml ```toml
# Провайдер за замовчуванням default_provider = "anthropic"
provider: anthropic api_key = "sk-ant-..."
# Конфігурація провайдерів
providers:
anthropic:
api_key: ${ANTHROPIC_API_KEY}
model: claude-3-5-sonnet-20241022
openai:
api_key: ${OPENAI_API_KEY}
model: gpt-4o
# Конфігурація пам'яті
memory:
backend: sqlite
path: data/memory.db
# Конфігурація каналів
channels:
telegram:
token: ${TELEGRAM_BOT_TOKEN}
``` ```
--- Повний довідник конфігурації: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md).
### Конфігурація каналів
**Telegram:**
```toml
[channels.telegram]
bot_token = "123456:ABC-DEF..."
```
**Discord:**
```toml
[channels.discord]
token = "your-bot-token"
```
**Slack:**
```toml
[channels.slack]
bot_token = "xoxb-..."
app_token = "xapp-..."
```
**WhatsApp:**
```toml
[channels.whatsapp]
enabled = true
```
**Matrix:**
```toml
[channels.matrix]
homeserver_url = "https://matrix.org"
username = "@bot:matrix.org"
password = "..."
```
**Signal:**
```toml
[channels.signal]
phone_number = "+1234567890"
```
### Конфігурація тунелів
```toml
[tunnel]
kind = "cloudflare" # або "tailscale", "ngrok", "openvpn", "custom", "none"
```
Деталі: [Довідник каналів](docs/reference/api/channels-reference.md) · [Довідник конфігурації](docs/reference/api/config-reference.md)
### Підтримка середовищ виконання (поточна)
- **`native`** (за замовчуванням) — пряме виконання процесу, найшвидший шлях, ідеальний для довірених середовищ.
- **`docker`** — повна контейнерна ізоляція, примусові політики безпеки, вимагає Docker.
Встановіть `runtime.kind = "docker"` для суворої ізоляції або мережевої ізоляції.
## Subscription Auth (OpenAI Codex / Claude Code / Gemini)
ZeroClaw підтримує профілі авторизації на основі підписки (мультиакаунт, шифрування в стані спокою).
- Файл сховища: `~/.zeroclaw/auth-profiles.json`
- Ключ шифрування: `~/.zeroclaw/.secret_key`
- Формат ідентифікатора профілю: `<provider>:<profile_name>` (приклад: `openai-codex:work`)
```bash
# OpenAI Codex OAuth (підписка ChatGPT)
zeroclaw auth login --provider openai-codex --device-code
# Gemini OAuth
zeroclaw auth login --provider gemini --profile default
# Anthropic setup-token
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# Перевірка / оновлення / перемикання профілю
zeroclaw auth status
zeroclaw auth refresh --provider openai-codex --profile default
zeroclaw auth use --provider openai-codex --profile work
# Запуск агента з авторизацією підписки
zeroclaw agent --provider openai-codex -m "hello"
zeroclaw agent --provider anthropic -m "hello"
```
## Робочий простір агента + навички
Корінь робочого простору: `~/.zeroclaw/workspace/` (налаштовується через конфігурацію).
Вбудовані файли промптів:
- `IDENTITY.md` — особистість та роль агента
- `USER.md` — контекст та налаштування користувача
- `MEMORY.md` — довгострокові факти та уроки
- `AGENTS.md` — конвенції сесій та правила ініціалізації
- `SOUL.md` — основна ідентичність та операційні принципи
Навички: `~/.zeroclaw/workspace/skills/<skill>/SKILL.md` або `SKILL.toml`.
```bash
# Список встановлених навичок
zeroclaw skills list
# Встановлення з git
zeroclaw skills install https://github.com/user/my-skill.git
# Аудит безпеки перед встановленням
zeroclaw skills audit https://github.com/user/my-skill.git
# Видалення навички
zeroclaw skills remove my-skill
```
## Команди CLI
```bash
# Керування робочим простором
zeroclaw onboard # Покроковий майстер налаштування
zeroclaw status # Показати стан демона/агента
zeroclaw doctor # Запустити діагностику системи
# Gateway + демон
zeroclaw gateway # Запустити сервер gateway (127.0.0.1:42617)
zeroclaw daemon # Запустити повне автономне середовище
# Агент
zeroclaw agent # Інтерактивний режим чату
zeroclaw agent -m "message" # Режим одного повідомлення
# Керування сервісом
zeroclaw service install # Встановити як системний сервіс (launchd/systemd)
zeroclaw service start|stop|restart|status
# Канали
zeroclaw channel list # Список налаштованих каналів
zeroclaw channel doctor # Перевірка стану каналів
zeroclaw channel bind-telegram 123456789
# Cron + планування
zeroclaw cron list # Список запланованих завдань
zeroclaw cron add "*/5 * * * *" --prompt "Check system health"
zeroclaw cron remove <id>
# Пам'ять
zeroclaw memory list # Список записів пам'яті
zeroclaw memory get <key> # Отримати запис пам'яті
zeroclaw memory stats # Статистика пам'яті
# Профілі авторизації
zeroclaw auth login --provider <name>
zeroclaw auth status
zeroclaw auth use --provider <name> --profile <profile>
# Апаратні периферійні пристрої
zeroclaw hardware discover # Сканування підключених пристроїв
zeroclaw peripheral list # Список підключених периферійних пристроїв
zeroclaw peripheral flash # Прошивка пристрою
# Міграція
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw
# Автодоповнення оболонки
source <(zeroclaw completions bash)
zeroclaw completions zsh > ~/.zfunc/_zeroclaw
```
Повний довідник команд: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
<!-- markdownlint-disable MD001 MD024 -->
## Передумови
<details>
<summary><strong>Windows</strong></summary>
#### Обов'язково
1. **Visual Studio Build Tools** (надає компонувальник MSVC та Windows SDK):
```powershell
winget install Microsoft.VisualStudio.2022.BuildTools
```
Під час встановлення (або через Visual Studio Installer) виберіть робоче навантаження **"Desktop development with C++"**.
2. **Набір інструментів Rust:**
```powershell
winget install Rustlang.Rustup
```
Після встановлення відкрийте новий термінал і виконайте `rustup default stable`, щоб переконатися, що стабільний набір інструментів активний.
3. **Перевірте**, що обидва працюють:
```powershell
rustc --version
cargo --version
```
#### Необов'язково
- **Docker Desktop** — потрібен лише при використанні [ізольованого середовища Docker](#підтримка-середовищ-виконання-поточна) (`runtime.kind = "docker"`). Встановлення через `winget install Docker.DockerDesktop`.
</details>
<details>
<summary><strong>Linux / macOS</strong></summary>
#### Обов'язково
1. **Базові інструменти збірки:**
- **Linux (Debian/Ubuntu):** `sudo apt install build-essential pkg-config`
- **Linux (Fedora/RHEL):** `sudo dnf group install development-tools && sudo dnf install pkg-config`
- **macOS:** Встановіть Xcode Command Line Tools: `xcode-select --install`
2. **Набір інструментів Rust:**
```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
Деталі на [rustup.rs](https://rustup.rs).
3. **Перевірте**, що обидва працюють:
```bash
rustc --version
cargo --version
```
#### Встановлення одним рядком
Або пропустіть кроки вище і встановіть все (системні залежності, Rust, ZeroClaw) однією командою:
```bash
curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash
```
#### Вимоги до ресурсів для компіляції
Збірка з вихідного коду вимагає більше ресурсів, ніж запуск результуючого бінарного файлу:
| Ресурс | Мінімум | Рекомендовано |
| -------------- | ------- | ----------- |
| **RAM + swap** | 2 GB | 4 GB+ |
| **Вільний диск** | 6 GB | 10 GB+ |
Якщо ваш хост нижче мінімуму, використовуйте попередньо зібрані бінарні файли:
```bash
./install.sh --prefer-prebuilt
```
Для встановлення лише бінарного файлу без резервного варіанту з вихідного коду:
```bash
./install.sh --prebuilt-only
```
#### Необов'язково
- **Docker** — потрібен лише при використанні [ізольованого середовища Docker](#підтримка-середовищ-виконання-поточна) (`runtime.kind = "docker"`). Встановлення через менеджер пакетів або [docker.com](https://docs.docker.com/engine/install/).
> **Примітка:** Стандартна команда `cargo build --release` використовує `codegen-units=1` для зниження пікового навантаження при компіляції. Для швидших збірок на потужних машинах використовуйте `cargo build --profile release-fast`.
</details>
<!-- markdownlint-enable MD001 MD024 -->
### Попередньо зібрані бінарні файли
Релізні артефакти публікуються для:
- Linux: `x86_64`, `aarch64`, `armv7`
- macOS: `x86_64`, `aarch64`
- Windows: `x86_64`
Завантажте останні артефакти з:
<https://github.com/zeroclaw-labs/zeroclaw/releases/latest>
## Документація ## Документація
Для детальної документації дивіться: Використовуйте ці матеріали, коли ви пройшли онбординг і хочете глибшу довідку.
- [Хаб документації](docs/README.md) - Почніть з [індексу документації](docs/README.md) для навігації та "що де знаходиться".
- [Довідник команд](docs/commands-reference.md) - Прочитайте [огляд архітектури](docs/architecture.md) для повної моделі системи.
- [Довідник провайдерів](docs/providers-reference.md) - Використовуйте [довідник конфігурації](docs/reference/api/config-reference.md), коли вам потрібен кожен ключ і приклад.
- [Довідник каналів](docs/channels-reference.md) - Запускайте Gateway за інструкцією з [операційного посібника](docs/ops/operations-runbook.md).
- [Довідник конфігурації](docs/config-reference.md) - Слідуйте [ZeroClaw Onboard](#швидкий-старт-tldr) для покрокового налаштування.
- Діагностуйте типові збої за допомогою [посібника з усунення неполадок](docs/ops/troubleshooting.md).
- Перегляньте [рекомендації з безпеки](docs/security/README.md) перед будь-яким відкритим доступом.
--- ### Довідкова документація
- Хаб документації: [docs/README.md](docs/README.md)
- Єдиний зміст документації: [docs/SUMMARY.md](docs/SUMMARY.md)
- Довідник команд: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
- Довідник конфігурації: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
- Довідник провайдерів: [docs/reference/api/providers-reference.md](docs/reference/api/providers-reference.md)
- Довідник каналів: [docs/reference/api/channels-reference.md](docs/reference/api/channels-reference.md)
- Операційний посібник: [docs/ops/operations-runbook.md](docs/ops/operations-runbook.md)
- Усунення неполадок: [docs/ops/troubleshooting.md](docs/ops/troubleshooting.md)
### Документація для співпраці
- Посібник з внеску: [CONTRIBUTING.md](CONTRIBUTING.md)
- Політика робочого процесу PR: [docs/contributing/pr-workflow.md](docs/contributing/pr-workflow.md)
- Посібник CI робочих процесів: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Посібник рецензента: [docs/contributing/reviewer-playbook.md](docs/contributing/reviewer-playbook.md)
- Політика розкриття вразливостей: [SECURITY.md](SECURITY.md)
- Шаблон документації: [docs/contributing/doc-template.md](docs/contributing/doc-template.md)
### Розгортання + операції
- Посібник з мережевого розгортання: [docs/ops/network-deployment.md](docs/ops/network-deployment.md)
- Посібник проксі-агента: [docs/ops/proxy-agent-playbook.md](docs/ops/proxy-agent-playbook.md)
- Посібники з апаратного забезпечення: [docs/hardware/README.md](docs/hardware/README.md)
## Smooth Crab 🦀
ZeroClaw створений для smooth crab 🦀, швидкого та ефективного AI-асистента. Створений Argenis De La Rosa та спільнотою.
- [zeroclawlabs.ai](https://zeroclawlabs.ai)
- [@zeroclawlabs](https://x.com/zeroclawlabs)
## Підтримайте ZeroClaw
Якщо ZeroClaw допомагає вашій роботі і ви хочете підтримати подальшу розробку, ви можете зробити пожертву тут:
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
### Особлива подяка
Щира подяка спільнотам та установам, які надихають та живлять цю відкриту роботу:
- **Harvard University** — за виховання інтелектуальної допитливості та розширення меж можливого.
- **MIT** — за підтримку відкритих знань, відкритого коду та переконання, що технології повинні бути доступними для кожного.
- **Sundai Club** — за спільноту, енергію та невпинне прагнення створювати речі, що мають значення.
- **Світ та за його межами** — кожному учаснику, мрійнику та творцю, які роблять відкритий код силою добра. Це для вас.
Ми будуємо відкрито, тому що найкращі ідеї приходять звідусіль. Якщо ви це читаєте, ви вже частина цього. Ласкаво просимо. 🦀
## Внесок ## Внесок
Внески вітаються! Будь ласка, прочитайте [Керівництво з внеску](CONTRIBUTING.md). Новачок у ZeroClaw? Шукайте завдання з міткою [`good first issue`](https://github.com/zeroclaw-labs/zeroclaw/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) — дивіться наш [Посібник з внеску](CONTRIBUTING.md#first-time-contributors) для початку. PR з AI-допомогою вітаються!
Дивіться [CONTRIBUTING.md](CONTRIBUTING.md) та [CLA.md](docs/contributing/cla.md). Реалізуйте трейт, подайте PR:
- Посібник CI робочих процесів: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- Новий `Provider``src/providers/`
- Новий `Channel``src/channels/`
- Новий `Observer``src/observability/`
- Новий `Tool``src/tools/`
- Новий `Memory``src/memory/`
- Новий `Tunnel``src/tunnel/`
- Новий `Peripheral``src/peripherals/`
- Новий `Skill``~/.zeroclaw/workspace/skills/<name>/`
<!-- BEGIN:RECENT_CONTRIBUTORS -->
<!-- END:RECENT_CONTRIBUTORS -->
## Офіційний репозиторій та попередження про імітацію
**Це єдиний офіційний репозиторій ZeroClaw:**
> https://github.com/zeroclaw-labs/zeroclaw
Будь-який інший репозиторій, організація, домен або пакет, що претендує на назву "ZeroClaw" або натякає на зв'язок з ZeroClaw Labs, є **неавторизованим і не пов'язаним з цим проєктом**. Відомі неавторизовані форки перелічені в [TRADEMARK.md](docs/maintainers/trademark.md).
Якщо ви зіткнулися з імітацією або зловживанням торговою маркою, будь ласка, [створіть issue](https://github.com/zeroclaw-labs/zeroclaw/issues).
--- ---
## Ліцензія ## Ліцензія
Цей проєкт має подвійну ліцензію: ZeroClaw має подвійну ліцензію для максимальної відкритості та захисту учасників:
- MIT License | Ліцензія | Варіант використання |
- Apache License, версія 2.0 |---|---|
| [MIT](LICENSE-MIT) | Відкритий код, дослідження, академічне, особисте використання |
| [Apache 2.0](LICENSE-APACHE) | Патентний захист, інституційне, комерційне розгортання |
Дивіться [LICENSE-APACHE](LICENSE-APACHE) та [LICENSE-MIT](LICENSE-MIT) для деталей. Ви можете обрати будь-яку ліцензію. **Учасники автоматично надають права за обома** — дивіться [CLA.md](docs/contributing/cla.md) для повної угоди учасника.
### Торгова марка
Назва та логотип **ZeroClaw** є торговими марками ZeroClaw Labs. Ця ліцензія не надає дозволу використовувати їх для підтвердження або зв'язку. Дивіться [TRADEMARK.md](docs/maintainers/trademark.md) для дозволених та заборонених використань.
### Захист учасників
- Ви **зберігаєте авторські права** на свої внески
- **Патентне надання** (Apache 2.0) захищає вас від патентних претензій інших учасників
- Ваші внески **назавжди атрибутовані** в історії комітів та [NOTICE](NOTICE)
- Жодних прав на торгову марку не передається при внеску
--- ---
## Спільнота **ZeroClaw** — Нуль накладних витрат. Нуль компромісів. Розгортайте будь-де. Замінюйте будь-що. 🦀
- [Telegram](https://t.me/zeroclawlabs) ## Учасники
- [Facebook Group](https://www.facebook.com/groups/zeroclaw)
- [WeChat Group](https://zeroclawlabs.cn/group.jpg)
--- <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors">
<img src="https://contrib.rocks/image?repo=zeroclaw-labs/zeroclaw" alt="ZeroClaw contributors" />
</a>
## Спонсори Цей список генерується з графіку учасників GitHub і оновлюється автоматично.
Якщо ZeroClaw корисний для вас, будь ласка, розгляньте можливість купити нам каву: ## Історія зірок
[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee)](https://buymeacoffee.com/argenistherose) <p align="center">
<a href="https://www.star-history.com/#zeroclaw-labs/zeroclaw&type=date&legend=top-left">
<!-- BEGIN:RECENT_CONTRIBUTORS --> <picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&theme=dark&legend=top-left" />
### 🌟 Recent Contributors (v0.3.1) <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
3 contributors shipped features, fixes, and improvements in this release cycle: </picture>
</a>
- **Argenis** </p>
- **argenis de la rosa**
- **Claude Opus 4.6**
Thank you to everyone who opened issues, reviewed PRs, translated docs, and helped test. Every contribution matters. 🦀
<!-- END:RECENT_CONTRIBUTORS -->

View File

@ -1,26 +1,32 @@
<p align="center"> <p align="center">
<img src="zeroclaw.png" alt="ZeroClaw" width="200" /> <img src="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/docs/assets/zeroclaw-banner.png" alt="ZeroClaw" width="600" />
</p> </p>
<h1 align="center">ZeroClaw 🦀</h1> <h1 align="center">🦀 ZeroClaw — ذاتی AI اسسٹنٹ</h1>
<p align="center" dir="rtl"> <p align="center">
<strong>صفر اوور ہیڈ۔ صفر سمجھوتہ۔ 100% رسٹ۔ 100% اگنوسٹک۔</strong><br> <strong>صفر اوور ہیڈ۔ صفر سمجھوتا۔ 100% Rust۔ 100% غیر جانبدار۔</strong><br>
⚡️ <strong>$10 کے ہارڈویئر پر <5MB RAM کے ساتھ چلتا ہے: یہ OpenClaw سے 99% کم میموری اور Mac mini سے 98% سستا ہے!</strong> ⚡️ <strong>$10 ہارڈویئر پر <5MB RAM کے ساتھ چلتا ہے: یہ OpenClaw سے 99% کم میموری اور Mac mini سے 98% سستا ہے!</strong>
</p> </p>
<p align="center"> <p align="center">
<a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a> <a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
<a href="NOTICE"><img src="https://img.shields.io/badge/contributors-27+-green.svg" alt="Contributors" /></a> <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors"><img src="https://img.shields.io/github/contributors/zeroclaw-labs/zeroclaw?color=green" alt="Contributors" /></a>
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a> <a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
<a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a> <a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a>
<a href="https://zeroclawlabs.cn/group.jpg"><img src="https://img.shields.io/badge/WeChat-Group-B7D7A8?logo=wechat&logoColor=white" alt="WeChat Group" /></a> <a href="https://www.facebook.com/groups/zeroclawlabs"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a>
<a href="https://www.xiaohongshu.com/user/profile/67cbfc43000000000d008307?xsec_token=AB73VnYnGNx5y36EtnnZfGmAmS-6Wzv8WMuGpfwfkg6Yc%3D&xsec_source=pc_search"><img src="https://img.shields.io/badge/Xiaohongshu-Official-FF2442?style=flat" alt="Xiaohongshu: Official" /></a> <a href="https://discord.com/invite/wDshRVqRjx"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://t.me/zeroclawlabs"><img src="https://img.shields.io/badge/Telegram-%40zeroclawlabs-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @zeroclawlabs" /></a> <a href="https://www.instagram.com/therealzeroclaw"><img src="https://img.shields.io/badge/Instagram-%40therealzeroclaw-E4405F?style=flat&logo=instagram&logoColor=white" alt="Instagram: @therealzeroclaw" /></a>
<a href="https://www.facebook.com/groups/zeroclaw"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a> <a href="https://www.tiktok.com/@zeroclawlabs"><img src="https://img.shields.io/badge/TikTok-%40zeroclawlabs-000000?style=flat&logo=tiktok&logoColor=white" alt="TikTok: @zeroclawlabs" /></a>
<a href="https://www.rednote.com/user/profile/69b735e6000000002603927e"><img src="https://img.shields.io/badge/RedNote-Official-FF2442?style=flat" alt="RedNote" /></a>
<a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a>
</p> </p>
<p align="center" dir="rtl"> <p align="center">
Harvard، MIT، اور Sundai.Club کمیونٹیز کے طلباء اور اراکین نے بنایا۔
</p>
<p align="center">
🌐 <strong>زبانیں:</strong> 🌐 <strong>زبانیں:</strong>
<a href="README.md">🇺🇸 English</a> · <a href="README.md">🇺🇸 English</a> ·
<a href="README.zh-CN.md">🇨🇳 简体中文</a> · <a href="README.zh-CN.md">🇨🇳 简体中文</a> ·
@ -55,167 +61,695 @@
<a href="README.nb.md">🇳🇴 Norsk</a> <a href="README.nb.md">🇳🇴 Norsk</a>
</p> </p>
--- ZeroClaw ایک ذاتی AI اسسٹنٹ ہے جسے آپ اپنے آلات پر چلاتے ہیں۔ یہ آپ کو ان چینلز پر جواب دیتا ہے جو آپ پہلے سے استعمال کرتے ہیں (WhatsApp، Telegram، Slack، Discord، Signal، iMessage، Matrix، IRC، Email، Bluesky، Nostr، Mattermost، Nextcloud Talk، DingTalk، Lark، QQ، Reddit، LinkedIn، Twitter، MQTT، WeChat Work، اور مزید)۔ اس میں ریئل ٹائم کنٹرول کے لیے ویب ڈیش بورڈ ہے اور یہ ہارڈویئر پیری فیرلز (ESP32، STM32، Arduino، Raspberry Pi) سے جڑ سکتا ہے۔ Gateway صرف control plane ہے — پروڈکٹ اسسٹنٹ ہے۔
<!-- BEGIN:WHATS_NEW --> اگر آپ ایک ذاتی، واحد صارف اسسٹنٹ چاہتے ہیں جو مقامی، تیز، اور ہمیشہ فعال محسوس ہو، تو یہ ہے۔
### 🚀 What's New in v0.3.1 (March 2026) <p align="center">
<a href="https://zeroclawlabs.ai">ویب سائٹ</a> ·
| Area | Highlights | <a href="docs/README.md">دستاویزات</a> ·
|---|---| <a href="docs/architecture.md">آرکیٹیکچر</a> ·
| ci | add Termux (aarch64-linux-android) release target | <a href="#فوری-آغاز">شروع کریں</a> ·
<a href="#openclaw-سے-منتقلی">OpenClaw سے منتقلی</a> ·
<!-- END:WHATS_NEW --> <a href="docs/ops/troubleshooting.md">مسائل حل کریں</a> ·
<a href="https://discord.com/invite/wDshRVqRjx">Discord</a>
## ZeroClaw کیا ہے؟
<p align="center" dir="rtl">
ZeroClaw ایک ہلکا، قابل تبدیلی اور توسیع پذیر AI اسسٹنٹ انفراسٹرکچر ہے جو رسٹ میں بنایا گیا ہے۔ یہ مختلف LLM فراہم کنندگان (Anthropic, OpenAI, Google, Ollama, وغیرہ) کو ایک متحد انٹرفیس کے ذریعے جوڑتا ہے اور متعدد چینلز (Telegram, Matrix, CLI, وغیرہ) کی حمایت کرتا ہے۔
</p> </p>
### اہم خصوصیات > **تجویز کردہ سیٹ اپ:** اپنے ٹرمینل میں `zeroclaw onboard` چلائیں۔ ZeroClaw Onboard آپ کو gateway، workspace، چینلز، اور provider ترتیب دینے میں مرحلہ وار رہنمائی کرتا ہے۔ یہ تجویز کردہ سیٹ اپ راستہ ہے اور macOS، Linux، اور Windows (WSL2 کے ذریعے) پر کام کرتا ہے۔ نئی تنصیب؟ یہاں سے شروع کریں: [شروع کریں](#فوری-آغاز)
<p align="center" dir="rtl"> ### سبسکرپشن تصدیق (OAuth)
- **🦀 رسٹ میں لکھا گیا**: اعلیٰ کارکردگی، میموری سیورٹی، اور بغیر لاگت کے ایبسٹریکشن
- **🔌 فراہم کنندہ-اگنوسٹک**: OpenAI, Anthropic, Google Gemini, Ollama, اور دیگر کی حمایت
- **📱 ملٹی چینل**: Telegram, Matrix (E2EE کے ساتھ), CLI, اور دیگر
- **🧠 پلگ ایبل میموری**: SQLite اور Markdown بیک اینڈ
- **🛠️ قابل توسیع ٹولز**: آسانی سے کسٹم ٹولز شامل کریں
- **🔒 سیورٹی فرسٹ**: ریورس پراکسی، پرائیویسی فرسٹ ڈیزائن
</p>
--- - **OpenAI Codex** (ChatGPT سبسکرپشن)
- **Gemini** (Google OAuth)
- **Anthropic** (API key یا auth token)
## فوری شروعات ماڈل نوٹ: اگرچہ بہت سے providers/ماڈلز سپورٹ کیے جاتے ہیں، بہترین تجربے کے لیے اپنے دستیاب سب سے مضبوط جدید ترین ماڈل کا استعمال کریں۔ دیکھیں [Onboarding](#فوری-آغاز)۔
### ضروریات ماڈلز کنفیگ + CLI: [Providers حوالہ](docs/reference/api/providers-reference.md)
Auth پروفائل روٹیشن (OAuth بمقابلہ API keys) + failover: [Model failover](docs/reference/api/providers-reference.md)
<p align="center" dir="rtl"> ## انسٹال (تجویز کردہ)
- Rust 1.70+
- ایک LLM فراہم کنندہ API کی (Anthropic, OpenAI, وغیرہ)
</p>
### انسٹالیشن رن ٹائم: Rust stable toolchain۔ واحد بائنری، کوئی runtime dependencies نہیں۔
### Homebrew (macOS/Linuxbrew)
```bash
brew install zeroclaw
```
### ایک کلک بوٹسٹریپ
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./install.sh
```
`zeroclaw onboard` انسٹال کے بعد خود بخود چلتا ہے تاکہ آپ کا workspace اور provider ترتیب دیا جا سکے۔
## فوری آغاز (TL;DR)
مکمل ابتدائی گائیڈ (تصدیق، pairing، چینلز): [شروع کریں](docs/setup-guides/one-click-bootstrap.md)
```bash
# انسٹال + onboard
./install.sh --api-key "sk-..." --provider openrouter
# Gateway شروع کریں (webhook سرور + ویب ڈیش بورڈ)
zeroclaw gateway # ڈیفالٹ: 127.0.0.1:42617
zeroclaw gateway --port 0 # بے ترتیب پورٹ (سیکیورٹی مضبوط)
# اسسٹنٹ سے بات کریں
zeroclaw agent -m "Hello, ZeroClaw!"
# انٹرایکٹو موڈ
zeroclaw agent
# مکمل خودمختار رن ٹائم شروع کریں (gateway + چینلز + cron + hands)
zeroclaw daemon
# اسٹیٹس چیک کریں
zeroclaw status
# تشخیص چلائیں
zeroclaw doctor
```
اپ گریڈ کر رہے ہیں؟ اپ ڈیٹ کے بعد `zeroclaw doctor` چلائیں۔
### سورس سے (ترقی)
```bash ```bash
# ریپوزٹری کلون کریں
git clone https://github.com/zeroclaw-labs/zeroclaw.git git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw cd zeroclaw
# بلڈ کریں cargo build --release --locked
cargo build --release cargo install --path . --force --locked
# چلائیں zeroclaw onboard
cargo run --release
``` ```
### Docker کے ساتھ > **Dev متبادل (بغیر global انسٹال):** کمانڈز کے آگے `cargo run --release --` لگائیں (مثال: `cargo run --release -- status`)۔
## OpenClaw سے منتقلی
ZeroClaw آپ کا OpenClaw workspace، میموری، اور کنفیگریشن درآمد کر سکتا ہے:
```bash ```bash
docker run -d \ # دیکھیں کیا منتقل ہوگا (محفوظ، صرف پڑھنے)
--name zeroclaw \ zeroclaw migrate openclaw --dry-run
-e ANTHROPIC_API_KEY=your_key \
-v zeroclaw-data:/app/data \ # منتقلی چلائیں
zeroclaw/zeroclaw:latest zeroclaw migrate openclaw
``` ```
--- یہ آپ کے میموری اندراجات، workspace فائلیں، اور کنفیگریشن `~/.openclaw/` سے `~/.zeroclaw/` میں منتقل کرتا ہے۔ کنفیگ خود بخود JSON سے TOML میں تبدیل ہو جاتی ہے۔
## سیکیورٹی ڈیفالٹس (DM رسائی)
ZeroClaw حقیقی پیغام رسانی سطحوں سے جڑتا ہے۔ آنے والے DMs کو غیر بھروسہ مند ان پٹ سمجھیں۔
مکمل سیکیورٹی گائیڈ: [SECURITY.md](SECURITY.md)
تمام چینلز پر ڈیفالٹ رویہ:
- **DM pairing** (ڈیفالٹ): نامعلوم بھیجنے والوں کو ایک مختصر pairing کوڈ ملتا ہے اور بوٹ ان کے پیغام پر عمل نہیں کرتا۔
- منظوری دیں: `zeroclaw pairing approve <channel> <code>` (پھر بھیجنے والا مقامی اجازت نامہ میں شامل ہو جاتا ہے)۔
- عوامی آنے والے DMs کے لیے `config.toml` میں واضح opt-in ضروری ہے۔
- خطرناک یا غلط ترتیب شدہ DM پالیسیوں کا پتہ لگانے کے لیے `zeroclaw doctor` چلائیں۔
**خودمختاری کی سطحیں:**
| سطح | رویہ |
|-------|----------|
| `ReadOnly` | ایجنٹ مشاہدہ کر سکتا ہے لیکن عمل نہیں کر سکتا |
| `Supervised` (ڈیفالٹ) | ایجنٹ درمیانے/زیادہ خطرے والے آپریشنز کے لیے منظوری کے ساتھ عمل کرتا ہے |
| `Full` | ایجنٹ پالیسی حدود میں خودمختار طور پر عمل کرتا ہے |
**سینڈ باکسنگ پرتیں:** workspace تنہائی، path traversal بلاکنگ، کمانڈ اجازت نامے، ممنوعہ راستے (`/etc`، `/root`، `~/.ssh`)، شرح محدودیت (زیادہ سے زیادہ عمل/گھنٹہ، لاگت/دن کی حد)۔
<!-- BEGIN:WHATS_NEW -->
<!-- END:WHATS_NEW -->
### 📢 اعلانات
اہم نوٹسز کے لیے یہ بورڈ استعمال کریں (تبدیلیاں جو توڑ دیں، سیکیورٹی مشاورتیں، دیکھ بھال کی کھڑکیاں، اور ریلیز بلاکرز)۔
| تاریخ (UTC) | سطح | نوٹس | عمل |
| ---------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2026-02-19 | _اہم ترین_ | ہم `openagen/zeroclaw`، `zeroclaw.org` یا `zeroclaw.net` سے **وابستہ نہیں** ہیں۔ `zeroclaw.org` اور `zeroclaw.net` ڈومینز فی الحال `openagen/zeroclaw` فورک کی طرف اشارہ کرتے ہیں، اور وہ ڈومین/ریپوزٹری ہماری سرکاری ویب سائٹ/پروجیکٹ کی نقل کر رہے ہیں۔ | ان ذرائع سے معلومات، بائنریز، فنڈ ریزنگ، یا اعلانات پر بھروسہ نہ کریں۔ صرف [یہ ریپوزٹری](https://github.com/zeroclaw-labs/zeroclaw) اور ہمارے تصدیق شدہ سوشل اکاؤنٹس استعمال کریں۔ |
| 2026-02-21 | _اہم_ | ہماری سرکاری ویب سائٹ اب فعال ہے: [zeroclawlabs.ai](https://zeroclawlabs.ai)۔ لانچ کی تیاری کے دوران آپ کے صبر کا شکریہ۔ ہم اب بھی نقل کی کوششیں دیکھ رہے ہیں، لہذا ZeroClaw نام کا دعویٰ کرنے والی کسی بھی سرمایہ کاری یا فنڈ ریزنگ سرگرمی میں **شامل نہ ہوں** جب تک کہ یہ ہمارے سرکاری چینلز کے ذریعے شائع نہ ہو۔ | [یہ ریپوزٹری](https://github.com/zeroclaw-labs/zeroclaw) کو واحد سچائی کا ذریعہ استعمال کریں۔ سرکاری اپ ڈیٹس کے لیے [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21)، [Facebook (Group)](https://www.facebook.com/groups/zeroclawlabs)، اور [Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/) فالو کریں۔ |
| 2026-02-19 | _اہم_ | Anthropic نے 2026-02-19 کو تصدیق اور اسناد کے استعمال کی شرائط اپ ڈیٹ کیں۔ Claude Code OAuth ٹوکنز (Free، Pro، Max) خصوصی طور پر Claude Code اور Claude.ai کے لیے ہیں؛ Claude Free/Pro/Max سے OAuth ٹوکنز کسی اور پروڈکٹ، ٹول، یا سروس (بشمول Agent SDK) میں استعمال کرنا اجازت یافتہ نہیں ہے اور صارف سروس کی شرائط کی خلاف ورزی ہو سکتی ہے۔ | براہ کرم ممکنہ نقصان سے بچنے کے لیے عارضی طور پر Claude Code OAuth انٹیگریشنز سے گریز کریں۔ اصل شق: [Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use)۔ |
## خصوصیات
- **ڈیفالٹ طور پر ہلکا رن ٹائم** — عام CLI اور اسٹیٹس ورک فلوز ریلیز بلڈز پر چند میگا بائٹ میموری میں چلتے ہیں۔
- **لاگت سے مؤثر تعیناتی** — $10 بورڈز اور چھوٹے کلاؤڈ انسٹینسز کے لیے ڈیزائن کیا گیا، کوئی بھاری runtime dependencies نہیں۔
- **تیز کولڈ اسٹارٹ** — واحد بائنری Rust رن ٹائم کمانڈ اور daemon اسٹارٹ اپ کو تقریباً فوری رکھتا ہے۔
- **پورٹیبل آرکیٹیکچر** — ARM، x86، اور RISC-V پر ایک بائنری، قابل تبادلہ providers/چینلز/ٹولز کے ساتھ۔
- **لوکل فرسٹ Gateway** — سیشنز، چینلز، ٹولز، cron، SOPs، اور ایونٹس کے لیے واحد control plane۔
- **ملٹی چینل ان باکس** — WhatsApp، Telegram، Slack، Discord، Signal، iMessage، Matrix، IRC، Email، Bluesky، Nostr، Mattermost، Nextcloud Talk، DingTalk، Lark، QQ، Reddit، LinkedIn، Twitter، MQTT، WeChat Work، WebSocket، اور مزید۔
- **ملٹی ایجنٹ آرکیسٹریشن (Hands)** — خودمختار ایجنٹ جھنڈ جو شیڈول پر چلتے ہیں اور وقت کے ساتھ ذہین ہوتے ہیں۔
- **سٹینڈرڈ آپریٹنگ پروسیجرز (SOPs)** — MQTT، webhook، cron، اور پیری فیرل ٹرگرز کے ساتھ ایونٹ پر مبنی ورک فلو آٹومیشن۔
- **ویب ڈیش بورڈ** — ریئل ٹائم چیٹ، میموری براؤزر، کنفیگ ایڈیٹر، cron مینیجر، اور ٹول انسپیکٹر کے ساتھ React 19 + Vite ویب UI۔
- **ہارڈویئر پیری فیرلز**`Peripheral` trait کے ذریعے ESP32، STM32 Nucleo، Arduino، Raspberry Pi GPIO۔
- **فرسٹ کلاس ٹولز** — shell، file I/O، browser، git، web fetch/search، MCP، Jira، Notion، Google Workspace، اور 70+ مزید۔
- **لائف سائیکل ہکس** — ہر مرحلے پر LLM کالز، ٹول ایگزیکیوشنز، اور پیغامات کو روکیں اور ترمیم کریں۔
- **اسکلز پلیٹ فارم** — بلٹ ان، کمیونٹی، اور workspace اسکلز سیکیورٹی آڈٹنگ کے ساتھ۔
- **ٹنل سپورٹ** — ریموٹ رسائی کے لیے Cloudflare، Tailscale، ngrok، OpenVPN، اور کسٹم ٹنلز۔
### ٹیمیں ZeroClaw کیوں چنتی ہیں
- **ڈیفالٹ طور پر ہلکا:** چھوٹی Rust بائنری، تیز اسٹارٹ اپ، کم میموری فٹ پرنٹ۔
- **ڈیزائن سے محفوظ:** pairing، سخت سینڈ باکسنگ، واضح اجازت نامے، workspace سکوپنگ۔
- **مکمل طور پر قابل تبادلہ:** بنیادی نظام traits ہیں (providers، چینلز، ٹولز، میموری، tunnels)۔
- **کوئی lock-in نہیں:** OpenAI ہم آہنگ provider سپورٹ + پلگ ایبل کسٹم endpoints۔
## بینچ مارک سنیپ شاٹ (ZeroClaw بمقابلہ OpenClaw، قابل تکرار)
مقامی مشین فوری بینچ مارک (macOS arm64، فروری 2026) 0.8GHz ایج ہارڈویئر کے لیے نارملائز۔
| | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 |
| ------------------------- | ------------- | -------------- | --------------- | -------------------- |
| **زبان** | TypeScript | Python | Go | **Rust** |
| **RAM** | > 1GB | > 100MB | < 10MB | **< 5MB** |
| **اسٹارٹ اپ (0.8GHz کور)** | > 500s | > 30s | < 1s | **< 10ms** |
| **بائنری سائز** | ~28MB (dist) | N/A (Scripts) | ~8MB | **~8.8 MB** |
| **لاگت** | Mac Mini $599 | Linux SBC ~$50 | Linux Board $10 | **کوئی بھی ہارڈویئر $10** |
> نوٹ: ZeroClaw نتائج `/usr/bin/time -l` استعمال کرتے ہوئے ریلیز بلڈز پر ماپے گئے ہیں۔ OpenClaw کو Node.js رن ٹائم کی ضرورت ہے (عام طور پر ~390MB اضافی میموری اوور ہیڈ)، جبکہ NanoBot کو Python رن ٹائم کی ضرورت ہے۔ PicoClaw اور ZeroClaw سٹیٹک بائنریز ہیں۔ اوپر RAM اعداد رن ٹائم میموری ہیں؛ بلڈ ٹائم کمپائلیشن ضروریات زیادہ ہیں۔
<p align="center">
<img src="docs/assets/zeroclaw-comparison.jpeg" alt="ZeroClaw vs OpenClaw Comparison" width="800" />
</p>
### قابل تکرار مقامی پیمائش
```bash
cargo build --release
ls -lh target/release/zeroclaw
/usr/bin/time -l target/release/zeroclaw --help
/usr/bin/time -l target/release/zeroclaw status
```
## ہم نے اب تک جو کچھ بنایا
### بنیادی پلیٹ فارم
- سیشنز، presence، کنفیگ، cron، webhooks، ویب ڈیش بورڈ، اور pairing کے ساتھ Gateway HTTP/WS/SSE control plane۔
- CLI سطح: `gateway`، `agent`، `onboard`، `doctor`، `status`، `service`، `migrate`، `auth`، `cron`، `channel`، `skills`۔
- ٹول dispatch، prompt تعمیر، پیغام درجہ بندی، اور میموری لوڈنگ کے ساتھ ایجنٹ آرکیسٹریشن لوپ۔
- سیکیورٹی پالیسی نفاذ، خودمختاری کی سطحوں، اور منظوری گیٹنگ کے ساتھ سیشن ماڈل۔
- 20+ LLM بیک اینڈز میں failover، retry، اور model routing کے ساتھ لچکدار provider ریپر۔
### چینلز
چینلز: WhatsApp (native)، Telegram، Slack، Discord، Signal، iMessage، Matrix، IRC، Email، Bluesky، DingTalk، Lark، Mattermost، Nextcloud Talk، Nostr، QQ، Reddit، LinkedIn، Twitter، MQTT، WeChat Work، WATI، Mochat، Linq، Notion، WebSocket، ClawdTalk۔
Feature-gated: Matrix (`channel-matrix`)، Lark (`channel-lark`)، Nostr (`channel-nostr`)۔
### ویب ڈیش بورڈ
Gateway سے براہ راست فراہم کردہ React 19 + Vite 6 + Tailwind CSS 4 ویب ڈیش بورڈ:
- **Dashboard** — سسٹم جائزہ، صحت کی حالت، اپ ٹائم، لاگت ٹریکنگ
- **Agent Chat** — ایجنٹ کے ساتھ انٹرایکٹو چیٹ
- **Memory** — میموری اندراجات براؤز اور منظم کریں
- **Config** — کنفیگریشن دیکھیں اور ترمیم کریں
- **Cron** — شیڈولڈ ٹاسکس کا انتظام کریں
- **Tools** — دستیاب ٹولز براؤز کریں
- **Logs** — ایجنٹ سرگرمی لاگز دیکھیں
- **Cost** — ٹوکن استعمال اور لاگت ٹریکنگ
- **Doctor** — سسٹم صحت تشخیص
- **Integrations** — انٹیگریشن اسٹیٹس اور سیٹ اپ
- **Pairing** — ڈیوائس pairing مینجمنٹ
### فرم ویئر اہداف
| ہدف | پلیٹ فارم | مقصد |
|--------|----------|---------|
| ESP32 | Espressif ESP32 | وائرلیس پیری فیرل ایجنٹ |
| ESP32-UI | ESP32 + Display | بصری انٹرفیس کے ساتھ ایجنٹ |
| STM32 Nucleo | STM32 (ARM Cortex-M) | صنعتی پیری فیرل |
| Arduino | Arduino | بنیادی سینسر/ایکچویٹر بریج |
| Uno Q Bridge | Arduino Uno | ایجنٹ کے لیے سیریل بریج |
### ٹولز + آٹومیشن
- **بنیادی:** shell، file read/write/edit، git آپریشنز، glob search، content search
- **ویب:** browser control، web fetch، web search، screenshot، image info، PDF read
- **انٹیگریشنز:** Jira، Notion، Google Workspace، Microsoft 365، LinkedIn، Composio، Pushover
- **MCP:** Model Context Protocol tool wrapper + deferred tool sets
- **شیڈولنگ:** cron add/remove/update/run، schedule tool
- **میموری:** recall، store، forget، knowledge، project intel
- **ایڈوانسڈ:** delegate (ایجنٹ سے ایجنٹ)، swarm، model switch/routing، security ops، cloud ops
- **ہارڈویئر:** board info، memory map، memory read (feature-gated)
### رن ٹائم + حفاظت
- **خودمختاری کی سطحیں:** ReadOnly، Supervised (ڈیفالٹ)، Full۔
- **سینڈ باکسنگ:** workspace تنہائی، path traversal بلاکنگ، کمانڈ اجازت نامے، ممنوعہ راستے، Landlock (Linux)، Bubblewrap۔
- **شرح محدودیت:** فی گھنٹہ زیادہ سے زیادہ عمل، فی دن زیادہ سے زیادہ لاگت (قابل ترتیب)۔
- **منظوری گیٹنگ:** درمیانے/زیادہ خطرے والے آپریشنز کے لیے انٹرایکٹو منظوری۔
- **E-stop:** ایمرجنسی شٹ ڈاؤن صلاحیت۔
- **129+ سیکیورٹی ٹیسٹس** خودکار CI میں۔
### Ops + پیکیجنگ
- Gateway سے براہ راست فراہم کردہ ویب ڈیش بورڈ۔
- ٹنل سپورٹ: Cloudflare، Tailscale، ngrok، OpenVPN، کسٹم کمانڈ۔
- کنٹینرائزڈ ایگزیکیوشن کے لیے Docker رن ٹائم اڈاپٹر۔
- CI/CD: beta (push پر خودکار) → stable (دستی dispatch) → Docker، crates.io، Scoop، AUR، Homebrew، tweet۔
- Linux (x86_64، aarch64، armv7)، macOS (x86_64، aarch64)، Windows (x86_64) کے لیے پری بلٹ بائنریز۔
## کنفیگریشن ## کنفیگریشن
<p align="center" dir="rtl"> کم از کم `~/.zeroclaw/config.toml`:
ZeroClaw ایک YAML کنفیگریشن فائل استعمال کرتا ہے۔ ڈیفالٹ طور پر، یہ `config.yaml` تلاش کرتا ہے۔
</p>
```yaml ```toml
# ڈیفالٹ فراہم کنندہ default_provider = "anthropic"
provider: anthropic api_key = "sk-ant-..."
# فراہم کنندگان کی کنفیگریشن
providers:
anthropic:
api_key: ${ANTHROPIC_API_KEY}
model: claude-3-5-sonnet-20241022
openai:
api_key: ${OPENAI_API_KEY}
model: gpt-4o
# میموری کنفیگریشن
memory:
backend: sqlite
path: data/memory.db
# چینلز کی کنفیگریشن
channels:
telegram:
token: ${TELEGRAM_BOT_TOKEN}
``` ```
--- مکمل کنفیگریشن حوالہ: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)۔
### چینل کنفیگریشن
**Telegram:**
```toml
[channels.telegram]
bot_token = "123456:ABC-DEF..."
```
**Discord:**
```toml
[channels.discord]
token = "your-bot-token"
```
**Slack:**
```toml
[channels.slack]
bot_token = "xoxb-..."
app_token = "xapp-..."
```
**WhatsApp:**
```toml
[channels.whatsapp]
enabled = true
```
**Matrix:**
```toml
[channels.matrix]
homeserver_url = "https://matrix.org"
username = "@bot:matrix.org"
password = "..."
```
**Signal:**
```toml
[channels.signal]
phone_number = "+1234567890"
```
### ٹنل کنفیگریشن
```toml
[tunnel]
kind = "cloudflare" # یا "tailscale", "ngrok", "openvpn", "custom", "none"
```
تفصیلات: [چینل حوالہ](docs/reference/api/channels-reference.md) · [کنفیگ حوالہ](docs/reference/api/config-reference.md)
### رن ٹائم سپورٹ (موجودہ)
- **`native`** (ڈیفالٹ) — براہ راست process ایگزیکیوشن، تیز ترین راستہ، بھروسہ مند ماحول کے لیے مثالی۔
- **`docker`** — مکمل کنٹینر تنہائی، نافذ سیکیورٹی پالیسیاں، Docker ضروری ہے۔
سخت سینڈ باکسنگ یا نیٹ ورک تنہائی کے لیے `runtime.kind = "docker"` سیٹ کریں۔
## سبسکرپشن تصدیق (OpenAI Codex / Claude Code / Gemini)
ZeroClaw سبسکرپشن نیٹو auth پروفائلز سپورٹ کرتا ہے (ملٹی اکاؤنٹ، آرام پر خفیہ)۔
- اسٹور فائل: `~/.zeroclaw/auth-profiles.json`
- خفیہ کاری کلید: `~/.zeroclaw/.secret_key`
- پروفائل id فارمیٹ: `<provider>:<profile_name>` (مثال: `openai-codex:work`)
```bash
# OpenAI Codex OAuth (ChatGPT سبسکرپشن)
zeroclaw auth login --provider openai-codex --device-code
# Gemini OAuth
zeroclaw auth login --provider gemini --profile default
# Anthropic setup-token
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# چیک / ریفریش / پروفائل تبدیل کریں
zeroclaw auth status
zeroclaw auth refresh --provider openai-codex --profile default
zeroclaw auth use --provider openai-codex --profile work
# سبسکرپشن auth کے ساتھ ایجنٹ چلائیں
zeroclaw agent --provider openai-codex -m "hello"
zeroclaw agent --provider anthropic -m "hello"
```
## ایجنٹ workspace + اسکلز
Workspace روٹ: `~/.zeroclaw/workspace/` (config کے ذریعے قابل ترتیب)۔
انجیکٹ کردہ prompt فائلیں:
- `IDENTITY.md` — ایجنٹ شخصیت اور کردار
- `USER.md` — صارف سیاق و سباق اور ترجیحات
- `MEMORY.md` — طویل مدتی حقائق اور اسباق
- `AGENTS.md` — سیشن کنونشنز اور آغاز کے قواعد
- `SOUL.md` — بنیادی شناخت اور آپریٹنگ اصول
اسکلز: `~/.zeroclaw/workspace/skills/<skill>/SKILL.md` یا `SKILL.toml`۔
```bash
# انسٹال شدہ اسکلز کی فہرست
zeroclaw skills list
# git سے انسٹال
zeroclaw skills install https://github.com/user/my-skill.git
# انسٹال سے پہلے سیکیورٹی آڈٹ
zeroclaw skills audit https://github.com/user/my-skill.git
# اسکل ہٹائیں
zeroclaw skills remove my-skill
```
## CLI کمانڈز
```bash
# Workspace مینجمنٹ
zeroclaw onboard # رہنمائی شدہ سیٹ اپ وزرڈ
zeroclaw status # daemon/ایجنٹ اسٹیٹس دکھائیں
zeroclaw doctor # سسٹم تشخیص چلائیں
# Gateway + daemon
zeroclaw gateway # Gateway سرور شروع کریں (127.0.0.1:42617)
zeroclaw daemon # مکمل خودمختار رن ٹائم شروع کریں
# ایجنٹ
zeroclaw agent # انٹرایکٹو چیٹ موڈ
zeroclaw agent -m "message" # واحد پیغام موڈ
# سروس مینجمنٹ
zeroclaw service install # OS سروس کے طور پر انسٹال کریں (launchd/systemd)
zeroclaw service start|stop|restart|status
# چینلز
zeroclaw channel list # ترتیب شدہ چینلز کی فہرست
zeroclaw channel doctor # چینل صحت چیک کریں
zeroclaw channel bind-telegram 123456789
# Cron + شیڈولنگ
zeroclaw cron list # شیڈولڈ جابز کی فہرست
zeroclaw cron add "*/5 * * * *" --prompt "Check system health"
zeroclaw cron remove <id>
# میموری
zeroclaw memory list # میموری اندراجات کی فہرست
zeroclaw memory get <key> # میموری حاصل کریں
zeroclaw memory stats # میموری اعداد و شمار
# Auth پروفائلز
zeroclaw auth login --provider <name>
zeroclaw auth status
zeroclaw auth use --provider <name> --profile <profile>
# ہارڈویئر پیری فیرلز
zeroclaw hardware discover # منسلک آلات اسکین کریں
zeroclaw peripheral list # منسلک پیری فیرلز کی فہرست
zeroclaw peripheral flash # آلے پر فرم ویئر فلیش کریں
# منتقلی
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw
# شیل تکمیلات
source <(zeroclaw completions bash)
zeroclaw completions zsh > ~/.zfunc/_zeroclaw
```
مکمل کمانڈز حوالہ: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
<!-- markdownlint-disable MD001 MD024 -->
## شرائط
<details>
<summary><strong>Windows</strong></summary>
#### ضروری
1. **Visual Studio Build Tools** (MSVC لنکر اور Windows SDK فراہم کرتا ہے):
```powershell
winget install Microsoft.VisualStudio.2022.BuildTools
```
انسٹالیشن کے دوران (یا Visual Studio Installer کے ذریعے)، **"Desktop development with C++"** ورک لوڈ منتخب کریں۔
2. **Rust toolchain:**
```powershell
winget install Rustlang.Rustup
```
انسٹالیشن کے بعد، نیا ٹرمینل کھولیں اور `rustup default stable` چلائیں تاکہ مستحکم toolchain فعال ہو۔
3. **تصدیق** کریں دونوں کام کر رہے ہیں:
```powershell
rustc --version
cargo --version
```
#### اختیاری
- **Docker Desktop** — صرف اس صورت میں ضروری ہے جب [Docker sandboxed runtime](#رن-ٹائم-سپورٹ-موجودہ) (`runtime.kind = "docker"`) استعمال کر رہے ہوں۔ `winget install Docker.DockerDesktop` سے انسٹال کریں۔
</details>
<details>
<summary><strong>Linux / macOS</strong></summary>
#### ضروری
1. **Build essentials:**
- **Linux (Debian/Ubuntu):** `sudo apt install build-essential pkg-config`
- **Linux (Fedora/RHEL):** `sudo dnf group install development-tools && sudo dnf install pkg-config`
- **macOS:** Xcode Command Line Tools انسٹال کریں: `xcode-select --install`
2. **Rust toolchain:**
```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
تفصیلات کے لیے [rustup.rs](https://rustup.rs) دیکھیں۔
3. **تصدیق** کریں دونوں کام کر رہے ہیں:
```bash
rustc --version
cargo --version
```
#### ایک لائن انسٹالر
یا اوپر کے مراحل چھوڑیں اور سب کچھ (سسٹم dependencies، Rust، ZeroClaw) ایک کمانڈ میں انسٹال کریں:
```bash
curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash
```
#### کمپائلیشن وسائل کی ضروریات
سورس سے بنانا نتیجے میں آنے والی بائنری چلانے سے زیادہ وسائل کی ضرورت ہے:
| وسیلہ | کم از کم | تجویز کردہ |
| -------------- | ------- | ----------- |
| **RAM + swap** | 2 GB | 4 GB+ |
| **خالی ڈسک** | 6 GB | 10 GB+ |
اگر آپ کا ہوسٹ کم از کم سے نیچے ہے، پری بلٹ بائنریز استعمال کریں:
```bash
./install.sh --prefer-prebuilt
```
بغیر سورس فال بیک صرف بائنری انسٹال کے لیے:
```bash
./install.sh --prebuilt-only
```
#### اختیاری
- **Docker** — صرف اس صورت میں ضروری ہے جب [Docker sandboxed runtime](#رن-ٹائم-سپورٹ-موجودہ) (`runtime.kind = "docker"`) استعمال کر رہے ہوں۔ اپنے پیکیج مینیجر یا [docker.com](https://docs.docker.com/engine/install/) سے انسٹال کریں۔
> **نوٹ:** ڈیفالٹ `cargo build --release` چوٹی کمپائل دباؤ کم کرنے کے لیے `codegen-units=1` استعمال کرتا ہے۔ طاقتور مشینوں پر تیز بلڈز کے لیے، `cargo build --profile release-fast` استعمال کریں۔
</details>
<!-- markdownlint-enable MD001 MD024 -->
### پری بلٹ بائنریز
ریلیز اثاثے شائع کیے جاتے ہیں:
- Linux: `x86_64`، `aarch64`، `armv7`
- macOS: `x86_64`، `aarch64`
- Windows: `x86_64`
تازہ ترین اثاثے یہاں سے ڈاؤن لوڈ کریں:
<https://github.com/zeroclaw-labs/zeroclaw/releases/latest>
## دستاویزات ## دستاویزات
<p align="center" dir="rtl"> جب آپ onboarding فلو سے گزر چکے ہوں اور گہرا حوالہ چاہتے ہوں تو یہ استعمال کریں۔
تفصیلی دستاویزات کے لیے، دیکھیں:
</p>
- [دستاویزات ہب](docs/README.md) - نیویگیشن اور "کیا کہاں ہے" کے لیے [دستاویزات فہرست](docs/README.md) سے شروع کریں۔
- [کمانڈز ریفرنس](docs/commands-reference.md) - مکمل سسٹم ماڈل کے لیے [آرکیٹیکچر جائزہ](docs/architecture.md) پڑھیں۔
- [فراہم کنندگان ریفرنس](docs/providers-reference.md) - جب آپ کو ہر key اور مثال چاہیے تو [کنفیگریشن حوالہ](docs/reference/api/config-reference.md) استعمال کریں۔
- [چینلز ریفرنس](docs/channels-reference.md) - [آپریشنل رن بک](docs/ops/operations-runbook.md) کے ساتھ Gateway کتاب کے مطابق چلائیں۔
- [کنفیگریشن ریفرنس](docs/config-reference.md) - رہنمائی شدہ سیٹ اپ کے لیے [ZeroClaw Onboard](#فوری-آغاز) فالو کریں۔
- عام ناکامیوں کو [مسائل حل کرنے کی گائیڈ](docs/ops/troubleshooting.md) سے ڈیبگ کریں۔
- کچھ بھی ظاہر کرنے سے پہلے [سیکیورٹی رہنمائی](docs/security/README.md) کا جائزہ لیں۔
--- ### حوالہ جاتی دستاویزات
- دستاویزات مرکز: [docs/README.md](docs/README.md)
- متحد دستاویزات TOC: [docs/SUMMARY.md](docs/SUMMARY.md)
- کمانڈز حوالہ: [docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
- کنفیگ حوالہ: [docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
- Providers حوالہ: [docs/reference/api/providers-reference.md](docs/reference/api/providers-reference.md)
- چینلز حوالہ: [docs/reference/api/channels-reference.md](docs/reference/api/channels-reference.md)
- آپریشنل رن بک: [docs/ops/operations-runbook.md](docs/ops/operations-runbook.md)
- مسائل حل: [docs/ops/troubleshooting.md](docs/ops/troubleshooting.md)
### تعاون دستاویزات
- شراکت گائیڈ: [CONTRIBUTING.md](CONTRIBUTING.md)
- PR ورک فلو پالیسی: [docs/contributing/pr-workflow.md](docs/contributing/pr-workflow.md)
- CI ورک فلو گائیڈ: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- جائزہ کار پلے بک: [docs/contributing/reviewer-playbook.md](docs/contributing/reviewer-playbook.md)
- سیکیورٹی افشاء پالیسی: [SECURITY.md](SECURITY.md)
- دستاویزات ٹیمپلیٹ: [docs/contributing/doc-template.md](docs/contributing/doc-template.md)
### تعیناتی + آپریشنز
- نیٹ ورک تعیناتی گائیڈ: [docs/ops/network-deployment.md](docs/ops/network-deployment.md)
- پراکسی ایجنٹ پلے بک: [docs/ops/proxy-agent-playbook.md](docs/ops/proxy-agent-playbook.md)
- ہارڈویئر گائیڈز: [docs/hardware/README.md](docs/hardware/README.md)
## Smooth Crab 🦀
ZeroClaw smooth crab 🦀 کے لیے بنایا گیا تھا، ایک تیز اور مؤثر AI اسسٹنٹ۔ Argenis De La Rosa اور کمیونٹی نے بنایا۔
- [zeroclawlabs.ai](https://zeroclawlabs.ai)
- [@zeroclawlabs](https://x.com/zeroclawlabs)
## ZeroClaw کی حمایت کریں
اگر ZeroClaw آپ کے کام میں مدد کرتا ہے اور آپ جاری ترقی کی حمایت کرنا چاہتے ہیں، تو آپ یہاں عطیہ دے سکتے ہیں:
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
### 🙏 خصوصی شکریہ
ان کمیونٹیز اور اداروں کا دلی شکریہ جو اس اوپن سورس کام کو متاثر اور توانائی دیتے ہیں:
- **Harvard University** — فکری تجسس کو فروغ دینے اور ممکنات کی حدود کو آگے بڑھانے کے لیے۔
- **MIT** — کھلے علم، اوپن سورس، اور اس یقین کی حمایت کے لیے کہ ٹیکنالوجی سب کے لیے قابل رسائی ہونی چاہیے۔
- **Sundai Club** — کمیونٹی، توانائی، اور اہم چیزیں بنانے کی لگاتار کوشش کے لیے۔
- **دنیا اور آگے** 🌍✨ — ہر اس شراکت دار، خواب دیکھنے والے، اور تعمیر کرنے والے کے لیے جو اوپن سورس کو اچھائی کی قوت بنا رہا ہے۔ یہ آپ کے لیے ہے۔
ہم کھلے میں بنا رہے ہیں کیونکہ بہترین آئیڈیاز ہر جگہ سے آتے ہیں۔ اگر آپ یہ پڑھ رہے ہیں، تو آپ اس کا حصہ ہیں۔ خوش آمدید۔ 🦀❤️
## شراکت ## شراکت
<p align="center" dir="rtl"> ZeroClaw میں نئے ہیں؟ [`good first issue`](https://github.com/zeroclaw-labs/zeroclaw/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) لیبل والے issues تلاش کریں — شروع کرنے کے طریقے کے لیے [شراکت گائیڈ](CONTRIBUTING.md#first-time-contributors) دیکھیں۔ AI/vibe-coded PRs کا خیرمقدم ہے! 🤖
شراکت کا خیرمقدم ہے! براہ کرم [شراکت گائیڈ](CONTRIBUTING.md) پڑھیں۔
</p> [CONTRIBUTING.md](CONTRIBUTING.md) اور [CLA.md](docs/contributing/cla.md) دیکھیں۔ ایک trait نافذ کریں، PR جمع کرائیں:
- CI ورک فلو گائیڈ: [docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- نیا `Provider``src/providers/`
- نیا `Channel``src/channels/`
- نیا `Observer``src/observability/`
- نیا `Tool``src/tools/`
- نیا `Memory``src/memory/`
- نیا `Tunnel``src/tunnel/`
- نیا `Peripheral``src/peripherals/`
- نیا `Skill``~/.zeroclaw/workspace/skills/<name>/`
<!-- BEGIN:RECENT_CONTRIBUTORS -->
<!-- END:RECENT_CONTRIBUTORS -->
## ⚠️ سرکاری ریپوزٹری اور نقل کی وارننگ
**یہ ZeroClaw کی واحد سرکاری ریپوزٹری ہے:**
> https://github.com/zeroclaw-labs/zeroclaw
کوئی بھی دوسری ریپوزٹری، تنظیم، ڈومین، یا پیکیج جو "ZeroClaw" ہونے کا دعویٰ کرے یا ZeroClaw Labs سے وابستگی کا اشارہ کرے **غیر مجاز ہے اور اس پروجیکٹ سے وابستہ نہیں ہے**۔ معلوم غیر مجاز فورکس [TRADEMARK.md](docs/maintainers/trademark.md) میں درج ہوں گے۔
اگر آپ کو نقل یا ٹریڈ مارک کا غلط استعمال ملے، براہ کرم [issue کھولیں](https://github.com/zeroclaw-labs/zeroclaw/issues)۔
--- ---
## لائسنس ## لائسنس
<p align="center" dir="rtl"> ZeroClaw زیادہ سے زیادہ کشادگی اور شراکت دار تحفظ کے لیے دوہری لائسنس یافتہ ہے:
یہ پروجیکٹ ڈول لائسنس یافتہ ہے:
</p>
- MIT License | لائسنس | استعمال کا معاملہ |
- Apache License, ورژن 2.0 |---|---|
| [MIT](LICENSE-MIT) | اوپن سورس، تحقیق، تعلیمی، ذاتی استعمال |
| [Apache 2.0](LICENSE-APACHE) | پیٹنٹ تحفظ، ادارہ جاتی، تجارتی تعیناتی |
<p align="center" dir="rtl"> آپ کوئی بھی لائسنس منتخب کر سکتے ہیں۔ **شراکت دار خود بخود دونوں کے تحت حقوق دیتے ہیں** — مکمل شراکت دار معاہدے کے لیے [CLA.md](docs/contributing/cla.md) دیکھیں۔
تفصیلات کے لیے [LICENSE-APACHE](LICENSE-APACHE) اور [LICENSE-MIT](LICENSE-MIT) دیکھیں۔
</p> ### ٹریڈ مارک
**ZeroClaw** نام اور لوگو ZeroClaw Labs کے ٹریڈ مارکس ہیں۔ یہ لائسنس انہیں توثیق یا وابستگی کا اشارہ دینے کے لیے استعمال کرنے کی اجازت نہیں دیتا۔ مجاز اور ممنوع استعمال کے لیے [TRADEMARK.md](docs/maintainers/trademark.md) دیکھیں۔
### شراکت دار تحفظات
- آپ اپنی شراکتوں کا **کاپی رائٹ برقرار رکھتے ہیں**
- **پیٹنٹ گرانٹ** (Apache 2.0) آپ کو دوسرے شراکت داروں کے پیٹنٹ دعووں سے بچاتی ہے
- آپ کی شراکتیں commit تاریخ اور [NOTICE](NOTICE) میں **مستقل طور پر منسوب** ہیں
- شراکت کرنے سے کوئی ٹریڈ مارک حقوق منتقل نہیں ہوتے
--- ---
## کمیونٹی **ZeroClaw** — صفر اوور ہیڈ۔ صفر سمجھوتا۔ کہیں بھی تعینات کریں۔ کچھ بھی تبدیل کریں۔ 🦀
- [Telegram](https://t.me/zeroclawlabs) ## شراکت دار
- [Facebook Group](https://www.facebook.com/groups/zeroclaw)
- [WeChat Group](https://zeroclawlabs.cn/group.jpg)
--- <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors">
<img src="https://contrib.rocks/image?repo=zeroclaw-labs/zeroclaw" alt="ZeroClaw contributors" />
</a>
## سپانسرز یہ فہرست GitHub شراکت داروں کے گراف سے بنائی گئی ہے اور خود بخود اپ ڈیٹ ہوتی ہے۔
<p align="center" dir="rtl"> ## ستاروں کی تاریخ
اگر ZeroClaw آپ کے لیے مفید ہے، تو براہ کرم ہمیں کافی خریدنے پر غور کریں:
<p align="center">
<a href="https://www.star-history.com/#zeroclaw-labs/zeroclaw&type=date&legend=top-left">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&theme=dark&legend=top-left" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
</picture>
</a>
</p> </p>
[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee)](https://buymeacoffee.com/argenistherose)
<!-- BEGIN:RECENT_CONTRIBUTORS -->
### 🌟 Recent Contributors (v0.3.1)
3 contributors shipped features, fixes, and improvements in this release cycle:
- **Argenis**
- **argenis de la rosa**
- **Claude Opus 4.6**
Thank you to everyone who opened issues, reviewed PRs, translated docs, and helped test. Every contribution matters. 🦀
<!-- END:RECENT_CONTRIBUTORS -->

File diff suppressed because it is too large Load Diff

View File

@ -1,24 +1,33 @@
<p align="center"> <p align="center">
<img src="docs/assets/zeroclaw.png" alt="ZeroClaw" width="200" /> <img src="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/docs/assets/zeroclaw-banner.png" alt="ZeroClaw" width="600" />
</p> </p>
<h1 align="center">ZeroClaw 🦀(简体中文)</h1> <h1 align="center">🦀 ZeroClaw — 个人AI助手</h1>
<p align="center"> <p align="center">
<strong>零开销、零妥协;随处部署、万物可换。</strong> <strong>零开销。零妥协。100% Rust。100% 无绑定。</strong><br>
⚡️ <strong>在10美元硬件上运行RAM不到5MB比OpenClaw少99%内存比Mac mini便宜98%</strong>
</p> </p>
<p align="center"> <p align="center">
<a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a> <a href="LICENSE-APACHE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
<a href="NOTICE"><img src="https://img.shields.io/badge/contributors-27+-green.svg" alt="Contributors" /></a> <a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors"><img src="https://img.shields.io/github/contributors/zeroclaw-labs/zeroclaw?color=green" alt="Contributors" /></a>
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a> <a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=flat&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
<a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a> <a href="https://x.com/zeroclawlabs?s=21"><img src="https://img.shields.io/badge/X-%40zeroclawlabs-000000?style=flat&logo=x&logoColor=white" alt="X: @zeroclawlabs" /></a>
<a href="https://www.facebook.com/groups/zeroclaw"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a> <a href="https://www.facebook.com/groups/zeroclawlabs"><img src="https://img.shields.io/badge/Facebook-Group-1877F2?style=flat&logo=facebook&logoColor=white" alt="Facebook Group" /></a>
<a href="https://discord.com/invite/wDshRVqRjx"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://www.instagram.com/therealzeroclaw"><img src="https://img.shields.io/badge/Instagram-%40therealzeroclaw-E4405F?style=flat&logo=instagram&logoColor=white" alt="Instagram: @therealzeroclaw" /></a>
<a href="https://www.tiktok.com/@zeroclawlabs"><img src="https://img.shields.io/badge/TikTok-%40zeroclawlabs-000000?style=flat&logo=tiktok&logoColor=white" alt="TikTok: @zeroclawlabs" /></a>
<a href="https://www.rednote.com/user/profile/69b735e6000000002603927e"><img src="https://img.shields.io/badge/RedNote-Official-FF2442?style=flat" alt="RedNote" /></a>
<a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a> <a href="https://www.reddit.com/r/zeroclawlabs/"><img src="https://img.shields.io/badge/Reddit-r%2Fzeroclawlabs-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/zeroclawlabs" /></a>
</p> </p>
<p align="center"> <p align="center">
🌐 语言: 由哈佛大学、麻省理工学院和 Sundai.Club 社区的学生及成员构建。
</p>
<p align="center">
🌐 <strong>Languages:</strong>
<a href="README.md">🇺🇸 English</a> · <a href="README.md">🇺🇸 English</a> ·
<a href="README.zh-CN.md">🇨🇳 简体中文</a> · <a href="README.zh-CN.md">🇨🇳 简体中文</a> ·
<a href="README.ja.md">🇯🇵 日本語</a> · <a href="README.ja.md">🇯🇵 日本語</a> ·
@ -52,85 +61,190 @@
<a href="README.nb.md">🇳🇴 Norsk</a> <a href="README.nb.md">🇳🇴 Norsk</a>
</p> </p>
<p align="center"> ZeroClaw 是一个运行在你自己设备上的个人AI助手。它在你已经使用的频道上回复你WhatsApp、Telegram、Slack、Discord、Signal、iMessage、Matrix、IRC、Email、Bluesky、Nostr、Mattermost、Nextcloud Talk、DingTalk、Lark、QQ、Reddit、LinkedIn、Twitter、MQTT、WeChat Work 等。它有一个用于实时控制的网页仪表板可以连接硬件外设ESP32、STM32、Arduino、Raspberry Pi。Gateway 只是控制平面——产品是助手本身。
<a href="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh">一键部署</a> |
<a href="docs/i18n/zh-CN/setup-guides/README.zh-CN.md">安装入门</a> | 如果你想要一个本地化、快速、始终在线的个人单用户助手,这就是它。
<a href="docs/README.zh-CN.md">文档总览</a> |
<a href="docs/SUMMARY.zh-CN.md">文档目录</a>
</p>
<p align="center"> <p align="center">
<strong>场景分流:</strong> <a href="https://zeroclawlabs.ai">官网</a> ·
<a href="docs/i18n/zh-CN/reference/README.zh-CN.md">参考手册</a> · <a href="docs/README.md">文档</a> ·
<a href="docs/i18n/zh-CN/ops/README.zh-CN.md">运维部署</a> · <a href="docs/architecture.md">架构</a> ·
<a href="docs/i18n/zh-CN/ops/troubleshooting.zh-CN.md">故障排查</a> · <a href="#快速开始简版">入门指南</a> ·
<a href="docs/i18n/zh-CN/security/README.zh-CN.md">安全专题</a> · <a href="#从-openclaw-迁移">从 OpenClaw 迁移</a> ·
<a href="docs/i18n/zh-CN/hardware/README.zh-CN.md">硬件外设</a> · <a href="docs/ops/troubleshooting.md">故障排除</a> ·
<a href="docs/i18n/zh-CN/contributing/README.zh-CN.md">贡献与 CI</a> <a href="https://discord.com/invite/wDshRVqRjx">Discord</a>
</p> </p>
> 本文是对 `README.md` 的人工对齐翻译(强调可读性与准确性,不做逐字直译)。 > **推荐设置方式:** 在终端运行 `zeroclaw onboard`。ZeroClaw Onboard 会引导你逐步设置网关、工作区、频道和提供者。这是推荐的设置路径,支持 macOS、Linux 和 Windows通过 WSL2。首次安装从这里开始[入门指南](#快速开始简版)
>
> 技术标识命令、配置键、API 路径、Trait 名称)保持英文,避免语义漂移。 ### 订阅认证OAuth
>
> 最后对齐时间:**2026-03-14**。 - **OpenAI Codex**ChatGPT 订阅)
- **Gemini**Google OAuth
- **Anthropic**API 密钥或认证令牌)
模型说明:虽然支持许多提供者/模型,但为获得最佳体验,请使用你可用的最强最新一代模型。参见[引导设置](#快速开始简版)。
模型配置 + CLI[提供者参考](docs/reference/api/providers-reference.md)
认证配置轮换OAuth 与 API 密钥)+ 故障转移:[模型故障转移](docs/reference/api/providers-reference.md)
## 安装(推荐)
运行时Rust stable 工具链。单一二进制文件,无运行时依赖。
### HomebrewmacOS/Linuxbrew
```bash
brew install zeroclaw
```
### 一键安装
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./install.sh
```
`zeroclaw onboard` 在安装后自动运行,配置你的工作区和提供者。
## 快速开始(简版)
完整新手指南(认证、配对、频道):[入门指南](docs/setup-guides/one-click-bootstrap.md)
```bash
# 安装 + 引导
./install.sh --api-key "sk-..." --provider openrouter
# 启动网关webhook 服务器 + 网页仪表板)
zeroclaw gateway # 默认127.0.0.1:42617
zeroclaw gateway --port 0 # 随机端口(安全加固)
# 与助手对话
zeroclaw agent -m "Hello, ZeroClaw!"
# 交互模式
zeroclaw agent
# 启动完整自主运行时(网关 + 频道 + 定时任务 + 手)
zeroclaw daemon
# 检查状态
zeroclaw status
# 运行诊断
zeroclaw doctor
```
升级?更新后运行 `zeroclaw doctor`
### 从源码构建(开发)
```bash
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
cargo build --release --locked
cargo install --path . --force --locked
zeroclaw onboard
```
> **开发替代方案(无全局安装):** 命令前加 `cargo run --release --`(示例:`cargo run --release -- status`)。
## 从 OpenClaw 迁移
ZeroClaw 可以导入你的 OpenClaw 工作区、记忆和配置:
```bash
# 预览将迁移的内容(安全,只读)
zeroclaw migrate openclaw --dry-run
# 执行迁移
zeroclaw migrate openclaw
```
这会将你的记忆条目、工作区文件和配置从 `~/.openclaw/` 迁移到 `~/.zeroclaw/`。配置会自动从 JSON 转换为 TOML。
## 安全默认设置DM 访问)
ZeroClaw 连接到真实的消息平台。将入站 DM 视为不可信输入。
完整安全指南:[SECURITY.md](SECURITY.md)
所有频道的默认行为:
- **DM 配对**(默认):未知发送者会收到一个短配对码,机器人不会处理他们的消息。
- 使用以下命令批准:`zeroclaw pairing approve <channel> <code>`(然后发送者会被添加到本地允许列表)。
- 公共入站 DM 需要在 `config.toml` 中显式启用。
- 运行 `zeroclaw doctor` 来检测有风险或配置错误的 DM 策略。
**自主级别:**
| 级别 | 行为 |
|------|------|
| `ReadOnly` | 代理可以观察但不能操作 |
| `Supervised`(默认) | 代理在中/高风险操作时需要批准 |
| `Full` | 代理在策略范围内自主操作 |
**沙箱层:** 工作区隔离、路径遍历阻止、命令允许列表、禁止路径(`/etc`、`/root`、`~/.ssh`)、速率限制(每小时最大操作数、每日成本上限)。
<!-- BEGIN:WHATS_NEW --> <!-- BEGIN:WHATS_NEW -->
### 🚀 What's New in v0.3.1 (March 2026)
| Area | Highlights |
|---|---|
| ci | add Termux (aarch64-linux-android) release target |
<!-- END:WHATS_NEW --> <!-- END:WHATS_NEW -->
## 📢 公告板 ### 📢 公告
用于发布重要通知(破坏性变更、安全通告、维护窗口、版本阻塞问题等)。 使用此面板发布重要通知(破坏性更改、安全公告、维护窗口和发布阻塞问题)。
| 日期UTC | 级别 | 通知 | 处理建议 | | 日期 (UTC) | 级别 | 通知 | 操作 |
|---|---|---|---| | ---------- | ---- | ---- | ---- |
| 2026-02-19 | _紧急_ | 我们与 `openagen/zeroclaw``zeroclaw.org` **没有任何关系**。`zeroclaw.org` 当前会指向 `openagen/zeroclaw` 这个 fork并且该域名/仓库正在冒充我们的官网与官方项目。 | 请不要相信上述来源发布的任何信息、二进制、募资活动或官方声明。请仅以[本仓库](https://github.com/zeroclaw-labs/zeroclaw)和已验证官方社媒为准。 | | 2026-02-19 | _严重_ | 我们与 `openagen/zeroclaw`、`zeroclaw.org` 或 `zeroclaw.net` **无任何关联**。`zeroclaw.org` 和 `zeroclaw.net` 域名目前指向 `openagen/zeroclaw` 分支,该域名/仓库正在冒充我们的官方网站/项目。 | 不要信任来自这些来源的信息、二进制文件、筹款或公告。仅使用[本仓库](https://github.com/zeroclaw-labs/zeroclaw)和我们经过验证的社交账号。 |
| 2026-02-21 | _重要_ | 我们的官网现已上线:[zeroclawlabs.ai](https://zeroclawlabs.ai)。感谢大家一直以来的耐心等待。我们仍在持续发现冒充行为,请勿参与任何未经我们官方渠道发布、但打着 ZeroClaw 名义进行的投资、募资或类似活动。 | 一切信息请以[本仓库](https://github.com/zeroclaw-labs/zeroclaw)为准;也可关注 [X@zeroclawlabs](https://x.com/zeroclawlabs?s=21)、[Telegram@zeroclawlabs](https://t.me/zeroclawlabs)、[Facebook群组](https://www.facebook.com/groups/zeroclaw)、[Redditr/zeroclawlabs](https://www.reddit.com/r/zeroclawlabs/) 与 [小红书账号](https://www.xiaohongshu.com/user/profile/67cbfc43000000000d008307?xsec_token=AB73VnYnGNx5y36EtnnZfGmAmS-6Wzv8WMuGpfwfkg6Yc%3D&xsec_source=pc_search) 获取官方最新动态。 | | 2026-02-21 | _重要_ | 我们的官现已上线:[zeroclawlabs.ai](https://zeroclawlabs.ai)。感谢您在我们准备发布期间的耐心等待。我们仍然看到冒充行为,因此**不要**加入任何声称使用 ZeroClaw 名义的投资或筹款活动,除非它是通过我们的官方渠道发布的。 | 使用[本仓库](https://github.com/zeroclaw-labs/zeroclaw)作为唯一信息来源。关注 [X (@zeroclawlabs)](https://x.com/zeroclawlabs?s=21)、[Facebook (Group)](https://www.facebook.com/groups/zeroclawlabs) 和 [Reddit (r/zeroclawlabs)](https://www.reddit.com/r/zeroclawlabs/) 获取官方更新。 |
| 2026-02-19 | _重要_ | Anthropic 于 2026-02-19 更新了 Authentication and Credential Use 条款。条款明确OAuth authentication用于 Free、Pro、Max仅适用于 Claude Code 与 Claude.ai将 Claude Free/Pro/Max 账号获得的 OAuth token 用于其他任何产品、工具或服务(包括 Agent SDK不被允许并可能构成对 Consumer Terms of Service 的违规。 | 为避免损失,请暂时不要尝试 Claude Code OAuth 集成;原文见:[Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use)。 | | 2026-02-19 | _重要_ | Anthropic 于 2026-02-19 更新了认证和凭证使用条款。Claude Code OAuth 令牌Free、Pro、Max仅供 Claude Code 和 Claude.ai 专用;在任何其他产品、工具或服务(包括 Agent SDK中使用 Claude Free/Pro/Max 的 OAuth 令牌是不允许的,可能违反消费者服务条款。 | 请暂时避免 Claude Code OAuth 集成以防止潜在损失。原始条款[Authentication and Credential Use](https://code.claude.com/docs/en/legal-and-compliance#authentication-and-credential-use)。 |
## 项目简介 ## 亮点
ZeroClaw 是一个高性能、低资源占用、可组合的自主智能体运行时。ZeroClaw 是面向智能代理工作流的**运行时操作系统** — 它抽象了模型、工具、记忆和执行层,使代理可以一次构建、随处运行。 - **默认精简运行时** — 常见 CLI 和状态工作流在发布构建中运行仅需数兆字节内存。
- **低成本部署** — 专为 10 美元开发板和小型云实例设计,无重量级运行时依赖。
- **快速冷启动** — 单一二进制 Rust 运行时使命令和守护进程启动近乎即时。
- **可移植架构** — 跨 ARM、x86 和 RISC-V 的单一二进制文件,可交换的提供者/频道/工具。
- **本地优先网关** — 用于会话、频道、工具、定时任务、SOP 和事件的单一控制平面。
- **多频道收件箱** — WhatsApp、Telegram、Slack、Discord、Signal、iMessage、Matrix、IRC、Email、Bluesky、Nostr、Mattermost、Nextcloud Talk、DingTalk、Lark、QQ、Reddit、LinkedIn、Twitter、MQTT、WeChat Work、WebSocket 等。
- **多代理编排Hands** — 按计划运行并随时间变得更智能的自主代理群。
- **标准操作规程SOPs** — 事件驱动的工作流自动化,支持 MQTT、webhook、cron 和外设触发器。
- **网页仪表板** — React 19 + Vite 网页 UI具有实时聊天、记忆浏览器、配置编辑器、定时任务管理器和工具检查器。
- **硬件外设** — 通过 `Peripheral` trait 支持 ESP32、STM32 Nucleo、Arduino、Raspberry Pi GPIO。
- **一流工具** — shell、文件 I/O、浏览器、git、网页抓取/搜索、MCP、Jira、Notion、Google Workspace 等 70+ 种。
- **生命周期钩子** — 在每个阶段拦截和修改 LLM 调用、工具执行和消息。
- **技能平台** — 内置、社区和工作区技能,带安全审计。
- **隧道支持** — Cloudflare、Tailscale、ngrok、OpenVPN 和自定义隧道用于远程访问。
- Rust 原生实现,单二进制部署,跨 ARM / x86 / RISC-V。 ### 团队为什么选择 ZeroClaw
- Trait 驱动架构,`Provider` / `Channel` / `Tool` / `Memory` 可替换。
- 安全默认值优先:配对鉴权、显式 allowlist、沙箱与作用域约束。
## 为什么选择 ZeroClaw - **默认精简:** 小型 Rust 二进制文件,快速启动,低内存占用。
- **安全设计:** 配对、严格沙箱、显式允许列表、工作区范围限定。
- **完全可替换:** 核心系统都是 trait提供者、频道、工具、记忆、隧道
- **无锁定:** 支持 OpenAI 兼容提供者 + 可插拔自定义端点。
- **默认轻量运行时**:常见 CLI 与 `status` 工作流通常保持在几 MB 级内存范围。 ## 基准测试快照ZeroClaw 对比 OpenClaw可复现
- **低成本部署友好**:面向低价板卡与小规格云主机设计,不依赖厚重运行时。
- **冷启动速度快**Rust 单二进制让常用命令与守护进程启动更接近“秒开”。
- **跨架构可移植**:同一套二进制优先流程覆盖 ARM / x86 / RISC-V并保持 provider/channel/tool 可替换。
## 基准快照ZeroClaw vs OpenClaw可复现 本地机器快速基准测试macOS arm642026年2月针对 0.8GHz 边缘硬件标准化。
以下是本地快速基准对比macOS arm642026 年 2 月),按 0.8GHz 边缘 CPU 进行归一化展示: | | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 |
| ------------------------- | ------------- | -------------- | --------------- | -------------------- |
| **语言** | TypeScript | Python | Go | **Rust** |
| **RAM** | > 1GB | > 100MB | < 10MB | **< 5MB** |
| **启动时间0.8GHz 核心)** | > 500s | > 30s | < 1s | **< 10ms** |
| **二进制大小** | ~28MB (dist) | N/A (Scripts) | ~8MB | **~8.8 MB** |
| **成本** | Mac Mini $599 | Linux SBC ~$50 | Linux Board $10 | **任何硬件 $10** |
| | OpenClaw | NanoBot | PicoClaw | ZeroClaw 🦀 | > 注意ZeroClaw 的结果使用 `/usr/bin/time -l` 在发布构建上测量。OpenClaw 需要 Node.js 运行时(通常约 390MB 额外内存开销),而 NanoBot 需要 Python 运行时。PicoClaw 和 ZeroClaw 是静态二进制文件。上述 RAM 数据为运行时内存;构建时编译需求更高。
|---|---|---|---|---|
| **语言** | TypeScript | Python | Go | **Rust** |
| **RAM** | > 1GB | > 100MB | < 10MB | **< 5MB** |
| **启动时间0.8GHz 核)** | > 500s | > 30s | < 1s | **< 10ms** |
| **二进制体积** | ~28MBdist | N/A脚本 | ~8MB | **~8.8 MB** |
| **成本** | Mac Mini $599 | Linux SBC ~$50 | Linux 板卡 $10 | **任意 $10 硬件** |
> 说明ZeroClaw 的数据来自 release 构建,并通过 `/usr/bin/time -l` 测得。OpenClaw 需要 Node.js 运行时环境,仅该运行时通常就会带来约 390MB 的额外内存占用NanoBot 需要 Python 运行时环境。PicoClaw 与 ZeroClaw 为静态二进制。
<p align="center"> <p align="center">
<img src="docs/assets/zeroclaw-comparison.jpeg" alt="ZeroClaw vs OpenClaw 对比图" width="800" /> <img src="docs/assets/zeroclaw-comparison.jpeg" alt="ZeroClaw vs OpenClaw Comparison" width="800" />
</p> </p>
### 本地可复现测量 ### 可复现的本地测量
基准数据会随代码与工具链变化,建议始终在你的目标环境自行复测:
```bash ```bash
cargo build --release cargo build --release
@ -140,120 +254,502 @@ ls -lh target/release/zeroclaw
/usr/bin/time -l target/release/zeroclaw status /usr/bin/time -l target/release/zeroclaw status
``` ```
当前 README 的样例数据macOS arm642026-02-18 ## 我们迄今为止构建的一切
- Release 二进制:`8.8M` ### 核心平台
- `zeroclaw --help`:约 `0.02s`,峰值内存约 `3.9MB`
- `zeroclaw status`:约 `0.01s`,峰值内存约 `4.1MB`
## 一键部署 - Gateway HTTP/WS/SSE 控制平面支持会话、在线状态、配置、定时任务、webhook、网页仪表板和配对。
- CLI 表面:`gateway`、`agent`、`onboard`、`doctor`、`status`、`service`、`migrate`、`auth`、`cron`、`channel`、`skills`。
- 代理编排循环,支持工具调度、提示构建、消息分类和记忆加载。
- 会话模型,支持安全策略执行、自主级别和批准门控。
- 弹性提供者包装器,支持故障转移、重试和跨 20+ LLM 后端的模型路由。
```bash ### 频道
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw 频道WhatsApp原生、Telegram、Slack、Discord、Signal、iMessage、Matrix、IRC、Email、Bluesky、DingTalk、Lark、Mattermost、Nextcloud Talk、Nostr、QQ、Reddit、LinkedIn、Twitter、MQTT、WeChat Work、WATI、Mochat、Linq、Notion、WebSocket、ClawdTalk。
./install.sh
功能门控Matrix`channel-matrix`、Lark`channel-lark`、Nostr`channel-nostr`)。
### 网页仪表板
React 19 + Vite 6 + Tailwind CSS 4 网页仪表板直接从 Gateway 提供:
- **仪表板** — 系统概览、健康状态、运行时间、成本跟踪
- **代理聊天** — 与代理的交互式聊天
- **记忆** — 浏览和管理记忆条目
- **配置** — 查看和编辑配置
- **定时任务** — 管理计划任务
- **工具** — 浏览可用工具
- **日志** — 查看代理活动日志
- **成本** — 令牌使用和成本跟踪
- **诊断** — 系统健康诊断
- **集成** — 集成状态和设置
- **配对** — 设备配对管理
### 固件目标
| 目标 | 平台 | 用途 |
|------|------|------|
| ESP32 | Espressif ESP32 | 无线外设代理 |
| ESP32-UI | ESP32 + Display | 带可视化界面的代理 |
| STM32 Nucleo | STM32 (ARM Cortex-M) | 工业外设 |
| Arduino | Arduino | 基础传感器/执行器桥接 |
| Uno Q Bridge | Arduino Uno | 到代理的串口桥接 |
### 工具 + 自动化
- **核心:** shell、文件读/写/编辑、git 操作、glob 搜索、内容搜索
- **网络:** 浏览器控制、网页抓取、网络搜索、截图、图片信息、PDF 阅读
- **集成:** Jira、Notion、Google Workspace、Microsoft 365、LinkedIn、Composio、Pushover
- **MCP** Model Context Protocol 工具包装器 + 延迟工具集
- **调度:** cron 添加/删除/更新/运行、计划工具
- **记忆:** 回忆、存储、遗忘、知识、项目情报
- **高级:** 委托(代理到代理)、群体、模型切换/路由、安全操作、云操作
- **硬件:** 板信息、内存映射、内存读取(功能门控)
### 运行时 + 安全
- **自主级别:** ReadOnly、Supervised默认、Full。
- **沙箱:** 工作区隔离、路径遍历阻止、命令允许列表、禁止路径、LandlockLinux、Bubblewrap。
- **速率限制:** 每小时最大操作数、每日最大成本(可配置)。
- **批准门控:** 中/高风险操作的交互式批准。
- **紧急停止:** 紧急关闭功能。
- **129+ 安全测试** 在自动化 CI 中。
### 运维 + 打包
- 网页仪表板直接从 Gateway 提供。
- 隧道支持Cloudflare、Tailscale、ngrok、OpenVPN、自定义命令。
- Docker 运行时适配器用于容器化执行。
- CI/CDbeta推送时自动→ stable手动触发→ Docker、crates.io、Scoop、AUR、Homebrew、tweet。
- 预构建二进制文件支持 Linuxx86_64、aarch64、armv7、macOSx86_64、aarch64、Windowsx86_64
## 配置
最小 `~/.zeroclaw/config.toml`
```toml
default_provider = "anthropic"
api_key = "sk-ant-..."
``` ```
可选环境初始化:`./install.sh --install-system-deps --install-rust`(可能需要 `sudo`)。 完整配置参考:[docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
详细说明见:[`docs/setup-guides/one-click-bootstrap.md`](docs/i18n/zh-CN/setup-guides/one-click-bootstrap.zh-CN.md)。 ### 频道配置
## 快速开始 **Telegram**
```toml
### HomebrewmacOS/Linuxbrew [channels.telegram]
bot_token = "123456:ABC-DEF..."
```bash
brew install zeroclaw
``` ```
```bash **Discord**
git clone https://github.com/zeroclaw-labs/zeroclaw.git ```toml
cd zeroclaw [channels.discord]
cargo build --release --locked token = "your-bot-token"
cargo install --path . --force --locked
# 快速初始化(无交互)
zeroclaw onboard --api-key sk-... --provider openrouter
# 或使用引导式向导
zeroclaw onboard
# 单次对话
zeroclaw agent -m "Hello, ZeroClaw!"
# 启动网关(默认: 127.0.0.1:42617
zeroclaw gateway
# 启动长期运行模式
zeroclaw daemon
``` ```
## Subscription AuthOpenAI Codex / Claude Code **Slack**
```toml
[channels.slack]
bot_token = "xoxb-..."
app_token = "xapp-..."
```
ZeroClaw 现已支持基于订阅的原生鉴权配置(多账号、静态加密存储)。 **WhatsApp**
```toml
[channels.whatsapp]
enabled = true
```
- 配置文件:`~/.zeroclaw/auth-profiles.json` **Matrix**
```toml
[channels.matrix]
homeserver_url = "https://matrix.org"
username = "@bot:matrix.org"
password = "..."
```
**Signal**
```toml
[channels.signal]
phone_number = "+1234567890"
```
### 隧道配置
```toml
[tunnel]
kind = "cloudflare" # or "tailscale", "ngrok", "openvpn", "custom", "none"
```
详情:[频道参考](docs/reference/api/channels-reference.md) · [配置参考](docs/reference/api/config-reference.md)
### 运行时支持(当前)
- **`native`**(默认)— 直接进程执行,最快路径,适合可信环境。
- **`docker`** — 完全容器隔离,强制安全策略,需要 Docker。
设置 `runtime.kind = "docker"` 以获得严格沙箱或网络隔离。
## 订阅认证OpenAI Codex / Claude Code / Gemini
ZeroClaw 支持订阅原生认证配置文件(多账户,静态加密)。
- 存储文件:`~/.zeroclaw/auth-profiles.json`
- 加密密钥:`~/.zeroclaw/.secret_key` - 加密密钥:`~/.zeroclaw/.secret_key`
- Profile ID 格式:`<provider>:<profile_name>`(例:`openai-codex:work` - 配置文件 ID 格式:`<provider>:<profile_name>`(示例:`openai-codex:work`
OpenAI Codex OAuthChatGPT 订阅):
```bash ```bash
# 推荐用于服务器/无显示器环境 # OpenAI Codex OAuthChatGPT 订阅)
zeroclaw auth login --provider openai-codex --device-code zeroclaw auth login --provider openai-codex --device-code
# 浏览器/回调流程,支持粘贴回退 # Gemini OAuth
zeroclaw auth login --provider openai-codex --profile default zeroclaw auth login --provider gemini --profile default
zeroclaw auth paste-redirect --provider openai-codex --profile default
# 检查 / 刷新 / 切换 profile # Anthropic setup-token
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# 检查 / 刷新 / 切换配置文件
zeroclaw auth status zeroclaw auth status
zeroclaw auth refresh --provider openai-codex --profile default zeroclaw auth refresh --provider openai-codex --profile default
zeroclaw auth use --provider openai-codex --profile work zeroclaw auth use --provider openai-codex --profile work
```
Claude Code / Anthropic setup-token # 使用订阅认证运行代理
```bash
# 粘贴订阅/setup tokenAuthorization header 模式)
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization
# 别名命令
zeroclaw auth setup-token --provider anthropic --profile default
```
使用 subscription auth 运行 agent
```bash
zeroclaw agent --provider openai-codex -m "hello" zeroclaw agent --provider openai-codex -m "hello"
zeroclaw agent --provider openai-codex --auth-profile openai-codex:work -m "hello"
# Anthropic 同时支持 API key 和 auth token 环境变量:
# ANTHROPIC_AUTH_TOKEN, ANTHROPIC_OAUTH_TOKEN, ANTHROPIC_API_KEY
zeroclaw agent --provider anthropic -m "hello" zeroclaw agent --provider anthropic -m "hello"
``` ```
## 贡献与许可证 ## 代理工作区 + 技能
- 贡献指南:[`CONTRIBUTING.md`](CONTRIBUTING.md) 工作区根目录:`~/.zeroclaw/workspace/`(可通过配置自定义)。
- PR 工作流:[`docs/contributing/pr-workflow.md`](docs/i18n/zh-CN/contributing/pr-workflow.zh-CN.md)
- Reviewer 指南:[`docs/contributing/reviewer-playbook.md`](docs/i18n/zh-CN/contributing/reviewer-playbook.zh-CN.md) 注入的提示文件:
- 许可证MIT 或 Apache 2.0(见 [`LICENSE-MIT`](LICENSE-MIT)、[`LICENSE-APACHE`](LICENSE-APACHE) 与 [`NOTICE`](NOTICE) - `IDENTITY.md` — 代理人格和角色
- `USER.md` — 用户上下文和偏好
- `MEMORY.md` — 长期事实和经验
- `AGENTS.md` — 会话约定和初始化规则
- `SOUL.md` — 核心身份和运作原则
技能:`~/.zeroclaw/workspace/skills/<skill>/SKILL.md` 或 `SKILL.toml`
```bash
# 列出已安装的技能
zeroclaw skills list
# 从 git 安装
zeroclaw skills install https://github.com/user/my-skill.git
# 安装前安全审计
zeroclaw skills audit https://github.com/user/my-skill.git
# 移除技能
zeroclaw skills remove my-skill
```
## CLI 命令
```bash
# 工作区管理
zeroclaw onboard # 引导设置向导
zeroclaw status # 显示守护进程/代理状态
zeroclaw doctor # 运行系统诊断
# 网关 + 守护进程
zeroclaw gateway # 启动网关服务器127.0.0.1:42617
zeroclaw daemon # 启动完整自主运行时
# 代理
zeroclaw agent # 交互式聊天模式
zeroclaw agent -m "message" # 单条消息模式
# 服务管理
zeroclaw service install # 作为系统服务安装launchd/systemd
zeroclaw service start|stop|restart|status
# 频道
zeroclaw channel list # 列出已配置的频道
zeroclaw channel doctor # 检查频道健康状况
zeroclaw channel bind-telegram 123456789
# 定时任务 + 调度
zeroclaw cron list # 列出计划任务
zeroclaw cron add "*/5 * * * *" --prompt "Check system health"
zeroclaw cron remove <id>
# 记忆
zeroclaw memory list # 列出记忆条目
zeroclaw memory get <key> # 检索记忆
zeroclaw memory stats # 记忆统计
# 认证配置文件
zeroclaw auth login --provider <name>
zeroclaw auth status
zeroclaw auth use --provider <name> --profile <profile>
# 硬件外设
zeroclaw hardware discover # 扫描已连接的设备
zeroclaw peripheral list # 列出已连接的外设
zeroclaw peripheral flash # 向设备刷写固件
# 迁移
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw
# Shell 补全
source <(zeroclaw completions bash)
zeroclaw completions zsh > ~/.zfunc/_zeroclaw
```
完整命令参考:[docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
<!-- markdownlint-disable MD001 MD024 -->
## 前置条件
<details>
<summary><strong>Windows</strong></summary>
#### 必需
1. **Visual Studio Build Tools**(提供 MSVC 链接器和 Windows SDK
```powershell
winget install Microsoft.VisualStudio.2022.BuildTools
```
在安装期间(或通过 Visual Studio 安装程序),选择 **"Desktop development with C++"** 工作负载。
2. **Rust 工具链:**
```powershell
winget install Rustlang.Rustup
```
安装后,打开新终端并运行 `rustup default stable` 确保 stable 工具链已激活。
3. **验证**两者是否正常工作:
```powershell
rustc --version
cargo --version
```
#### 可选
- **Docker Desktop** — 仅在使用 [Docker 沙箱运行时](#运行时支持当前)`runtime.kind = "docker"`)时需要。通过 `winget install Docker.DockerDesktop` 安装。
</details>
<details>
<summary><strong>Linux / macOS</strong></summary>
#### 必需
1. **构建工具:**
- **Linux (Debian/Ubuntu):** `sudo apt install build-essential pkg-config`
- **Linux (Fedora/RHEL):** `sudo dnf group install development-tools && sudo dnf install pkg-config`
- **macOS:** 安装 Xcode 命令行工具:`xcode-select --install`
2. **Rust 工具链:**
```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
详情参见 [rustup.rs](https://rustup.rs)。
3. **验证**两者是否正常工作:
```bash
rustc --version
cargo --version
```
#### 一行安装
或者跳过上述步骤使用单条命令安装所有内容系统依赖、Rust、ZeroClaw
```bash
curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash
```
#### 编译资源需求
从源码构建比运行生成的二进制文件需要更多资源:
| 资源 | 最低 | 推荐 |
| ---- | ---- | ---- |
| **RAM + swap** | 2 GB | 4 GB+ |
| **可用磁盘** | 6 GB | 10 GB+ |
如果你的主机低于最低要求,使用预构建二进制文件:
```bash
./install.sh --prefer-prebuilt
```
仅使用二进制安装,不回退到源码编译:
```bash
./install.sh --prebuilt-only
```
#### 可选
- **Docker** — 仅在使用 [Docker 沙箱运行时](#运行时支持当前)`runtime.kind = "docker"`)时需要。通过你的包管理器或 [docker.com](https://docs.docker.com/engine/install/) 安装。
> **注意:** 默认的 `cargo build --release` 使用 `codegen-units=1` 以降低编译峰值压力。对于强大的机器,使用 `cargo build --profile release-fast` 加速构建。
</details>
<!-- markdownlint-enable MD001 MD024 -->
### 预构建二进制文件
发布资产可用于:
- Linux: `x86_64`、`aarch64`、`armv7`
- macOS: `x86_64`、`aarch64`
- Windows: `x86_64`
从以下位置下载最新资产:
<https://github.com/zeroclaw-labs/zeroclaw/releases/latest>
## 文档
当你完成引导流程后需要更深入的参考时使用这些文档。
- 从[文档索引](docs/README.md)开始了解导航和内容分布。
- 阅读[架构概述](docs/architecture.md)了解完整系统模型。
- 使用[配置参考](docs/reference/api/config-reference.md)查阅所有键和示例。
- 按照[运维手册](docs/ops/operations-runbook.md)运行 Gateway。
- 按照 [ZeroClaw Onboard](#快速开始简版) 进行引导设置。
- 使用[故障排除指南](docs/ops/troubleshooting.md)调试常见故障。
- 在暴露任何内容之前查看[安全指南](docs/security/README.md)。
### 参考文档
- 文档中心:[docs/README.md](docs/README.md)
- 统一文档目录:[docs/SUMMARY.md](docs/SUMMARY.md)
- 命令参考:[docs/reference/cli/commands-reference.md](docs/reference/cli/commands-reference.md)
- 配置参考:[docs/reference/api/config-reference.md](docs/reference/api/config-reference.md)
- 提供者参考:[docs/reference/api/providers-reference.md](docs/reference/api/providers-reference.md)
- 频道参考:[docs/reference/api/channels-reference.md](docs/reference/api/channels-reference.md)
- 运维手册:[docs/ops/operations-runbook.md](docs/ops/operations-runbook.md)
- 故障排除:[docs/ops/troubleshooting.md](docs/ops/troubleshooting.md)
### 协作文档
- 贡献指南:[CONTRIBUTING.md](CONTRIBUTING.md)
- PR 工作流策略:[docs/contributing/pr-workflow.md](docs/contributing/pr-workflow.md)
- CI 工作流指南:[docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- 审查员手册:[docs/contributing/reviewer-playbook.md](docs/contributing/reviewer-playbook.md)
- 安全披露策略:[SECURITY.md](SECURITY.md)
- 文档模板:[docs/contributing/doc-template.md](docs/contributing/doc-template.md)
### 部署 + 运维
- 网络部署指南:[docs/ops/network-deployment.md](docs/ops/network-deployment.md)
- 代理代理手册:[docs/ops/proxy-agent-playbook.md](docs/ops/proxy-agent-playbook.md)
- 硬件指南:[docs/hardware/README.md](docs/hardware/README.md)
## Smooth Crab 🦀
ZeroClaw 为 smooth crab 🦀 而构建,一个快速高效的 AI 助手。由 Argenis De La Rosa 和社区共同构建。
- [zeroclawlabs.ai](https://zeroclawlabs.ai)
- [@zeroclawlabs](https://x.com/zeroclawlabs)
## 支持 ZeroClaw
如果 ZeroClaw 对你的工作有帮助,你想支持持续开发,可以在这里捐款:
<a href="https://buymeacoffee.com/argenistherose"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Donate-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee" alt="Buy Me a Coffee" /></a>
### 🙏 特别感谢
衷心感谢激励和推动这项开源工作的社区和机构:
- **哈佛大学** — 培养求知欲并推动可能性的边界。
- **MIT** — 倡导开放知识、开源以及技术应该人人可及的信念。
- **Sundai Club** — 社区、能量以及不懈追求构建有意义事物的动力。
- **世界及更远** 🌍✨ — 致每一位贡献者、梦想家和构建者,你们让开源成为一股向善的力量。这是献给你们的。
我们公开构建,因为最好的想法来自四面八方。如果你在阅读这些,你就是其中的一部分。欢迎。🦀❤️
## 贡献
ZeroClaw 新手?寻找标记为 [`good first issue`](https://github.com/zeroclaw-labs/zeroclaw/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) 的问题 — 参阅我们的[贡献指南](CONTRIBUTING.md#first-time-contributors)了解如何开始。欢迎 AI/vibe-coded PR🤖
参见 [CONTRIBUTING.md](CONTRIBUTING.md) 和 [CLA.md](docs/contributing/cla.md)。实现一个 trait提交 PR
- CI 工作流指南:[docs/contributing/ci-map.md](docs/contributing/ci-map.md)
- 新 `Provider``src/providers/`
- 新 `Channel``src/channels/`
- 新 `Observer``src/observability/`
- 新 `Tool``src/tools/`
- 新 `Memory``src/memory/`
- 新 `Tunnel``src/tunnel/`
- 新 `Peripheral``src/peripherals/`
- 新 `Skill``~/.zeroclaw/workspace/skills/<name>/`
<!-- BEGIN:RECENT_CONTRIBUTORS --> <!-- BEGIN:RECENT_CONTRIBUTORS -->
### 🌟 Recent Contributors (v0.3.1)
3 contributors shipped features, fixes, and improvements in this release cycle:
- **Argenis**
- **argenis de la rosa**
- **Claude Opus 4.6**
Thank you to everyone who opened issues, reviewed PRs, translated docs, and helped test. Every contribution matters. 🦀
<!-- END:RECENT_CONTRIBUTORS --> <!-- END:RECENT_CONTRIBUTORS -->
## ⚠️ 官方仓库和冒充警告
**这是唯一的 ZeroClaw 官方仓库:**
> https://github.com/zeroclaw-labs/zeroclaw
任何其他声称是"ZeroClaw"或暗示与 ZeroClaw Labs 有关联的仓库、组织、域名或包都是**未经授权的,与本项目无关**。已知的未授权分支将在 [TRADEMARK.md](docs/maintainers/trademark.md) 中列出。
如果你遇到冒充或商标滥用,请[提交问题](https://github.com/zeroclaw-labs/zeroclaw/issues)。
--- ---
如果你需要完整实现细节(架构图、全部命令、完整 API、开发流程请直接阅读英文主文档[`README.md`](README.md)。 ## 许可证
ZeroClaw 采用双重许可,以实现最大开放性和贡献者保护:
| 许可证 | 使用场景 |
|--------|----------|
| [MIT](LICENSE-MIT) | 开源、研究、学术、个人使用 |
| [Apache 2.0](LICENSE-APACHE) | 专利保护、机构、商业部署 |
你可以选择任一许可证。**贡献者自动授予两种许可证的权利** — 参见 [CLA.md](docs/contributing/cla.md) 了解完整的贡献者协议。
### 商标
**ZeroClaw** 名称和标志是 ZeroClaw Labs 的商标。此许可证不授予使用它们暗示背书或关联的权限。参见 [TRADEMARK.md](docs/maintainers/trademark.md) 了解允许和禁止的使用。
### 贡献者保护
- 你**保留**你贡献的版权
- **专利授权**Apache 2.0)保护你免受其他贡献者的专利索赔
- 你的贡献在提交历史和 [NOTICE](NOTICE) 中**永久归属**
- 贡献不转让商标权
---
**ZeroClaw** — 零开销。零妥协。随处部署。任意替换。🦀
## 贡献者
<a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors">
<img src="https://contrib.rocks/image?repo=zeroclaw-labs/zeroclaw" alt="ZeroClaw contributors" />
</a>
此列表从 GitHub 贡献者图表生成,自动更新。
## Star 历史
<p align="center">
<a href="https://www.star-history.com/#zeroclaw-labs/zeroclaw&type=date&legend=top-left">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&theme=dark&legend=top-left" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=zeroclaw-labs/zeroclaw&type=date&legend=top-left" />
</picture>
</a>
</p>

29
apps/tauri/Cargo.toml Normal file
View File

@ -0,0 +1,29 @@
[package]
name = "zeroclaw-desktop"
version = "0.1.0"
edition = "2021"
description = "ZeroClaw Desktop — Tauri-powered system tray app"
publish = false
[build-dependencies]
tauri-build = { version = "2.0", features = [] }
[dependencies]
tauri = { version = "2.0", features = ["tray-icon", "image-png"] }
tauri-plugin-shell = "2.0"
tauri-plugin-store = "2.0"
tauri-plugin-single-instance = "2.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] }
tokio = { version = "1.50", features = ["rt-multi-thread", "macros", "sync", "time"] }
anyhow = "1.0"
[target.'cfg(target_os = "macos")'.dependencies]
objc2 = "0.6"
objc2-app-kit = { version = "0.3", features = ["NSApplication", "NSImage", "NSRunningApplication"] }
objc2-foundation = { version = "0.3", features = ["NSData"] }
[features]
default = ["custom-protocol"]
custom-protocol = ["tauri/custom-protocol"]

3
apps/tauri/build.rs Normal file
View File

@ -0,0 +1,3 @@
fn main() {
tauri_build::build();
}

View File

@ -0,0 +1,14 @@
{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "default",
"description": "Default capability set for ZeroClaw Desktop",
"windows": ["main"],
"permissions": [
"core:default",
"shell:allow-open",
"store:allow-get",
"store:allow-set",
"store:allow-save",
"store:allow-load"
]
}

View File

@ -0,0 +1,14 @@
{
"identifier": "desktop",
"description": "Desktop-specific permissions for ZeroClaw",
"windows": ["main"],
"permissions": [
"core:default",
"shell:allow-open",
"shell:allow-execute",
"store:allow-get",
"store:allow-set",
"store:allow-save",
"store:allow-load"
]
}

View File

@ -0,0 +1,8 @@
{
"identifier": "mobile",
"description": "Mobile-specific permissions for ZeroClaw",
"windows": ["main"],
"permissions": [
"core:default"
]
}

View File

View File

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1002 B

BIN
apps/tauri/icons/32x32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 B

BIN
apps/tauri/icons/icon.icns Normal file

Binary file not shown.

BIN
apps/tauri/icons/icon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 B

View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
<rect width="128" height="128" rx="16" fill="#DC322F"/>
<text x="64" y="80" font-size="64" font-family="monospace" font-weight="bold" fill="white" text-anchor="middle">Z</text>
</svg>

After

Width:  |  Height:  |  Size: 251 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

View File

@ -0,0 +1,17 @@
use crate::gateway_client::GatewayClient;
use crate::state::SharedState;
use tauri::State;
#[tauri::command]
pub async fn send_message(
state: State<'_, SharedState>,
message: String,
) -> Result<serde_json::Value, String> {
let s = state.read().await;
let client = GatewayClient::new(&s.gateway_url, s.token.as_deref());
drop(s);
client
.send_webhook_message(&message)
.await
.map_err(|e| e.to_string())
}

View File

@ -0,0 +1,11 @@
use crate::gateway_client::GatewayClient;
use crate::state::SharedState;
use tauri::State;
#[tauri::command]
pub async fn list_channels(state: State<'_, SharedState>) -> Result<serde_json::Value, String> {
let s = state.read().await;
let client = GatewayClient::new(&s.gateway_url, s.token.as_deref());
drop(s);
client.get_status().await.map_err(|e| e.to_string())
}

View File

@ -0,0 +1,19 @@
use crate::gateway_client::GatewayClient;
use crate::state::SharedState;
use tauri::State;
#[tauri::command]
pub async fn get_status(state: State<'_, SharedState>) -> Result<serde_json::Value, String> {
let s = state.read().await;
let client = GatewayClient::new(&s.gateway_url, s.token.as_deref());
drop(s);
client.get_status().await.map_err(|e| e.to_string())
}
#[tauri::command]
pub async fn get_health(state: State<'_, SharedState>) -> Result<bool, String> {
let s = state.read().await;
let client = GatewayClient::new(&s.gateway_url, s.token.as_deref());
drop(s);
client.get_health().await.map_err(|e| e.to_string())
}

View File

@ -0,0 +1,4 @@
pub mod agent;
pub mod channels;
pub mod gateway;
pub mod pairing;

View File

@ -0,0 +1,19 @@
use crate::gateway_client::GatewayClient;
use crate::state::SharedState;
use tauri::State;
#[tauri::command]
pub async fn initiate_pairing(state: State<'_, SharedState>) -> Result<serde_json::Value, String> {
let s = state.read().await;
let client = GatewayClient::new(&s.gateway_url, s.token.as_deref());
drop(s);
client.initiate_pairing().await.map_err(|e| e.to_string())
}
#[tauri::command]
pub async fn get_devices(state: State<'_, SharedState>) -> Result<serde_json::Value, String> {
let s = state.read().await;
let client = GatewayClient::new(&s.gateway_url, s.token.as_deref());
drop(s);
client.get_devices().await.map_err(|e| e.to_string())
}

View File

@ -0,0 +1,213 @@
//! HTTP client for communicating with the ZeroClaw gateway.
use anyhow::{Context, Result};
pub struct GatewayClient {
pub(crate) base_url: String,
pub(crate) token: Option<String>,
client: reqwest::Client,
}
impl GatewayClient {
pub fn new(base_url: &str, token: Option<&str>) -> Self {
let client = reqwest::Client::builder()
.timeout(std::time::Duration::from_secs(10))
.build()
.unwrap_or_default();
Self {
base_url: base_url.to_string(),
token: token.map(String::from),
client,
}
}
pub(crate) fn auth_header(&self) -> Option<String> {
self.token.as_ref().map(|t| format!("Bearer {t}"))
}
pub async fn get_status(&self) -> Result<serde_json::Value> {
let mut req = self.client.get(format!("{}/api/status", self.base_url));
if let Some(auth) = self.auth_header() {
req = req.header("Authorization", auth);
}
let resp = req.send().await.context("status request failed")?;
Ok(resp.json().await?)
}
pub async fn get_health(&self) -> Result<bool> {
match self
.client
.get(format!("{}/health", self.base_url))
.send()
.await
{
Ok(resp) => Ok(resp.status().is_success()),
Err(_) => Ok(false),
}
}
pub async fn get_devices(&self) -> Result<serde_json::Value> {
let mut req = self.client.get(format!("{}/api/devices", self.base_url));
if let Some(auth) = self.auth_header() {
req = req.header("Authorization", auth);
}
let resp = req.send().await.context("devices request failed")?;
Ok(resp.json().await?)
}
pub async fn initiate_pairing(&self) -> Result<serde_json::Value> {
let mut req = self
.client
.post(format!("{}/api/pairing/initiate", self.base_url));
if let Some(auth) = self.auth_header() {
req = req.header("Authorization", auth);
}
let resp = req.send().await.context("pairing request failed")?;
Ok(resp.json().await?)
}
/// Check whether the gateway requires pairing.
pub async fn requires_pairing(&self) -> Result<bool> {
let resp = self
.client
.get(format!("{}/health", self.base_url))
.send()
.await
.context("health request failed")?;
let body: serde_json::Value = resp.json().await?;
Ok(body["require_pairing"].as_bool().unwrap_or(false))
}
/// Request a new pairing code from the gateway (localhost-only admin endpoint).
pub async fn request_new_paircode(&self) -> Result<String> {
let resp = self
.client
.post(format!("{}/admin/paircode/new", self.base_url))
.send()
.await
.context("paircode request failed")?;
let body: serde_json::Value = resp.json().await?;
body["pairing_code"]
.as_str()
.map(String::from)
.context("no pairing_code in response")
}
/// Exchange a pairing code for a bearer token.
pub async fn pair_with_code(&self, code: &str) -> Result<String> {
let resp = self
.client
.post(format!("{}/pair", self.base_url))
.header("X-Pairing-Code", code)
.send()
.await
.context("pair request failed")?;
if !resp.status().is_success() {
anyhow::bail!("pair request returned {}", resp.status());
}
let body: serde_json::Value = resp.json().await?;
body["token"]
.as_str()
.map(String::from)
.context("no token in pair response")
}
/// Validate an existing token by calling a protected endpoint.
pub async fn validate_token(&self) -> Result<bool> {
let mut req = self.client.get(format!("{}/api/status", self.base_url));
if let Some(auth) = self.auth_header() {
req = req.header("Authorization", auth);
}
match req.send().await {
Ok(resp) => Ok(resp.status().is_success()),
Err(_) => Ok(false),
}
}
/// Auto-pair with the gateway: request a new code and exchange it for a token.
pub async fn auto_pair(&self) -> Result<String> {
let code = self.request_new_paircode().await?;
self.pair_with_code(&code).await
}
pub async fn send_webhook_message(&self, message: &str) -> Result<serde_json::Value> {
let mut req = self
.client
.post(format!("{}/webhook", self.base_url))
.json(&serde_json::json!({ "message": message }));
if let Some(auth) = self.auth_header() {
req = req.header("Authorization", auth);
}
let resp = req.send().await.context("webhook request failed")?;
Ok(resp.json().await?)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn client_creation_no_token() {
let client = GatewayClient::new("http://127.0.0.1:42617", None);
assert_eq!(client.base_url, "http://127.0.0.1:42617");
assert!(client.token.is_none());
assert!(client.auth_header().is_none());
}
#[test]
fn client_creation_with_token() {
let client = GatewayClient::new("http://localhost:8080", Some("test-token"));
assert_eq!(client.base_url, "http://localhost:8080");
assert_eq!(client.token.as_deref(), Some("test-token"));
assert_eq!(client.auth_header().unwrap(), "Bearer test-token");
}
#[test]
fn client_custom_url() {
let client = GatewayClient::new("https://zeroclaw.example.com:9999", None);
assert_eq!(client.base_url, "https://zeroclaw.example.com:9999");
}
#[test]
fn auth_header_format() {
let client = GatewayClient::new("http://localhost", Some("zc_abc123"));
assert_eq!(client.auth_header().unwrap(), "Bearer zc_abc123");
}
#[tokio::test]
async fn health_returns_false_for_unreachable_host() {
// Connect to a port that should not be listening.
let client = GatewayClient::new("http://127.0.0.1:1", None);
let result = client.get_health().await.unwrap();
assert!(!result, "health should be false for unreachable host");
}
#[tokio::test]
async fn status_fails_for_unreachable_host() {
let client = GatewayClient::new("http://127.0.0.1:1", None);
let result = client.get_status().await;
assert!(result.is_err(), "status should fail for unreachable host");
}
#[tokio::test]
async fn devices_fails_for_unreachable_host() {
let client = GatewayClient::new("http://127.0.0.1:1", None);
let result = client.get_devices().await;
assert!(result.is_err(), "devices should fail for unreachable host");
}
#[tokio::test]
async fn pairing_fails_for_unreachable_host() {
let client = GatewayClient::new("http://127.0.0.1:1", None);
let result = client.initiate_pairing().await;
assert!(result.is_err(), "pairing should fail for unreachable host");
}
#[tokio::test]
async fn webhook_fails_for_unreachable_host() {
let client = GatewayClient::new("http://127.0.0.1:1", None);
let result = client.send_webhook_message("hello").await;
assert!(result.is_err(), "webhook should fail for unreachable host");
}
}

40
apps/tauri/src/health.rs Normal file
View File

@ -0,0 +1,40 @@
//! Background health polling for the ZeroClaw gateway.
use crate::gateway_client::GatewayClient;
use crate::state::SharedState;
use crate::tray::icon;
use std::time::Duration;
use tauri::{AppHandle, Emitter, Runtime};
const POLL_INTERVAL: Duration = Duration::from_secs(5);
/// Spawn a background task that polls gateway health and updates state + tray.
pub fn spawn_health_poller<R: Runtime>(app: AppHandle<R>, state: SharedState) {
tauri::async_runtime::spawn(async move {
loop {
let (url, token) = {
let s = state.read().await;
(s.gateway_url.clone(), s.token.clone())
};
let client = GatewayClient::new(&url, token.as_deref());
let healthy = client.get_health().await.unwrap_or(false);
let (connected, agent_status) = {
let mut s = state.write().await;
s.connected = healthy;
(s.connected, s.agent_status)
};
// Update the tray icon and tooltip to reflect current state.
if let Some(tray) = app.tray_by_id("main") {
let _ = tray.set_icon(Some(icon::icon_for_state(connected, agent_status)));
let _ = tray.set_tooltip(Some(icon::tooltip_for_state(connected, agent_status)));
}
let _ = app.emit("zeroclaw://status-changed", healthy);
tokio::time::sleep(POLL_INTERVAL).await;
}
});
}

136
apps/tauri/src/lib.rs Normal file
View File

@ -0,0 +1,136 @@
//! ZeroClaw Desktop — Tauri application library.
pub mod commands;
pub mod gateway_client;
pub mod health;
pub mod state;
pub mod tray;
use gateway_client::GatewayClient;
use state::shared_state;
use tauri::{Manager, RunEvent};
/// Attempt to auto-pair with the gateway so the WebView has a valid token
/// before the React frontend mounts. Runs on localhost so the admin endpoints
/// are accessible without auth.
async fn auto_pair(state: &state::SharedState) -> Option<String> {
let url = {
let s = state.read().await;
s.gateway_url.clone()
};
let client = GatewayClient::new(&url, None);
// Check if gateway is reachable and requires pairing.
if !client.requires_pairing().await.unwrap_or(false) {
return None; // Pairing disabled — no token needed.
}
// Check if we already have a valid token in state.
{
let s = state.read().await;
if let Some(ref token) = s.token {
let authed = GatewayClient::new(&url, Some(token));
if authed.validate_token().await.unwrap_or(false) {
return Some(token.clone()); // Existing token is valid.
}
}
}
// No valid token — auto-pair by requesting a new code and exchanging it.
let client = GatewayClient::new(&url, None);
match client.auto_pair().await {
Ok(token) => {
let mut s = state.write().await;
s.token = Some(token.clone());
Some(token)
}
Err(_) => None, // Gateway may not be ready yet; health poller will retry.
}
}
/// Inject a bearer token into the WebView's localStorage so the React app
/// skips the pairing dialog. Uses Tauri's WebviewWindow scripting API.
fn inject_token_into_webview<R: tauri::Runtime>(window: &tauri::WebviewWindow<R>, token: &str) {
let escaped = token.replace('\\', "\\\\").replace('\'', "\\'");
let script = format!("localStorage.setItem('zeroclaw_token', '{escaped}')");
// WebviewWindow scripting is the standard Tauri API for running JS in the WebView.
let _ = window.eval(&script);
}
/// Set the macOS dock icon programmatically so it shows even in dev builds
/// (which don't have a proper .app bundle).
#[cfg(target_os = "macos")]
fn set_dock_icon() {
use objc2::{AnyThread, MainThreadMarker};
use objc2_app_kit::NSApplication;
use objc2_app_kit::NSImage;
use objc2_foundation::NSData;
let icon_bytes = include_bytes!("../icons/128x128.png");
// Safety: setup() runs on the main thread in Tauri.
let mtm = unsafe { MainThreadMarker::new_unchecked() };
let data = NSData::with_bytes(icon_bytes);
if let Some(image) = NSImage::initWithData(NSImage::alloc(), &data) {
let app = NSApplication::sharedApplication(mtm);
unsafe { app.setApplicationIconImage(Some(&image)) };
}
}
/// Configure and run the Tauri application.
pub fn run() {
let shared = shared_state();
tauri::Builder::default()
.plugin(tauri_plugin_shell::init())
.plugin(tauri_plugin_store::Builder::default().build())
.plugin(tauri_plugin_single_instance::init(|app, _args, _cwd| {
// When a second instance launches, focus the existing window.
if let Some(window) = app.get_webview_window("main") {
let _ = window.show();
let _ = window.set_focus();
}
}))
.manage(shared.clone())
.invoke_handler(tauri::generate_handler![
commands::gateway::get_status,
commands::gateway::get_health,
commands::channels::list_channels,
commands::pairing::initiate_pairing,
commands::pairing::get_devices,
commands::agent::send_message,
])
.setup(move |app| {
// Set macOS dock icon (needed for dev builds without .app bundle).
#[cfg(target_os = "macos")]
set_dock_icon();
// Set up the system tray.
let _ = tray::setup_tray(app);
// Auto-pair with gateway and inject token into the WebView.
let app_handle = app.handle().clone();
let pair_state = shared.clone();
tauri::async_runtime::spawn(async move {
if let Some(token) = auto_pair(&pair_state).await {
if let Some(window) = app_handle.get_webview_window("main") {
inject_token_into_webview(&window, &token);
}
}
});
// Start background health polling.
health::spawn_health_poller(app.handle().clone(), shared.clone());
Ok(())
})
.build(tauri::generate_context!())
.expect("error while building tauri application")
.run(|_app, event| {
// Keep the app running in the background when all windows are closed.
// This is the standard pattern for menu bar / tray apps.
if let RunEvent::ExitRequested { api, .. } = event {
api.prevent_exit();
}
});
}

8
apps/tauri/src/main.rs Normal file
View File

@ -0,0 +1,8 @@
//! ZeroClaw Desktop — main entry point.
//!
//! Prevents an additional console window on Windows in release.
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
fn main() {
zeroclaw_desktop::run();
}

6
apps/tauri/src/mobile.rs Normal file
View File

@ -0,0 +1,6 @@
//! Mobile entry point for ZeroClaw Desktop (iOS/Android).
#[tauri::mobile_entry_point]
fn main() {
zeroclaw_desktop::run();
}

99
apps/tauri/src/state.rs Normal file
View File

@ -0,0 +1,99 @@
//! Shared application state for Tauri.
use std::sync::Arc;
use tokio::sync::RwLock;
/// Agent status as reported by the gateway.
#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)]
#[serde(rename_all = "snake_case")]
pub enum AgentStatus {
Idle,
Working,
Error,
}
/// Shared application state behind an `Arc<RwLock<_>>`.
#[derive(Debug, Clone)]
pub struct AppState {
pub gateway_url: String,
pub token: Option<String>,
pub connected: bool,
pub agent_status: AgentStatus,
}
impl Default for AppState {
fn default() -> Self {
Self {
gateway_url: "http://127.0.0.1:42617".to_string(),
token: None,
connected: false,
agent_status: AgentStatus::Idle,
}
}
}
/// Thread-safe wrapper around `AppState`.
pub type SharedState = Arc<RwLock<AppState>>;
/// Create the default shared state.
pub fn shared_state() -> SharedState {
Arc::new(RwLock::new(AppState::default()))
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_state() {
let state = AppState::default();
assert_eq!(state.gateway_url, "http://127.0.0.1:42617");
assert!(state.token.is_none());
assert!(!state.connected);
assert_eq!(state.agent_status, AgentStatus::Idle);
}
#[test]
fn shared_state_is_cloneable() {
let s1 = shared_state();
let s2 = s1.clone();
// Both references point to the same allocation.
assert!(Arc::ptr_eq(&s1, &s2));
}
#[tokio::test]
async fn shared_state_concurrent_read_write() {
let state = shared_state();
// Write from one handle.
{
let mut s = state.write().await;
s.connected = true;
s.agent_status = AgentStatus::Working;
s.token = Some("zc_test".to_string());
}
// Read from cloned handle.
let state2 = state.clone();
let s = state2.read().await;
assert!(s.connected);
assert_eq!(s.agent_status, AgentStatus::Working);
assert_eq!(s.token.as_deref(), Some("zc_test"));
}
#[test]
fn agent_status_serialization() {
assert_eq!(
serde_json::to_string(&AgentStatus::Idle).unwrap(),
"\"idle\""
);
assert_eq!(
serde_json::to_string(&AgentStatus::Working).unwrap(),
"\"working\""
);
assert_eq!(
serde_json::to_string(&AgentStatus::Error).unwrap(),
"\"error\""
);
}
}

View File

@ -0,0 +1,25 @@
//! Tray menu event handling.
use tauri::{menu::MenuEvent, AppHandle, Manager, Runtime};
pub fn handle_menu_event<R: Runtime>(app: &AppHandle<R>, event: MenuEvent) {
match event.id().as_ref() {
"show" => show_main_window(app, None),
"chat" => show_main_window(app, Some("/agent")),
"quit" => {
app.exit(0);
}
_ => {}
}
}
fn show_main_window<R: Runtime>(app: &AppHandle<R>, navigate_to: Option<&str>) {
if let Some(window) = app.get_webview_window("main") {
let _ = window.show();
let _ = window.set_focus();
if let Some(path) = navigate_to {
let script = format!("window.location.hash = '{path}'");
let _ = window.eval(&script);
}
}
}

105
apps/tauri/src/tray/icon.rs Normal file
View File

@ -0,0 +1,105 @@
//! Tray icon management — swap icon based on connection/agent status.
use crate::state::AgentStatus;
use tauri::image::Image;
/// Embedded tray icon PNGs (22x22, RGBA).
const ICON_IDLE: &[u8] = include_bytes!("../../icons/tray-idle.png");
const ICON_WORKING: &[u8] = include_bytes!("../../icons/tray-working.png");
const ICON_ERROR: &[u8] = include_bytes!("../../icons/tray-error.png");
const ICON_DISCONNECTED: &[u8] = include_bytes!("../../icons/tray-disconnected.png");
/// Select the appropriate tray icon for the current state.
pub fn icon_for_state(connected: bool, status: AgentStatus) -> Image<'static> {
let bytes: &[u8] = if !connected {
ICON_DISCONNECTED
} else {
match status {
AgentStatus::Idle => ICON_IDLE,
AgentStatus::Working => ICON_WORKING,
AgentStatus::Error => ICON_ERROR,
}
};
Image::from_bytes(bytes).expect("embedded tray icon is a valid PNG")
}
/// Tooltip text for the current state.
pub fn tooltip_for_state(connected: bool, status: AgentStatus) -> &'static str {
if !connected {
return "ZeroClaw — Disconnected";
}
match status {
AgentStatus::Idle => "ZeroClaw — Idle",
AgentStatus::Working => "ZeroClaw — Working",
AgentStatus::Error => "ZeroClaw — Error",
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn icon_disconnected_when_not_connected() {
// Should not panic — icon bytes are valid PNGs.
let _img = icon_for_state(false, AgentStatus::Idle);
let _img = icon_for_state(false, AgentStatus::Working);
let _img = icon_for_state(false, AgentStatus::Error);
}
#[test]
fn icon_connected_variants() {
let _idle = icon_for_state(true, AgentStatus::Idle);
let _working = icon_for_state(true, AgentStatus::Working);
let _error = icon_for_state(true, AgentStatus::Error);
}
#[test]
fn tooltip_disconnected() {
assert_eq!(
tooltip_for_state(false, AgentStatus::Idle),
"ZeroClaw — Disconnected"
);
// Agent status is irrelevant when disconnected.
assert_eq!(
tooltip_for_state(false, AgentStatus::Working),
"ZeroClaw — Disconnected"
);
assert_eq!(
tooltip_for_state(false, AgentStatus::Error),
"ZeroClaw — Disconnected"
);
}
#[test]
fn tooltip_connected_variants() {
assert_eq!(
tooltip_for_state(true, AgentStatus::Idle),
"ZeroClaw — Idle"
);
assert_eq!(
tooltip_for_state(true, AgentStatus::Working),
"ZeroClaw — Working"
);
assert_eq!(
tooltip_for_state(true, AgentStatus::Error),
"ZeroClaw — Error"
);
}
#[test]
fn embedded_icons_are_valid_png() {
// Verify the PNG signature (first 8 bytes) of each embedded icon.
let png_sig: &[u8] = &[0x89, b'P', b'N', b'G', 0x0D, 0x0A, 0x1A, 0x0A];
assert!(ICON_IDLE.starts_with(png_sig), "idle icon not valid PNG");
assert!(
ICON_WORKING.starts_with(png_sig),
"working icon not valid PNG"
);
assert!(ICON_ERROR.starts_with(png_sig), "error icon not valid PNG");
assert!(
ICON_DISCONNECTED.starts_with(png_sig),
"disconnected icon not valid PNG"
);
}
}

View File

@ -0,0 +1,19 @@
//! Tray menu construction.
use tauri::{
menu::{Menu, MenuItemBuilder, PredefinedMenuItem},
App, Runtime,
};
pub fn create_tray_menu<R: Runtime>(app: &App<R>) -> Result<Menu<R>, tauri::Error> {
let show = MenuItemBuilder::with_id("show", "Show Dashboard").build(app)?;
let chat = MenuItemBuilder::with_id("chat", "Agent Chat").build(app)?;
let sep1 = PredefinedMenuItem::separator(app)?;
let status = MenuItemBuilder::with_id("status", "Status: Checking...")
.enabled(false)
.build(app)?;
let sep2 = PredefinedMenuItem::separator(app)?;
let quit = MenuItemBuilder::with_id("quit", "Quit ZeroClaw").build(app)?;
Menu::with_items(app, &[&show, &chat, &sep1, &status, &sep2, &quit])
}

View File

@ -0,0 +1,34 @@
//! System tray integration for ZeroClaw Desktop.
pub mod events;
pub mod icon;
pub mod menu;
use tauri::{
tray::{TrayIcon, TrayIconBuilder, TrayIconEvent},
App, Manager, Runtime,
};
/// Set up the system tray icon and menu.
pub fn setup_tray<R: Runtime>(app: &App<R>) -> Result<TrayIcon<R>, tauri::Error> {
let menu = menu::create_tray_menu(app)?;
TrayIconBuilder::with_id("main")
.tooltip("ZeroClaw — Disconnected")
.icon(icon::icon_for_state(false, crate::state::AgentStatus::Idle))
.menu(&menu)
.show_menu_on_left_click(false)
.on_menu_event(events::handle_menu_event)
.on_tray_icon_event(|tray, event| {
if let TrayIconEvent::Click { button, .. } = event {
if button == tauri::tray::MouseButton::Left {
let app = tray.app_handle();
if let Some(window) = app.get_webview_window("main") {
let _ = window.show();
let _ = window.set_focus();
}
}
}
})
.build(app)
}

View File

@ -0,0 +1,35 @@
{
"$schema": "https://raw.githubusercontent.com/tauri-apps/tauri/dev/crates/tauri-cli/config.schema.json",
"productName": "ZeroClaw",
"version": "0.6.1",
"identifier": "ai.zeroclawlabs.desktop",
"build": {
"devUrl": "http://127.0.0.1:42617/_app/",
"frontendDist": "http://127.0.0.1:42617/_app/"
},
"app": {
"windows": [
{
"title": "ZeroClaw",
"width": 1200,
"height": 800,
"resizable": true,
"fullscreen": false,
"visible": false
}
],
"security": {
"csp": "default-src 'self' http://127.0.0.1:* ws://127.0.0.1:*; connect-src 'self' http://127.0.0.1:* ws://127.0.0.1:*; script-src 'self' 'unsafe-inline' http://127.0.0.1:*; style-src 'self' 'unsafe-inline' http://127.0.0.1:*; img-src 'self' http://127.0.0.1:* data:"
}
},
"bundle": {
"active": true,
"targets": "all",
"icon": [
"icons/32x32.png",
"icons/128x128.png",
"icons/icon.icns",
"icons/icon.ico"
]
}
}

View File

@ -263,7 +263,7 @@ fn bench_memory_operations(c: &mut Criterion) {
c.bench_function("memory_recall_top10", |b| { c.bench_function("memory_recall_top10", |b| {
b.iter(|| { b.iter(|| {
rt.block_on(async { rt.block_on(async {
mem.recall(black_box("zeroclaw agent"), 10, None) mem.recall(black_box("zeroclaw agent"), 10, None, None, None)
.await .await
.unwrap() .unwrap()
}) })

View File

@ -11,6 +11,7 @@ fn main() {
println!("cargo:rerun-if-changed=web/src"); println!("cargo:rerun-if-changed=web/src");
println!("cargo:rerun-if-changed=web/public"); println!("cargo:rerun-if-changed=web/public");
println!("cargo:rerun-if-changed=web/index.html"); println!("cargo:rerun-if-changed=web/index.html");
println!("cargo:rerun-if-changed=docs/assets/zeroclaw-trans.png");
println!("cargo:rerun-if-changed=web/package.json"); println!("cargo:rerun-if-changed=web/package.json");
println!("cargo:rerun-if-changed=web/package-lock.json"); println!("cargo:rerun-if-changed=web/package-lock.json");
println!("cargo:rerun-if-changed=web/tsconfig.json"); println!("cargo:rerun-if-changed=web/tsconfig.json");
@ -83,6 +84,7 @@ fn main() {
} }
ensure_dist_dir(dist_dir); ensure_dist_dir(dist_dir);
ensure_dashboard_assets(dist_dir);
} }
fn web_build_required(web_dir: &Path, dist_dir: &Path) -> bool { fn web_build_required(web_dir: &Path, dist_dir: &Path) -> bool {
@ -136,6 +138,24 @@ fn ensure_dist_dir(dist_dir: &Path) {
} }
} }
fn ensure_dashboard_assets(dist_dir: &Path) {
// The Rust gateway serves `web/dist/` via rust-embed under `/_app/*`.
// Some builds may end up with missing/blank logo assets, so we ensure the
// expected image is always present in `web/dist/` at compile time.
let src = Path::new("docs/assets/zeroclaw-trans.png");
if !src.exists() {
eprintln!(
"cargo:warning=docs/assets/zeroclaw-trans.png not found; skipping dashboard asset copy"
);
return;
}
let dst = dist_dir.join("zeroclaw-trans.png");
if let Err(e) = fs::copy(src, &dst) {
eprintln!("cargo:warning=Failed to copy zeroclaw-trans.png into web/dist/: {e}");
}
}
/// Locate the `npm` binary on the system PATH. /// Locate the `npm` binary on the system PATH.
fn which_npm() -> Result<String, ()> { fn which_npm() -> Result<String, ()> {
let cmd = if cfg!(target_os = "windows") { let cmd = if cfg!(target_os = "windows") {

View File

@ -0,0 +1,25 @@
[package]
name = "aardvark-sys"
version = "0.1.0"
edition = "2021"
authors = ["theonlyhennygod"]
license = "MIT OR Apache-2.0"
description = "Low-level bindings for the Total Phase Aardvark I2C/SPI/GPIO USB adapter"
repository = "https://github.com/zeroclaw-labs/zeroclaw"
# NOTE: This crate is the ONLY place in ZeroClaw where unsafe code is permitted.
# The rest of the workspace remains #![forbid(unsafe_code)].
#
# Stub implementation: the Total Phase SDK (aardvark.h + aardvark.so) is NOT
# yet committed. All AardvarkHandle methods return Err(AardvarkError::NotFound)
# at runtime. No unsafe code is needed for the stub.
#
# To enable real hardware (once SDK files are in vendor/):
# 1. Add `bindgen = "0.69"` to [build-dependencies]
# 2. Add `libc = "0.2"` to [dependencies]
# 3. Uncomment the build.rs bindgen call
# 4. Replace stub method bodies with FFI calls via mod bindings
[dependencies]
libloading = "0.8"
thiserror = "2.0"

View File

@ -0,0 +1,27 @@
//! Build script for aardvark-sys.
//!
//! # SDK present (real hardware)
//! When the Total Phase SDK files are in `vendor/`:
//! - Sets linker search path for aardvark.so
//! - Generates src/bindings.rs via bindgen
//!
//! # SDK absent (stub)
//! Does nothing. All AardvarkHandle methods return errors at runtime.
fn main() {
// Stub: SDK not yet in vendor/
// Uncomment and fill in when aardvark.h + aardvark.so are available:
//
// println!("cargo:rustc-link-search=native=crates/aardvark-sys/vendor");
// println!("cargo:rustc-link-lib=dylib=aardvark");
// println!("cargo:rerun-if-changed=vendor/aardvark.h");
//
// let bindings = bindgen::Builder::default()
// .header("vendor/aardvark.h")
// .parse_callbacks(Box::new(bindgen::CargoCallbacks::new()))
// .generate()
// .expect("Unable to generate aardvark bindings");
// bindings
// .write_to_file("src/bindings.rs")
// .expect("Could not write bindings");
}

View File

@ -0,0 +1,475 @@
//! Bindings for the Total Phase Aardvark I2C/SPI/GPIO USB adapter.
//!
//! Uses [`libloading`] to load `aardvark.so` at runtime — the same pattern
//! the official Total Phase C stub (`aardvark.c`) uses internally.
//!
//! # Library search order
//!
//! 1. `ZEROCLAW_AARDVARK_LIB` environment variable (full path to `aardvark.so`)
//! 2. `<workspace>/crates/aardvark-sys/vendor/aardvark.so` (development default)
//! 3. `./aardvark.so` (next to the binary, for deployment)
//!
//! If none resolve, every method returns
//! [`Err(AardvarkError::LibraryNotFound)`](AardvarkError::LibraryNotFound).
//!
//! # Safety
//!
//! This crate is the **only** place in ZeroClaw where `unsafe` is permitted.
//! All `unsafe` is confined to `extern "C"` call sites inside this file.
//! The public API is fully safe Rust.
use std::path::PathBuf;
use std::sync::OnceLock;
use libloading::{Library, Symbol};
use thiserror::Error;
// ── Constants from aardvark.h ─────────────────────────────────────────────
/// Bit set on a port returned by `aa_find_devices` when that port is in use.
const AA_PORT_NOT_FREE: u16 = 0x8000;
/// Configure adapter for I2C + GPIO (I2C master mode, SPI disabled).
const AA_CONFIG_GPIO_I2C: i32 = 0x02;
/// Configure adapter for SPI + GPIO (SPI master mode, I2C disabled).
const AA_CONFIG_SPI_GPIO: i32 = 0x01;
/// No I2C flags (standard 7-bit addressing, normal stop condition).
const AA_I2C_NO_FLAGS: i32 = 0x00;
/// Enable both onboard I2C pullup resistors (hardware v2+ only).
const AA_I2C_PULLUP_BOTH: u8 = 0x03;
// ── Library loading ───────────────────────────────────────────────────────
static AARDVARK_LIB: OnceLock<Option<Library>> = OnceLock::new();
fn lib() -> Option<&'static Library> {
AARDVARK_LIB
.get_or_init(|| {
let candidates: Vec<PathBuf> = vec![
// 1. Explicit env-var override (full path)
std::env::var("ZEROCLAW_AARDVARK_LIB")
.ok()
.map(PathBuf::from)
.unwrap_or_default(),
// 2. Vendor directory shipped with this crate (dev default)
{
let mut p = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
p.push("vendor/aardvark.so");
p
},
// 3. Next to the running binary (deployment)
std::env::current_exe()
.ok()
.and_then(|e| e.parent().map(|d| d.join("aardvark.so")))
.unwrap_or_default(),
// 4. Current working directory
PathBuf::from("aardvark.so"),
];
let mut tried_any = false;
for path in &candidates {
if path.as_os_str().is_empty() {
continue;
}
tried_any = true;
match unsafe { Library::new(path) } {
Ok(lib) => {
// Verify the .so exports aa_c_version (Total Phase version gate).
// The .so exports c_aa_* symbols (not aa_*); aa_c_version is the
// one non-prefixed symbol used to confirm library identity.
let version_ok = unsafe {
lib.get::<unsafe extern "C" fn() -> u32>(b"aa_c_version\0").is_ok()
};
if !version_ok {
eprintln!(
"[aardvark-sys] {} loaded but aa_c_version not found — \
not a valid Aardvark library, skipping",
path.display()
);
continue;
}
eprintln!("[aardvark-sys] loaded library from {}", path.display());
return Some(lib);
}
Err(e) => {
let msg = e.to_string();
// Surface architecture mismatch explicitly — the most common
// failure on Apple Silicon machines with an x86_64 SDK.
if msg.contains("incompatible architecture") || msg.contains("mach-o file") {
eprintln!(
"[aardvark-sys] ARCHITECTURE MISMATCH loading {}: {}\n\
[aardvark-sys] The vendored aardvark.so is x86_64 but this \
binary is {}.\n\
[aardvark-sys] Download the arm64 SDK from https://www.totalphase.com/downloads/ \
or build with --target x86_64-apple-darwin.",
path.display(),
msg,
std::env::consts::ARCH,
);
} else {
eprintln!(
"[aardvark-sys] could not load {}: {}",
path.display(),
msg
);
}
}
}
}
if !tried_any {
eprintln!("[aardvark-sys] no library candidates found; set ZEROCLAW_AARDVARK_LIB or place aardvark.so next to the binary");
}
None
})
.as_ref()
}
/// Errors returned by Aardvark hardware operations.
#[derive(Debug, Error)]
pub enum AardvarkError {
/// No Aardvark adapter found — adapter not plugged in.
#[error("Aardvark adapter not found — is it plugged in?")]
NotFound,
/// `aa_open` returned a non-positive handle.
#[error("Aardvark open failed (code {0})")]
OpenFailed(i32),
/// `aa_i2c_write` returned a negative status code.
#[error("I2C write failed (code {0})")]
I2cWriteFailed(i32),
/// `aa_i2c_read` returned a negative status code.
#[error("I2C read failed (code {0})")]
I2cReadFailed(i32),
/// `aa_spi_write` returned a negative status code.
#[error("SPI transfer failed (code {0})")]
SpiTransferFailed(i32),
/// GPIO operation returned a negative status code.
#[error("GPIO error (code {0})")]
GpioError(i32),
/// `aardvark.so` could not be found or loaded.
#[error("aardvark.so not found — set ZEROCLAW_AARDVARK_LIB or place it next to the binary")]
LibraryNotFound,
}
/// Convenience `Result` alias for this crate.
pub type Result<T> = std::result::Result<T, AardvarkError>;
// ── Handle ────────────────────────────────────────────────────────────────
/// Safe RAII handle over the Aardvark C library handle.
///
/// Automatically closes the adapter on `Drop`.
///
/// **Usage pattern:** open a fresh handle per command and let it drop at the
/// end of each operation (lazy-open / eager-close).
pub struct AardvarkHandle {
handle: i32,
}
impl AardvarkHandle {
// ── Lifecycle ─────────────────────────────────────────────────────────
/// Open the first available (free) Aardvark adapter.
pub fn open() -> Result<Self> {
let ports = Self::find_devices();
let port = ports.first().copied().ok_or(AardvarkError::NotFound)?;
Self::open_port(i32::from(port))
}
/// Open a specific Aardvark adapter by port index.
pub fn open_port(port: i32) -> Result<Self> {
let lib = lib().ok_or(AardvarkError::LibraryNotFound)?;
let handle: i32 = unsafe {
let f: Symbol<unsafe extern "C" fn(i32) -> i32> = lib
.get(b"c_aa_open\0")
.map_err(|_| AardvarkError::LibraryNotFound)?;
f(port)
};
if handle <= 0 {
Err(AardvarkError::OpenFailed(handle))
} else {
Ok(Self { handle })
}
}
/// Return the port numbers of all **free** connected adapters.
///
/// Ports in-use by another process are filtered out.
/// Returns an empty `Vec` when `aardvark.so` cannot be loaded.
pub fn find_devices() -> Vec<u16> {
let Some(lib) = lib() else {
eprintln!("[aardvark-sys] find_devices: library not loaded");
return Vec::new();
};
let mut ports = [0u16; 16];
let n: i32 = unsafe {
let f: std::result::Result<Symbol<unsafe extern "C" fn(i32, *mut u16) -> i32>, _> =
lib.get(b"c_aa_find_devices\0");
match f {
Ok(f) => f(16, ports.as_mut_ptr()),
Err(e) => {
eprintln!("[aardvark-sys] find_devices: symbol lookup failed: {e}");
return Vec::new();
}
}
};
eprintln!(
"[aardvark-sys] find_devices: c_aa_find_devices returned {n}, ports={:?}",
&ports[..n.max(0) as usize]
);
if n <= 0 {
return Vec::new();
}
let free: Vec<u16> = ports[..n as usize]
.iter()
.filter(|&&p| (p & AA_PORT_NOT_FREE) == 0)
.copied()
.collect();
eprintln!("[aardvark-sys] find_devices: free ports={free:?}");
free
}
// ── I2C ───────────────────────────────────────────────────────────────
/// Enable I2C mode and set the bitrate (kHz).
pub fn i2c_enable(&self, bitrate_khz: u32) -> Result<()> {
let lib = lib().ok_or(AardvarkError::LibraryNotFound)?;
unsafe {
let configure: Symbol<unsafe extern "C" fn(i32, i32) -> i32> = lib
.get(b"c_aa_configure\0")
.map_err(|_| AardvarkError::LibraryNotFound)?;
configure(self.handle, AA_CONFIG_GPIO_I2C);
let pullup: Symbol<unsafe extern "C" fn(i32, u8) -> i32> = lib
.get(b"c_aa_i2c_pullup\0")
.map_err(|_| AardvarkError::LibraryNotFound)?;
pullup(self.handle, AA_I2C_PULLUP_BOTH);
let bitrate: Symbol<unsafe extern "C" fn(i32, i32) -> i32> = lib
.get(b"c_aa_i2c_bitrate\0")
.map_err(|_| AardvarkError::LibraryNotFound)?;
bitrate(self.handle, bitrate_khz as i32);
}
Ok(())
}
/// Write `data` bytes to the I2C device at `addr`.
pub fn i2c_write(&self, addr: u8, data: &[u8]) -> Result<()> {
let lib = lib().ok_or(AardvarkError::LibraryNotFound)?;
let ret: i32 = unsafe {
let f: Symbol<unsafe extern "C" fn(i32, u16, i32, u16, *const u8) -> i32> = lib
.get(b"c_aa_i2c_write\0")
.map_err(|_| AardvarkError::LibraryNotFound)?;
f(
self.handle,
u16::from(addr),
AA_I2C_NO_FLAGS,
data.len() as u16,
data.as_ptr(),
)
};
if ret < 0 {
Err(AardvarkError::I2cWriteFailed(ret))
} else {
Ok(())
}
}
/// Read `len` bytes from the I2C device at `addr`.
pub fn i2c_read(&self, addr: u8, len: usize) -> Result<Vec<u8>> {
let lib = lib().ok_or(AardvarkError::LibraryNotFound)?;
let mut buf = vec![0u8; len];
let ret: i32 = unsafe {
let f: Symbol<unsafe extern "C" fn(i32, u16, i32, u16, *mut u8) -> i32> = lib
.get(b"c_aa_i2c_read\0")
.map_err(|_| AardvarkError::LibraryNotFound)?;
f(
self.handle,
u16::from(addr),
AA_I2C_NO_FLAGS,
len as u16,
buf.as_mut_ptr(),
)
};
if ret < 0 {
Err(AardvarkError::I2cReadFailed(ret))
} else {
Ok(buf)
}
}
/// Write then read — standard I2C register-read pattern.
pub fn i2c_write_read(&self, addr: u8, write_data: &[u8], read_len: usize) -> Result<Vec<u8>> {
self.i2c_write(addr, write_data)?;
self.i2c_read(addr, read_len)
}
/// Scan the I2C bus, returning addresses of all responding devices.
///
/// Probes `0x080x77` with a 1-byte read; returns addresses that ACK.
pub fn i2c_scan(&self) -> Vec<u8> {
let Some(lib) = lib() else {
return Vec::new();
};
let Ok(f): std::result::Result<
Symbol<unsafe extern "C" fn(i32, u16, i32, u16, *mut u8) -> i32>,
_,
> = (unsafe { lib.get(b"c_aa_i2c_read\0") }) else {
return Vec::new();
};
let mut found = Vec::new();
let mut buf = [0u8; 1];
for addr in 0x08u16..=0x77 {
let ret = unsafe { f(self.handle, addr, AA_I2C_NO_FLAGS, 1, buf.as_mut_ptr()) };
// ret > 0: bytes received → device ACKed
// ret == 0: NACK → no device at this address
// ret < 0: error code → skip
if ret > 0 {
found.push(addr as u8);
}
}
found
}
// ── SPI ───────────────────────────────────────────────────────────────
/// Enable SPI mode and set the bitrate (kHz).
pub fn spi_enable(&self, bitrate_khz: u32) -> Result<()> {
let lib = lib().ok_or(AardvarkError::LibraryNotFound)?;
unsafe {
let configure: Symbol<unsafe extern "C" fn(i32, i32) -> i32> = lib
.get(b"c_aa_configure\0")
.map_err(|_| AardvarkError::LibraryNotFound)?;
configure(self.handle, AA_CONFIG_SPI_GPIO);
// SPI mode 0: polarity=rising/falling(0), phase=sample/setup(0), MSB first(0)
let spi_cfg: Symbol<unsafe extern "C" fn(i32, i32, i32, i32) -> i32> = lib
.get(b"c_aa_spi_configure\0")
.map_err(|_| AardvarkError::LibraryNotFound)?;
spi_cfg(self.handle, 0, 0, 0);
let bitrate: Symbol<unsafe extern "C" fn(i32, i32) -> i32> = lib
.get(b"c_aa_spi_bitrate\0")
.map_err(|_| AardvarkError::LibraryNotFound)?;
bitrate(self.handle, bitrate_khz as i32);
}
Ok(())
}
/// Full-duplex SPI transfer.
///
/// Sends `send` bytes; returns the simultaneously received bytes (same length).
pub fn spi_transfer(&self, send: &[u8]) -> Result<Vec<u8>> {
let lib = lib().ok_or(AardvarkError::LibraryNotFound)?;
let mut recv = vec![0u8; send.len()];
// aa_spi_write(aardvark, out_num_bytes, data_out, in_num_bytes, data_in)
let ret: i32 = unsafe {
let f: Symbol<unsafe extern "C" fn(i32, u16, *const u8, u16, *mut u8) -> i32> = lib
.get(b"c_aa_spi_write\0")
.map_err(|_| AardvarkError::LibraryNotFound)?;
f(
self.handle,
send.len() as u16,
send.as_ptr(),
recv.len() as u16,
recv.as_mut_ptr(),
)
};
if ret < 0 {
Err(AardvarkError::SpiTransferFailed(ret))
} else {
Ok(recv)
}
}
// ── GPIO ──────────────────────────────────────────────────────────────
/// Set GPIO pin directions and output values.
///
/// `direction`: bitmask — `1` = output, `0` = input.
/// `value`: output state bitmask.
pub fn gpio_set(&self, direction: u8, value: u8) -> Result<()> {
let lib = lib().ok_or(AardvarkError::LibraryNotFound)?;
unsafe {
let dir_f: Symbol<unsafe extern "C" fn(i32, u8) -> i32> = lib
.get(b"c_aa_gpio_direction\0")
.map_err(|_| AardvarkError::LibraryNotFound)?;
let d = dir_f(self.handle, direction);
if d < 0 {
return Err(AardvarkError::GpioError(d));
}
let set_f: Symbol<unsafe extern "C" fn(i32, u8) -> i32> =
lib.get(b"c_aa_gpio_set\0")
.map_err(|_| AardvarkError::LibraryNotFound)?;
let r = set_f(self.handle, value);
if r < 0 {
return Err(AardvarkError::GpioError(r));
}
}
Ok(())
}
/// Read the current GPIO pin states as a bitmask.
pub fn gpio_get(&self) -> Result<u8> {
let lib = lib().ok_or(AardvarkError::LibraryNotFound)?;
let ret: i32 = unsafe {
let f: Symbol<unsafe extern "C" fn(i32) -> i32> = lib
.get(b"c_aa_gpio_get\0")
.map_err(|_| AardvarkError::LibraryNotFound)?;
f(self.handle)
};
if ret < 0 {
Err(AardvarkError::GpioError(ret))
} else {
Ok(ret as u8)
}
}
}
impl Drop for AardvarkHandle {
fn drop(&mut self) {
if let Some(lib) = lib() {
unsafe {
if let Ok(f) = lib.get::<unsafe extern "C" fn(i32) -> i32>(b"c_aa_close\0") {
f(self.handle);
}
}
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn find_devices_does_not_panic() {
// With no adapter plugged in, must return empty without panicking.
let _ = AardvarkHandle::find_devices();
}
#[test]
fn open_returns_error_or_ok_depending_on_hardware() {
// With hardware connected: open() succeeds (Ok).
// Without hardware: returns LibraryNotFound, NotFound, or OpenFailed — any Err is fine.
// Both outcomes are valid; the important thing is no panic.
let _ = AardvarkHandle::open();
}
#[test]
fn open_port_returns_error_when_no_hardware() {
// Port 99 doesn't exist — must return an error regardless of whether hardware is connected.
assert!(AardvarkHandle::open_port(99).is_err());
}
#[test]
fn error_display_messages_are_human_readable() {
assert!(AardvarkError::NotFound
.to_string()
.to_lowercase()
.contains("not found"));
assert!(AardvarkError::OpenFailed(-1).to_string().contains("-1"));
assert!(AardvarkError::I2cWriteFailed(-3)
.to_string()
.contains("I2C write"));
assert!(AardvarkError::SpiTransferFailed(-2)
.to_string()
.contains("SPI"));
assert!(AardvarkError::LibraryNotFound
.to_string()
.contains("aardvark.so"));
}
}

919
crates/aardvark-sys/vendor/aardvark.h vendored Normal file
View File

@ -0,0 +1,919 @@
/*=========================================================================
| Aardvark Interface Library
|--------------------------------------------------------------------------
| Copyright (c) 2003-2024 Total Phase, Inc.
| All rights reserved.
| www.totalphase.com
|
| Redistribution and use of this file in source and binary forms, with
| or without modification, are permitted provided that the following
| conditions are met:
|
| - Redistributions of source code must retain the above copyright
| notice, this list of conditions, and the following disclaimer.
|
| - Redistributions in binary form must reproduce the above copyright
| notice, this list of conditions, and the following disclaimer in the
| documentation or other materials provided with the distribution.
|
| - This file must only be used to interface with Total Phase products.
| The names of Total Phase and its contributors must not be used to
| endorse or promote products derived from this software.
|
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING BUT NOT
| LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
| FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO EVENT WILL THE
| COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
| INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
| BUT NOT LIMITED TO PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
| CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
| LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
| ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
| POSSIBILITY OF SUCH DAMAGE.
|--------------------------------------------------------------------------
| To access Total Phase Aardvark devices through the API:
|
| 1) Use one of the following shared objects:
| aardvark.so -- Linux or macOS shared object
| aardvark.dll -- Windows dynamic link library
|
| 2) Along with one of the following language modules:
| aardvark.c/h -- C/C++ API header file and interface module
| aardvark_py.py -- Python API
| aardvark.cs -- C# .NET source
| aardvark_net.dll -- Compiled .NET binding
| aardvark.bas -- Visual Basic 6 API
========================================================================*/
#ifndef __aardvark_h__
#define __aardvark_h__
#ifdef __cplusplus
extern "C" {
#endif
/*=========================================================================
| TYPEDEFS
========================================================================*/
#ifndef TOTALPHASE_DATA_TYPES
#define TOTALPHASE_DATA_TYPES
#ifndef _MSC_VER
/* C99-compliant compilers (GCC) */
#include <stdint.h>
typedef uint8_t u08;
typedef uint16_t u16;
typedef uint32_t u32;
typedef uint64_t u64;
typedef int8_t s08;
typedef int16_t s16;
typedef int32_t s32;
typedef int64_t s64;
#else
/* Microsoft compilers (Visual C++) */
typedef unsigned __int8 u08;
typedef unsigned __int16 u16;
typedef unsigned __int32 u32;
typedef unsigned __int64 u64;
typedef signed __int8 s08;
typedef signed __int16 s16;
typedef signed __int32 s32;
typedef signed __int64 s64;
#endif /* __MSC_VER */
typedef float f32;
typedef double f64;
#endif /* TOTALPHASE_DATA_TYPES */
/*=========================================================================
| DEBUG
========================================================================*/
/* Set the following macro to '1' for debugging */
#define AA_DEBUG 0
/*=========================================================================
| VERSION
========================================================================*/
#define AA_HEADER_VERSION 0x0600 /* v6.00 */
/*=========================================================================
| STATUS CODES
========================================================================*/
/*
* All API functions return an integer which is the result of the
* transaction, or a status code if negative. The status codes are
* defined as follows:
*/
enum AardvarkStatus {
/* General codes (0 to -99) */
AA_OK = 0,
AA_UNABLE_TO_LOAD_LIBRARY = -1,
AA_UNABLE_TO_LOAD_DRIVER = -2,
AA_UNABLE_TO_LOAD_FUNCTION = -3,
AA_INCOMPATIBLE_LIBRARY = -4,
AA_INCOMPATIBLE_DEVICE = -5,
AA_COMMUNICATION_ERROR = -6,
AA_UNABLE_TO_OPEN = -7,
AA_UNABLE_TO_CLOSE = -8,
AA_INVALID_HANDLE = -9,
AA_CONFIG_ERROR = -10,
/* I2C codes (-100 to -199) */
AA_I2C_NOT_AVAILABLE = -100,
AA_I2C_NOT_ENABLED = -101,
AA_I2C_READ_ERROR = -102,
AA_I2C_WRITE_ERROR = -103,
AA_I2C_SLAVE_BAD_CONFIG = -104,
AA_I2C_SLAVE_READ_ERROR = -105,
AA_I2C_SLAVE_TIMEOUT = -106,
AA_I2C_DROPPED_EXCESS_BYTES = -107,
AA_I2C_BUS_ALREADY_FREE = -108,
/* SPI codes (-200 to -299) */
AA_SPI_NOT_AVAILABLE = -200,
AA_SPI_NOT_ENABLED = -201,
AA_SPI_WRITE_ERROR = -202,
AA_SPI_SLAVE_READ_ERROR = -203,
AA_SPI_SLAVE_TIMEOUT = -204,
AA_SPI_DROPPED_EXCESS_BYTES = -205,
/* GPIO codes (-400 to -499) */
AA_GPIO_NOT_AVAILABLE = -400
};
#ifndef __cplusplus
typedef enum AardvarkStatus AardvarkStatus;
#endif
/*=========================================================================
| GENERAL TYPE DEFINITIONS
========================================================================*/
/* Aardvark handle type definition */
typedef int Aardvark;
/*
* Deprecated type definitions.
*
* These are only for use with legacy code and
* should not be used for new development.
*/
typedef u08 aa_u08;
typedef u16 aa_u16;
typedef u32 aa_u32;
typedef s08 aa_s08;
typedef s16 aa_s16;
typedef s32 aa_s32;
/*
* Aardvark version matrix.
*
* This matrix describes the various version dependencies
* of Aardvark components. It can be used to determine
* which component caused an incompatibility error.
*
* All version numbers are of the format:
* (major << 8) | minor
*
* ex. v1.20 would be encoded as: 0x0114
*/
struct AardvarkVersion {
/* Software, firmware, and hardware versions. */
u16 software;
u16 firmware;
u16 hardware;
/* Firmware requires that software must be >= this version. */
u16 sw_req_by_fw;
/* Software requires that firmware must be >= this version. */
u16 fw_req_by_sw;
/* Software requires that the API interface must be >= this version. */
u16 api_req_by_sw;
};
#ifndef __cplusplus
typedef struct AardvarkVersion AardvarkVersion;
#endif
/*=========================================================================
| GENERAL API
========================================================================*/
/*
* Get a list of ports to which Aardvark devices are attached.
*
* nelem = maximum number of elements to return
* devices = array into which the port numbers are returned
*
* Each element of the array is written with the port number.
* Devices that are in-use are ORed with AA_PORT_NOT_FREE (0x8000).
*
* ex. devices are attached to ports 0, 1, 2
* ports 0 and 2 are available, and port 1 is in-use.
* array => 0x0000, 0x8001, 0x0002
*
* If the array is NULL, it is not filled with any values.
* If there are more devices than the array size, only the
* first nmemb port numbers will be written into the array.
*
* Returns the number of devices found, regardless of the
* array size.
*/
#define AA_PORT_NOT_FREE 0x8000
int aa_find_devices (
int num_devices,
u16 * devices
);
/*
* Get a list of ports to which Aardvark devices are attached.
*
* This function is the same as aa_find_devices() except that
* it returns the unique IDs of each Aardvark device. The IDs
* are guaranteed to be non-zero if valid.
*
* The IDs are the unsigned integer representation of the 10-digit
* serial numbers.
*/
int aa_find_devices_ext (
int num_devices,
u16 * devices,
int num_ids,
u32 * unique_ids
);
/*
* Open the Aardvark port.
*
* The port number is a zero-indexed integer.
*
* The port number is the same as that obtained from the
* aa_find_devices() function above.
*
* Returns an Aardvark handle, which is guaranteed to be
* greater than zero if it is valid.
*
* This function is recommended for use in simple applications
* where extended information is not required. For more complex
* applications, the use of aa_open_ext() is recommended.
*/
Aardvark aa_open (
int port_number
);
/*
* Open the Aardvark port, returning extended information
* in the supplied structure. Behavior is otherwise identical
* to aa_open() above. If 0 is passed as the pointer to the
* structure, this function is exactly equivalent to aa_open().
*
* The structure is zeroed before the open is attempted.
* It is filled with whatever information is available.
*
* For example, if the firmware version is not filled, then
* the device could not be queried for its version number.
*
* This function is recommended for use in complex applications
* where extended information is required. For more simple
* applications, the use of aa_open() is recommended.
*/
struct AardvarkExt {
/* Version matrix */
AardvarkVersion version;
/* Features of this device. */
int features;
};
#ifndef __cplusplus
typedef struct AardvarkExt AardvarkExt;
#endif
Aardvark aa_open_ext (
int port_number,
AardvarkExt * aa_ext
);
/* Close the Aardvark port. */
int aa_close (
Aardvark aardvark
);
/*
* Return the port for this Aardvark handle.
*
* The port number is a zero-indexed integer.
*/
int aa_port (
Aardvark aardvark
);
/*
* Return the device features as a bit-mask of values, or
* an error code if the handle is not valid.
*/
#define AA_FEATURE_SPI 0x00000001
#define AA_FEATURE_I2C 0x00000002
#define AA_FEATURE_GPIO 0x00000008
int aa_features (
Aardvark aardvark
);
/*
* Return the unique ID for this Aardvark adapter.
* IDs are guaranteed to be non-zero if valid.
* The ID is the unsigned integer representation of the
* 10-digit serial number.
*/
u32 aa_unique_id (
Aardvark aardvark
);
/*
* Return the status string for the given status code.
* If the code is not valid or the library function cannot
* be loaded, return a NULL string.
*/
const char * aa_status_string (
int status
);
/*
* Enable logging to a file. The handle must be standard file
* descriptor. In C, a file descriptor can be obtained by using
* the ANSI C function "open" or by using the function "fileno"
* on a FILE* stream. A FILE* stream can be obtained using "fopen"
* or can correspond to the common "stdout" or "stderr" --
* available when including stdlib.h
*/
#define AA_LOG_STDOUT 1
#define AA_LOG_STDERR 2
int aa_log (
Aardvark aardvark,
int level,
int handle
);
/*
* Return the version matrix for the device attached to the
* given handle. If the handle is 0 or invalid, only the
* software and required api versions are set.
*/
int aa_version (
Aardvark aardvark,
AardvarkVersion * version
);
/*
* Configure the device by enabling/disabling I2C, SPI, and
* GPIO functions.
*/
enum AardvarkConfig {
AA_CONFIG_GPIO_ONLY = 0x00,
AA_CONFIG_SPI_GPIO = 0x01,
AA_CONFIG_GPIO_I2C = 0x02,
AA_CONFIG_SPI_I2C = 0x03,
AA_CONFIG_QUERY = 0x80
};
#ifndef __cplusplus
typedef enum AardvarkConfig AardvarkConfig;
#endif
#define AA_CONFIG_SPI_MASK 0x00000001
#define AA_CONFIG_I2C_MASK 0x00000002
int aa_configure (
Aardvark aardvark,
AardvarkConfig config
);
/*
* Configure the target power pins.
* This is only supported on hardware versions >= 2.00
*/
#define AA_TARGET_POWER_NONE 0x00
#define AA_TARGET_POWER_BOTH 0x03
#define AA_TARGET_POWER_QUERY 0x80
int aa_target_power (
Aardvark aardvark,
u08 power_mask
);
/*
* Sleep for the specified number of milliseconds
* Accuracy depends on the operating system scheduler
* Returns the number of milliseconds slept
*/
u32 aa_sleep_ms (
u32 milliseconds
);
/*=========================================================================
| ASYNC MESSAGE POLLING
========================================================================*/
/*
* Polling function to check if there are any asynchronous
* messages pending for processing. The function takes a timeout
* value in units of milliseconds. If the timeout is < 0, the
* function will block until data is received. If the timeout is 0,
* the function will perform a non-blocking check.
*/
#define AA_ASYNC_NO_DATA 0x00000000
#define AA_ASYNC_I2C_READ 0x00000001
#define AA_ASYNC_I2C_WRITE 0x00000002
#define AA_ASYNC_SPI 0x00000004
int aa_async_poll (
Aardvark aardvark,
int timeout
);
/*=========================================================================
| I2C API
========================================================================*/
/* Free the I2C bus. */
int aa_i2c_free_bus (
Aardvark aardvark
);
/*
* Set the I2C bit rate in kilohertz. If a zero is passed as the
* bitrate, the bitrate is unchanged and the current bitrate is
* returned.
*/
int aa_i2c_bitrate (
Aardvark aardvark,
int bitrate_khz
);
/*
* Set the bus lock timeout. If a zero is passed as the timeout,
* the timeout is unchanged and the current timeout is returned.
*/
int aa_i2c_bus_timeout (
Aardvark aardvark,
u16 timeout_ms
);
enum AardvarkI2cFlags {
AA_I2C_NO_FLAGS = 0x00,
AA_I2C_10_BIT_ADDR = 0x01,
AA_I2C_COMBINED_FMT = 0x02,
AA_I2C_NO_STOP = 0x04,
AA_I2C_SIZED_READ = 0x10,
AA_I2C_SIZED_READ_EXTRA1 = 0x20
};
#ifndef __cplusplus
typedef enum AardvarkI2cFlags AardvarkI2cFlags;
#endif
/* Read a stream of bytes from the I2C slave device. */
int aa_i2c_read (
Aardvark aardvark,
u16 slave_addr,
AardvarkI2cFlags flags,
u16 num_bytes,
u08 * data_in
);
enum AardvarkI2cStatus {
AA_I2C_STATUS_OK = 0,
AA_I2C_STATUS_BUS_ERROR = 1,
AA_I2C_STATUS_SLA_ACK = 2,
AA_I2C_STATUS_SLA_NACK = 3,
AA_I2C_STATUS_DATA_NACK = 4,
AA_I2C_STATUS_ARB_LOST = 5,
AA_I2C_STATUS_BUS_LOCKED = 6,
AA_I2C_STATUS_LAST_DATA_ACK = 7
};
#ifndef __cplusplus
typedef enum AardvarkI2cStatus AardvarkI2cStatus;
#endif
/*
* Read a stream of bytes from the I2C slave device.
* This API function returns the number of bytes read into
* the num_read variable. The return value of the function
* is a status code.
*/
int aa_i2c_read_ext (
Aardvark aardvark,
u16 slave_addr,
AardvarkI2cFlags flags,
u16 num_bytes,
u08 * data_in,
u16 * num_read
);
/* Write a stream of bytes to the I2C slave device. */
int aa_i2c_write (
Aardvark aardvark,
u16 slave_addr,
AardvarkI2cFlags flags,
u16 num_bytes,
const u08 * data_out
);
/*
* Write a stream of bytes to the I2C slave device.
* This API function returns the number of bytes written into
* the num_written variable. The return value of the function
* is a status code.
*/
int aa_i2c_write_ext (
Aardvark aardvark,
u16 slave_addr,
AardvarkI2cFlags flags,
u16 num_bytes,
const u08 * data_out,
u16 * num_written
);
/*
* Do an atomic write+read to an I2C slave device by first
* writing a stream of bytes to the I2C slave device and then
* reading a stream of bytes back from the same slave device.
* This API function returns the number of bytes written into
* the num_written variable and the number of bytes read into
* the num_read variable. The return value of the function is
* the status given as (read_status << 8) | (write_status).
*/
int aa_i2c_write_read (
Aardvark aardvark,
u16 slave_addr,
AardvarkI2cFlags flags,
u16 out_num_bytes,
const u08 * out_data,
u16 * num_written,
u16 in_num_bytes,
u08 * in_data,
u16 * num_read
);
/* Enable/Disable the Aardvark as an I2C slave device */
int aa_i2c_slave_enable (
Aardvark aardvark,
u08 addr,
u16 maxTxBytes,
u16 maxRxBytes
);
int aa_i2c_slave_disable (
Aardvark aardvark
);
/*
* Set the slave response in the event the Aardvark is put
* into slave mode and contacted by a Master.
*/
int aa_i2c_slave_set_response (
Aardvark aardvark,
u08 num_bytes,
const u08 * data_out
);
/*
* Return number of bytes written from a previous
* Aardvark->I2C_master transmission. Since the transmission is
* happening asynchronously with respect to the PC host
* software, there could be responses queued up from many
* previous write transactions.
*/
int aa_i2c_slave_write_stats (
Aardvark aardvark
);
/* Read the bytes from an I2C slave reception */
int aa_i2c_slave_read (
Aardvark aardvark,
u08 * addr,
u16 num_bytes,
u08 * data_in
);
/* Extended functions that return status code */
int aa_i2c_slave_write_stats_ext (
Aardvark aardvark,
u16 * num_written
);
int aa_i2c_slave_read_ext (
Aardvark aardvark,
u08 * addr,
u16 num_bytes,
u08 * data_in,
u16 * num_read
);
/*
* Configure the I2C pullup resistors.
* This is only supported on hardware versions >= 2.00
*/
#define AA_I2C_PULLUP_NONE 0x00
#define AA_I2C_PULLUP_BOTH 0x03
#define AA_I2C_PULLUP_QUERY 0x80
int aa_i2c_pullup (
Aardvark aardvark,
u08 pullup_mask
);
/*=========================================================================
| SPI API
========================================================================*/
/*
* Set the SPI bit rate in kilohertz. If a zero is passed as the
* bitrate, the bitrate is unchanged and the current bitrate is
* returned.
*/
int aa_spi_bitrate (
Aardvark aardvark,
int bitrate_khz
);
/*
* These configuration parameters specify how to clock the
* bits that are sent and received on the Aardvark SPI
* interface.
*
* The polarity option specifies which transition
* constitutes the leading edge and which transition is the
* falling edge. For example, AA_SPI_POL_RISING_FALLING
* would configure the SPI to idle the SCK clock line low.
* The clock would then transition low-to-high on the
* leading edge and high-to-low on the trailing edge.
*
* The phase option determines whether to sample or setup on
* the leading edge. For example, AA_SPI_PHASE_SAMPLE_SETUP
* would configure the SPI to sample on the leading edge and
* setup on the trailing edge.
*
* The bitorder option is used to indicate whether LSB or
* MSB is shifted first.
*
* See the diagrams in the Aardvark datasheet for
* more details.
*/
enum AardvarkSpiPolarity {
AA_SPI_POL_RISING_FALLING = 0,
AA_SPI_POL_FALLING_RISING = 1
};
#ifndef __cplusplus
typedef enum AardvarkSpiPolarity AardvarkSpiPolarity;
#endif
enum AardvarkSpiPhase {
AA_SPI_PHASE_SAMPLE_SETUP = 0,
AA_SPI_PHASE_SETUP_SAMPLE = 1
};
#ifndef __cplusplus
typedef enum AardvarkSpiPhase AardvarkSpiPhase;
#endif
enum AardvarkSpiBitorder {
AA_SPI_BITORDER_MSB = 0,
AA_SPI_BITORDER_LSB = 1
};
#ifndef __cplusplus
typedef enum AardvarkSpiBitorder AardvarkSpiBitorder;
#endif
/* Configure the SPI master or slave interface */
int aa_spi_configure (
Aardvark aardvark,
AardvarkSpiPolarity polarity,
AardvarkSpiPhase phase,
AardvarkSpiBitorder bitorder
);
/* Write a stream of bytes to the downstream SPI slave device. */
int aa_spi_write (
Aardvark aardvark,
u16 out_num_bytes,
const u08 * data_out,
u16 in_num_bytes,
u08 * data_in
);
/* Enable/Disable the Aardvark as an SPI slave device */
int aa_spi_slave_enable (
Aardvark aardvark
);
int aa_spi_slave_disable (
Aardvark aardvark
);
/*
* Set the slave response in the event the Aardvark is put
* into slave mode and contacted by a Master.
*/
int aa_spi_slave_set_response (
Aardvark aardvark,
u08 num_bytes,
const u08 * data_out
);
/* Read the bytes from an SPI slave reception */
int aa_spi_slave_read (
Aardvark aardvark,
u16 num_bytes,
u08 * data_in
);
/*
* Change the output polarity on the SS line.
*
* Note: When configured as an SPI slave, the Aardvark will
* always be setup with SS as active low. Hence this function
* only affects the SPI master functions on the Aardvark.
*/
enum AardvarkSpiSSPolarity {
AA_SPI_SS_ACTIVE_LOW = 0,
AA_SPI_SS_ACTIVE_HIGH = 1
};
#ifndef __cplusplus
typedef enum AardvarkSpiSSPolarity AardvarkSpiSSPolarity;
#endif
int aa_spi_master_ss_polarity (
Aardvark aardvark,
AardvarkSpiSSPolarity polarity
);
/*=========================================================================
| GPIO API
========================================================================*/
/*
* The following enumerated type maps the named lines on the
* Aardvark I2C/SPI line to bit positions in the GPIO API.
* All GPIO API functions will index these lines through an
* 8-bit masked value. Thus, each bit position in the mask
* can be referred back its corresponding line through the
* enumerated type.
*/
enum AardvarkGpioBits {
AA_GPIO_SCL = 0x01,
AA_GPIO_SDA = 0x02,
AA_GPIO_MISO = 0x04,
AA_GPIO_SCK = 0x08,
AA_GPIO_MOSI = 0x10,
AA_GPIO_SS = 0x20
};
#ifndef __cplusplus
typedef enum AardvarkGpioBits AardvarkGpioBits;
#endif
/*
* Configure the GPIO, specifying the direction of each bit.
*
* A call to this function will not change the value of the pullup
* mask in the Aardvark. This is illustrated by the following
* example:
* (1) Direction mask is first set to 0x00
* (2) Pullup is set to 0x01
* (3) Direction mask is set to 0x01
* (4) Direction mask is later set back to 0x00.
*
* The pullup will be active after (4).
*
* On Aardvark power-up, the default value of the direction
* mask is 0x00.
*/
#define AA_GPIO_DIR_INPUT 0
#define AA_GPIO_DIR_OUTPUT 1
int aa_gpio_direction (
Aardvark aardvark,
u08 direction_mask
);
/*
* Enable an internal pullup on any of the GPIO input lines.
*
* Note: If a line is configured as an output, the pullup bit
* for that line will be ignored, though that pullup bit will
* be cached in case the line is later configured as an input.
*
* By default the pullup mask is 0x00.
*/
#define AA_GPIO_PULLUP_OFF 0
#define AA_GPIO_PULLUP_ON 1
int aa_gpio_pullup (
Aardvark aardvark,
u08 pullup_mask
);
/*
* Read the current digital values on the GPIO input lines.
*
* The bits will be ordered as described by AA_GPIO_BITS. If a
* line is configured as an output, its corresponding bit
* position in the mask will be undefined.
*/
int aa_gpio_get (
Aardvark aardvark
);
/*
* Set the outputs on the GPIO lines.
*
* Note: If a line is configured as an input, it will not be
* affected by this call, but the output value for that line
* will be cached in the event that the line is later
* configured as an output.
*/
int aa_gpio_set (
Aardvark aardvark,
u08 value
);
/*
* Block until there is a change on the GPIO input lines.
* Pins configured as outputs will be ignored.
*
* The function will return either when a change has occurred or
* the timeout expires. The timeout, specified in millisecods, has
* a precision of ~16 ms. The maximum allowable timeout is
* approximately 4 seconds. If the timeout expires, this function
* will return the current state of the GPIO lines.
*
* This function will return immediately with the current value
* of the GPIO lines for the first invocation after any of the
* following functions are called: aa_configure,
* aa_gpio_direction, or aa_gpio_pullup.
*
* If the function aa_gpio_get is called before calling
* aa_gpio_change, aa_gpio_change will only register any changes
* from the value last returned by aa_gpio_get.
*/
int aa_gpio_change (
Aardvark aardvark,
u16 timeout
);
#ifdef __cplusplus
}
#endif
#endif /* __aardvark_h__ */

BIN
crates/aardvark-sys/vendor/aardvark.so vendored Normal file

Binary file not shown.

View File

@ -12,6 +12,13 @@ ignore = [
# bincode v2.0.1 via probe-rs — project ceased but 1.3.3 considered complete # bincode v2.0.1 via probe-rs — project ceased but 1.3.3 considered complete
"RUSTSEC-2025-0141", "RUSTSEC-2025-0141",
{ id = "RUSTSEC-2024-0384", reason = "Reported to `rust-nostr/nostr` and it's WIP" }, { id = "RUSTSEC-2024-0384", reason = "Reported to `rust-nostr/nostr` and it's WIP" },
{ id = "RUSTSEC-2024-0388", reason = "derivative via extism → wasmtime transitive dep" },
{ id = "RUSTSEC-2025-0057", reason = "fxhash via extism → wasmtime transitive dep" },
{ id = "RUSTSEC-2025-0119", reason = "number_prefix via indicatif — cosmetic dep" },
# wasmtime vulns via extism 1.13.0 — no upstream fix yet; plugins feature-gated
{ id = "RUSTSEC-2026-0006", reason = "wasmtime segfault via extism; awaiting extism upgrade" },
{ id = "RUSTSEC-2026-0020", reason = "WASI resource exhaustion via extism; awaiting extism upgrade" },
{ id = "RUSTSEC-2026-0021", reason = "WASI http fields panic via extism; awaiting extism upgrade" },
] ]
[licenses] [licenses]

View File

@ -10,3 +10,22 @@ default_temperature = 0.7
port = 42617 port = 42617
host = "[::]" host = "[::]"
allow_public_bind = true allow_public_bind = true
# Cost tracking and budget enforcement configuration
# Enable to track API usage costs and enforce spending limits
[cost]
enabled = false
daily_limit_usd = 10.0
monthly_limit_usd = 100.0
warn_at_percent = 80
allow_override = false
# Per-model pricing (USD per 1M tokens)
# Uncomment and customize to override default pricing
# [cost.prices."anthropic/claude-sonnet-4-20250514"]
# input = 3.0
# output = 15.0
#
# [cost.prices."openai/gpt-4o"]
# input = 5.0
# output = 15.0

4
dist/aur/.SRCINFO vendored
View File

@ -1,6 +1,6 @@
pkgbase = zeroclaw pkgbase = zeroclaw
pkgdesc = Zero overhead. Zero compromise. 100% Rust. The fastest, smallest AI assistant. pkgdesc = Zero overhead. Zero compromise. 100% Rust. The fastest, smallest AI assistant.
pkgver = 0.4.3 pkgver = 0.5.9
pkgrel = 1 pkgrel = 1
url = https://github.com/zeroclaw-labs/zeroclaw url = https://github.com/zeroclaw-labs/zeroclaw
arch = x86_64 arch = x86_64
@ -10,7 +10,7 @@ pkgbase = zeroclaw
makedepends = git makedepends = git
depends = gcc-libs depends = gcc-libs
depends = openssl depends = openssl
source = zeroclaw-0.4.3.tar.gz::https://github.com/zeroclaw-labs/zeroclaw/archive/refs/tags/v0.4.3.tar.gz source = zeroclaw-0.5.9.tar.gz::https://github.com/zeroclaw-labs/zeroclaw/archive/refs/tags/v0.5.9.tar.gz
sha256sums = SKIP sha256sums = SKIP
pkgname = zeroclaw pkgname = zeroclaw

2
dist/aur/PKGBUILD vendored
View File

@ -1,6 +1,6 @@
# Maintainer: zeroclaw-labs <bot@zeroclaw.dev> # Maintainer: zeroclaw-labs <bot@zeroclaw.dev>
pkgname=zeroclaw pkgname=zeroclaw
pkgver=0.4.3 pkgver=0.5.9
pkgrel=1 pkgrel=1
pkgdesc="Zero overhead. Zero compromise. 100% Rust. The fastest, smallest AI assistant." pkgdesc="Zero overhead. Zero compromise. 100% Rust. The fastest, smallest AI assistant."
arch=('x86_64') arch=('x86_64')

Some files were not shown because too many files have changed in this diff Show More