zeroclaw について
zeroclaw は、エージェントやチャネル、ランタイムを構成するユーザー向けの Rust 製 AI アシスタント基盤です。CLI からモデルプロバイダー、メモリーバックエンド、ツール、安全設定を切り替えられます。
主な機能
- 01対話チャットと自律ランタイム
- 02複数のモデルプロバイダー
- 03複数のメッセージングチャネルへの接続
- 04定期および単発タスクのスケジュール
- 05設定可能なメモリーとセキュリティポリシー
- 06スキルとハードウェア周辺機器の管理
活用シーン
- 01メッセージングチャネル経由で AI エージェントを運用
- 02エージェントのモデルプロバイダーを設定
- 03定期または単発タスクを予定
- 04システム状態の確認と診断
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ adisinghstudent/ zeroclaw --skill zeroclawインストール後、Claude Code で/zeroclawを入力して読み込まれたか確認します。
詳細
ZeroClaw — 完全リファレンススキル
Rust で構築された、高速、小型、完全自律型の AI アシスタント基盤である ZeroClaw の包括的な運用知識です。 ソース:https://github.com/zeroclaw-labs/zeroclaw | バージョン:0.1.1 | 最終更新日:2026-02-21
ZeroClaw とは
- 言語: 100% Rust、単一バイナリ(リリース版で約3.4~8.8MB)
- メモリ: 実行時の RAM 使用量は <5MB
- 起動: コールドスタートで <10ms
- プラットフォーム: ARM、x86、RISC-V — 10ドルのハードウェアでも動作
- アーキテクチャ: トレイト駆動で、すべてを交換可能です(プロバイダー、チャネル、ツール、メモリ、トンネル、セキュリティ)
- 設定:
~/.zeroclaw/config.toml(TOML 形式) - ワークスペース:
~/.zeroclaw/workspace/(SOUL.md、AGENTS.md、IDENTITY.md、USER.md、MEMORY.md、TOOLS.md、HEARTBEAT.md、BOOTSTRAP.md) - アイデンティティ: ZeroClaw は自身を ZeroClaw と名乗り、ChatGPT/Claude などを名乗ることはありません。
インストール
# Option A: Clone + build
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw && ./bootstrap.sh
# Option B: Remote one-liner
curl -fsSL https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/main/scripts/bootstrap.sh | bash
# Fresh machine (install Rust + system deps)
./bootstrap.sh --install-system-deps --install-rust
# Quick onboard after install
zeroclaw onboard --api-key "your-api-key" --provider openrouter
ZeroClaw の更新
# Fastest: prebuilt binary (no compile)
git clone https://github.com/zeroclaw-labs/zeroclaw.git /tmp/zeroclaw-update
cd /tmp/zeroclaw-update && bash scripts/bootstrap.sh --prefer-prebuilt
rm -rf /tmp/zeroclaw-update
# With browser-native feature (requires compile)
git clone https://github.com/zeroclaw-labs/zeroclaw.git /tmp/zeroclaw-update
cd /tmp/zeroclaw-update && cargo install --path . --force --locked --features browser-native
rm -rf /tmp/zeroclaw-update
# Verify
zeroclaw --version
注: 組み込みの zeroclaw update コマンドはありません。新しくクローンしたリポジトリで bootstrap.sh --prefer-prebuilt を再実行するのが、最も手早い方法です。プリビルトバイナリには browser-native が含まれていません。rust_native ブラウザバックエンドが必要な場合は、--features browser-native を指定してソースからビルドする必要があります。
CLI リファレンス(全コマンド)
トップレベル
| コマンド | 用途 |
|---|---|
zeroclaw onboard | ワークスペース/設定を初期化します(クイックセットアップ) |
zeroclaw onboard --interactive | 対話形式のセットアップウィザードを実行します |
zeroclaw onboard --channels-only | チャネルのみを再設定します |
zeroclaw agent | 対話型 AI チャット |
zeroclaw agent -m "Hello" | 単一メッセージモード |
zeroclaw agent --provider <ID> --model <MODEL> | プロバイダー/モデルを指定します |
zeroclaw agent --peripheral <board:path> | ハードウェア周辺機器を接続します |
zeroclaw gateway [--host H] [--port P] | webhook/websocket ゲートウェイを起動します |
zeroclaw daemon [--host H] [--port P] | 自律実行環境全体を起動します(ゲートウェイ+チャネル+ハートビート+スケジューラー) |
zeroclaw status | システムの全ステータスを表示します |
zeroclaw doctor | 診断を実行します |
zeroclaw providers | 対応する30種類の AI プロバイダーを一覧表示します |
サービス管理(launchd/systemd)
zeroclaw service install # Install for auto-start
zeroclaw service start # Start service
zeroclaw service stop # Stop service
zeroclaw service status # Check status
zeroclaw service uninstall # Remove service
チャネル管理
zeroclaw channel list # List all channels + status
zeroclaw channel start # Start all configured channels
zeroclaw channel doctor # Health check channels
zeroclaw channel add <type> <json> # Add channel (type + JSON config)
zeroclaw channel remove <name> # Remove channel
zeroclaw channel bind-telegram <IDENTITY> # Add Telegram user to allowlist
注: channel add/remove は、まだ設定全体を変更する機能ではありません。~/.zeroclaw/config.toml を直接編集するか、zeroclaw onboard を使用してください。
Cron/スケジューリング
zeroclaw cron list # List tasks
zeroclaw cron add "<cron-expr>" "<command>" # Add recurring task
zeroclaw cron add --tz America/New_York "..." # With timezone
zeroclaw cron add-at <rfc3339> "<command>" # One-shot at timestamp
zeroclaw cron add-every <ms> "<command>" # Fixed interval
zeroclaw cron once <delay> "<command>" # One-shot delayed (e.g. "30m", "2h")
zeroclaw cron remove <id>
zeroclaw cron pause <id>
zeroclaw cron resume <id>
モデルとプロバイダー
zeroclaw providers # List all 30 providers
zeroclaw models refresh # Refresh model catalogs
zeroclaw models refresh --provider <ID> # Refresh specific provider
zeroclaw models refresh --force # Force refresh
スキル
zeroclaw skills list # List installed skills
zeroclaw skills install <source> # Install from GitHub URL or local path
zeroclaw skills remove <name> # Remove skill
インテグレーション
zeroclaw integrations info <name> # Show integration details
# Examples: Telegram, Discord, Slack, iMessage, Matrix, Signal, WhatsApp, Email, DingTalk, Ollama
認証
zeroclaw auth login --provider <ID> # OAuth login (e.g. openai-codex)
zeroclaw auth login --provider <ID> --device-code # Device code flow
zeroclaw auth paste-token # Paste auth token (Anthropic)
zeroclaw auth setup-token # Alias for paste-token
zeroclaw auth refresh # Refresh OAuth token
zeroclaw auth logout # Remove auth profile
zeroclaw auth use --provider <ID> # Set active profile
zeroclaw auth list # List profiles
zeroclaw auth status # Show token expiry info
ハードウェアと周辺機器
zeroclaw hardware discover # Enumerate USB devices (VID/PID)
zeroclaw hardware introspect <path> # Introspect device
zeroclaw hardware info [--chip <name>] # Chip info via probe-rs
zeroclaw peripheral list # List configured boards
zeroclaw peripheral add <board> <path> # Add board (e.g. nucleo-f401re /dev/ttyACM0)
zeroclaw peripheral flash [--port <port>] # Flash Arduino firmware
zeroclaw peripheral setup-uno-q # Setup Arduino Uno Q Bridge
zeroclaw peripheral flash-nucleo # Flash Nucleo-F401RE firmware
移行
zeroclaw migrate openclaw [--source <path>] [--dry-run] # Import from OpenClaw
対応プロバイダー(全30種類)
| ID | 説明 |
|---|---|
openrouter | OpenRouter(デフォルト) |
anthropic | Anthropic |
openai | OpenAI |
openai-codex | OpenAI Codex(OAuth) |
ollama | Ollama[ローカル] |
gemini | Google Gemini |
venice | Venice |
vercel | Vercel AI Gateway |
cloudflare | Cloudflare AI |
moonshot | Moonshot/Kimi |
opencode | OpenCode Zen |
zai | Z.AI |
glm | GLM(Zhipu) |
minimax | MiniMax |
bedrock | Amazon Bedrock |
qianfan | Qianfan(Baidu) |
qwen | Qwen(DashScope) |
groq | Groq |
mistral | Mistral |
xai | xAI(Grok) |
deepseek | DeepSeek |
together | Together AI |
fireworks | Fireworks AI |
perplexity | Perplexity |
cohere | Cohere |
copilot | GitHub Copilot |
lmstudio | LM Studio[ローカル] |
nvidia | NVIDIA NIM |
ovhcloud | OVHcloud AI Endpoints |
custom:<URL> | OpenAI 互換エンドポイント |
anthropic-custom:<URL> | Anthropic 互換エンドポイント |
カスタムプロバイダーの設定
# OpenAI-compatible
default_provider = "custom:https://your-api.com"
api_key = "your-api-key"
default_model = "your-model"
# Anthropic-compatible
default_provider = "anthropic-custom:https://your-api.com"
api_key = "your-api-key"
default_model = "your-model"
チャネル(14種類に対応)
チャネル一覧
| チャネル | 設定セクション | アクセス制御フィールド | セットアップ |
|---|---|---|---|
| CLI | 常に有効 | 該当なし | 組み込み |
| Telegram | [channels_config.telegram] | allowed_users | zeroclaw onboard |
| Discord | [channels_config.discord] | allowed_users | zeroclaw onboard |
| Slack | [channels_config.slack] | allowed_users | zeroclaw onboard |
| Mattermost | [channels_config.mattermost] | allowed_users | 手動設定 |
| Webhook | [channels_config.webhook] | secret(任意) | 手動設定/オンボーディング |
| iMessage | [channels_config.imessage] | allowed_contacts | macOS のみ |
| Matrix | [channels_config.matrix] | allowed_users | zeroclaw onboard |
| Signal | [channels_config.signal] | allowed_from | 手動設定 |
[channels_config.whatsapp] | allowed_numbers | zeroclaw onboard | |
[channels_config.email] | allowed_senders | 手動設定 | |
| IRC | [channels_config.irc] | allowed_users | zeroclaw onboard |
| Lark | [channels_config.lark] | allowed_users | 手動設定 |
| DingTalk | [channels_config.dingtalk] | allowed_users | zeroclaw onboard |
デフォルト拒否の許可リストルール
[](空)= すべて拒否["*"]= すべて許可(本番環境では推奨されません)["123456789", "username"]=完全一致のみ
Telegram のセットアップ
[channels_config.telegram]
bot_token = "your-bot-token"
allowed_users = []
# 1. Get bot token from @BotFather on Telegram
# 2. Add config above to ~/.zeroclaw/config.toml
# 3. Bind your user:
zeroclaw channel bind-telegram <USER_ID_OR_USERNAME>
# 4. Start:
zeroclaw daemon
重要: Telegram はロングポーリングを使用するため、受信ポートやパブリック IP は不要です。ボットトークンごとに実行できるポーラーは 1 つだけです(複数のデーモンを実行しないでください)。
Discord のセットアップ
- https://discord.com/developers/applications にアクセスします
- アプリを作成し、Bot を有効にして、トークンをコピーします
- MESSAGE CONTENT インテントを有効にします
zeroclaw onboardを実行します
Slack のセットアップ
- https://api.slack.com/apps にアクセスします
- アプリを作成し、Bot Token Scopes を追加して、インストールします
zeroclaw onboardを実行します
Mattermost のセットアップ
[channels_config.mattermost]
url = "https://mm.your-domain.com"
bot_token = "your-bot-access-token"
channel_id = "your-channel-id"
allowed_users = ["user-id-1"]
thread_replies = true
mention_only = true
WhatsApp のセットアップ
[channels_config.whatsapp]
access_token = "your-access-token"
phone_number_id = "your-phone-number-id"
verify_token = "your-verify-token"
allowed_numbers = ["+1234567890"]
WhatsApp には パブリック URL(Webhook)が必要です。トンネル(Tailscale/ngrok/Cloudflare)を使用してください。
Signal のセットアップ
[channels_config.signal]
http_url = "http://127.0.0.1:8686"
account = "+1234567890"
allowed_from = ["+1987654321"]
ignore_attachments = true
ignore_stories = true
Lark のセットアップ
[channels_config.lark]
app_id = "your-app-id"
app_secret = "your-app-secret"
allowed_users = ["your-user-id"]
receive_mode = "websocket" # or "webhook"
チャット内コマンド(Telegram/Discord)
チャネルサーバーの実行中に、ユーザーは次のコマンドを実行できます。
/models— 利用可能なプロバイダーを表示します/models <provider>— プロバイダーを切り替えます(送信者単位)/model— 現在のモデルを表示します/model <model-id>— モデルを切り替えます(送信者単位)
モデル間のデータ混入を防ぐため、切り替え時にその送信者の会話履歴が消去されます。
設定リファレンス(~/.zeroclaw/config.toml)
コア
| キー | デフォルト | 備考 |
|---|---|---|
default_provider | openrouter | プロバイダー ID またはエイリアス |
default_model | anthropic/claude-sonnet-4.5 | プロバイダー経由でルーティングされるモデル |
default_temperature | 0.7 | 0.0~2.0 |
ゲートウェイ
| キー | デフォルト | 目的 |
|---|---|---|
gateway.host | 127.0.0.1 | バインドアドレス |
gateway.port | 3000 | リッスンポート |
gateway.require_pairing | true | 認証にペアリングを要求します |
gateway.allow_public_bind | false | 意図しないパブリック公開を防ぎます |
メモリ
| キー | デフォルト | 目的 |
|---|---|---|
memory.backend | sqlite | sqlite、lucid、markdown、none |
memory.auto_save | true | 自動保存 |
memory.embedding_provider | none | none、openai、またはカスタム |
memory.vector_weight | 0.7 | ハイブリッド検索におけるベクトルの重み |
memory.keyword_weight | 0.3 | ハイブリッド検索におけるキーワードの重み |
自律性/セキュリティ
| キー | デフォルト | 目的 |
|---|---|---|
autonomy.level | supervised | readonly、supervised、full |
autonomy.workspace_only | true | ワークスペース内に制限します |
autonomy.allowed_commands | [git, npm, cargo, ls, cat, grep, find, echo, pwd, wc, head, tail] | 許可リストに登録されたコマンド |
autonomy.max_actions_per_hour | 20 | レート制限 |
autonomy.max_cost_per_day_cents | 500 | コスト上限 |
エージェント
| キー | デフォルト |
|---|---|
agent.max_tool_iterations | 10 |
agent.max_history_messages | 50 |
agent.parallel_tools | false |
ブラウザー制御
| Key | Default | Purpose |
|---|---|---|
browser.enabled | false | ブラウザーツールを有効にします |
browser.allowed_domains | [] | ドメインの許可リスト(すべて許可する場合は ["*"]) |
browser.session_name | (none) | 永続化用の任意のセッション識別子 |
browser.backend | agent_browser | agent_browser、rust_native、computer_use、auto |
browser.native_headless | true | rust_native バックエンドのヘッドレスモード |
browser.native_webdriver_url | http://127.0.0.1:9515 | rust_native 用の WebDriver エンドポイント |
browser.native_chrome_path | (auto) | Chrome バイナリのパスを任意で明示的に指定します |
browser.computer_use.endpoint | http://127.0.0.1:8787/v1/actions | Computer-use サイドカーのエンドポイント |
browser.computer_use.api_key | (none) | サイドカー認証用の任意のベアラートークン(暗号化済み) |
browser.computer_use.timeout_ms | 15000 | アクションごとのタイムアウト |
browser.computer_use.allow_remote_endpoint | false | localhost のサイドカーのみを許可します |
browser.computer_use.window_allowlist | [] | 操作対象にできる OS ウィンドウを制限します |
browser.computer_use.max_coordinate_x | (none) | 座標検証用の X 軸境界を任意で指定します |
browser.computer_use.max_coordinate_y | (none) | 座標検証用の Y 軸境界を任意で指定します |
HTTP リクエスト
| Key | Default | Purpose |
|---|---|---|
http_request.enabled | false | HTTP リクエストツールを有効にします |
http_request.allowed_domains | [] | ドメインの許可リスト(すべて許可する場合は ["*"]) |
http_request.max_response_size | 0 | 最大レスポンスサイズ(バイト単位。0 = 無制限) |
http_request.timeout_secs | 0 | リクエストのタイムアウト(0 = 無制限) |
その他の主なセクション
[runtime]— ネイティブまたは Docker のサンドボックス[reliability]— プロバイダーの再試行、バックオフ、フォールバック[scheduler]— タスクのスケジュール設定(最大 64 タスク、同時実行 4 件)[heartbeat]— 定期的な確認(デフォルトでは無効)[cron]— cron スケジュール設定[tunnel]— プロバイダー:none、tailscale、ngrok、cloudflare[composio]— Composio との統合(250 以上のアプリ統合)[secrets]— 暗号化されたシークレット[web_search]— デフォルトでは DuckDuckGo[proxy]— HTTP プロキシのサポート[cost]— 日次/月次の上限、モデルごとの料金[peripherals]— ハードウェアボード
ブラウザー制御のセットアップ
ブラウザーのバックエンド
| Backend | Mechanism | Runtime Requirement | Build Requirement |
|---|---|---|---|
agent_browser (default) | Vercel の agent-browser CLI をサブプロセスとして呼び出します | $PATH に agent-browser があること | なし(デフォルトのビルド/ビルド済みバイナリ) |
rust_native | fantoccini を介したプロセス内 WebDriver | ChromeDriver が実行中であること | cargo install --features browser-native(ソースからビルドする必要があります) |
computer_use | OS レベルのマウス/キーボード/画面操作を行うサイドカーへの HTTP POST | Computer-use サイドカーサーバー | なし |
auto | 利用可能な最適なバックエンドを自動検出します | インストールされているものによります | なし |
auto の検出優先順位: rust_native(コンパイル済みで WebDriver に接続できる場合) -> agent_browser(CLI がインストールされている場合) -> computer_use(サイドカーに接続できる場合)。利用可能なものがない場合は、わかりやすいエラーメッセージを表示してフォールバックします。
ビルド済みバイナリに関する注意: bootstrap.sh --prefer-prebuilt によるビルド済みバイナリには browser-native が含まれていません。ビルド済みバイナリで backend = "rust_native" を設定すると、エージェントはこの機能が有効になっていないことを通知します。ソースからビルドする必要があります:cargo install --path . --force --locked --features browser-native
ブラウザー操作(合計17種類)
標準操作(すべてのバックエンド):
| 操作 | 目的 | 備考 |
|---|---|---|
open | URLに移動 | すべてのバックエンド |
snapshot | @ref要素ハンドルを含むアクセシビリティツリーを取得 | agent_browserのみ — rust_nativeではnullを返します |
click | CSSセレクターまたは@refで要素をクリック | @refが機能するのはagent_browserのみです |
fill | フィールドをクリアして値を入力 | |
type | フォーカス中の要素にテキストを入力 | |
get_text | 要素からテキストを抽出 | |
get_title | ページタイトルを取得 | |
get_url | 現在のURLを取得 | |
screenshot | ページのスクリーンショットを撮影 | オプション:path、full_page |
wait | 要素、時間、またはテキストを待機 | |
press | キーを押す | |
hover | 要素にカーソルを合わせる | |
scroll | ページをスクロール | オプション:direction、pixels |
is_visible | 要素の表示状態を確認 | 厳密モード — セレクターは要素に1つだけ一致する必要があります |
close | ブラウザーを閉じる | |
find | セマンティックロケーターで検索 | オプション:role、text、label、placeholder、testid |
コンピューター操作専用のアクション(追加6種類 — DOMではなくOSレベル):
| 操作 | 目的 |
|---|---|
mouse_move | 座標にマウスを移動 |
mouse_click | 座標をクリック |
mouse_drag | ある地点から別の地点へドラッグ |
key_type | サイドカー経由でキーを入力 |
key_press | 個々のキーを押す |
screen_capture | OS画面をキャプチャ |
コンピューター操作に対応していないバックエンドでコンピューター操作アクションを使用すると、バックエンド固有のエラーが返されます。
バックエンドの比較(テスト済み)
| 機能 | agent_browser | rust_native | computer_use |
|---|---|---|---|
| open / close | はい | はい | はい |
| get_title / get_text / get_url | はい | はい | はい |
| click / fill / type | はい(CSS + @ref) | はい(CSSのみ) | はい(座標) |
| hover / scroll / press | はい | はい | はい |
| screenshot | はい | はい | はい(screen_capture) |
| is_visible | はい(厳密モード) | はい | 該当なし |
| snapshot(a11yツリー) | はい(完全な@refツリー) | いいえ(nullを返す) | 該当なし |
| find(セマンティックロケーター) | 一部対応 | いいえ | 該当なし |
| 要素の@ref | はい | いいえ | 該当なし |
| セッションの永続化 | はい(プロファイルパス) | いいえ | 該当なし |
| ヘッド付きモード | 設定 + executablePath | native_headless = false | 該当なし(OSレベル) |
| サブプロセスのオーバーヘッド | あり(操作ごとにシェルを起動) | なし(プロセス内) | あり(操作ごとにHTTP) |
| OSレベルのマウス/キーボード | いいえ | いいえ | はい |
AI主導の自動化に関する推奨: agent_browserを使用してください。@refハンドルを含むアクセシビリティツリーのスナップショットは不可欠です。エージェントはこれを使ってページ構造を「確認」し、CSSセレクターを推測するのではなく、特定の要素(例:@e12)をターゲットにできます。rust_nativeは、Node.jsを一切使わないデプロイや、セレクターがすでに分かっている単純なスクレイピングに限って使用してください。ブラウザーのDOMを超えるOSレベルの制御が必要な場合は、computer_useを使用してください。
推奨セットアップ:agent_browserと表示可能なChromeウィンドウ
デスクトップにポップアップする表示可能なChromeウィンドウ(OpenClawのようなもの)が利用でき、AIのブラウジングやサイトへのログインを確認できます。また、プロファイルにCookieやセッションが保持されます。
ステップ1:agent-browserをインストールする
npm install -g agent-browser
# Verify:
agent-browser --version
ステップ2:ヘッド付きモード用にagent-browserを設定する
~/.agent-browser/config.jsonを作成します。
{
"headed": true,
"profile": "~/.agent-browser/profile",
"executablePath": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
}
重要:ヘッド付き(表示可能)モードではexecutablePathが必須です。 デフォルトでは、agent-browserはPlaywrightに同梱されたChromium(~/Library/Caches/ms-playwright/chromium-*/)を使用しますが、これはheadedフラグを無視し、常にヘッドレスで実行されます。実際にインストールされているGoogle Chromeを指定することで、この問題を解決できます。
一般的なChromeのパス:
- macOS:
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome - Linux:
/usr/bin/google-chromeまたは/usr/bin/chromium - Windows:
C:\Program Files\Google\Chrome\Application\chrome.exe
profileパスを指定すると、セッションをまたいでCookieやログイン状態が保持されます。
ステップ3:ZeroClawを設定する
~/.zeroclaw/config.tomlで設定します。
[browser]
enabled = true
allowed_domains = ["*"]
backend = "agent_browser"
ステップ 4:環境変数を指定してデーモンを起動する(念には念を入れて)
AGENT_BROWSER_HEADED=true zeroclaw daemon
または、サービスをインストールする場合は、事前にシェルプロファイルで環境変数をエクスポートしてください。
agent-browser CLI リファレンス
agent-browser open <url> # Navigate to URL
agent-browser click <selector> # Click element
agent-browser type <sel> <text> # Type into element
agent-browser fill <sel> <text> # Clear and fill
agent-browser screenshot [path] # Take screenshot
agent-browser snapshot # Accessibility tree with @refs (for AI)
agent-browser eval <js> # Run JavaScript
agent-browser close # Close browser
agent-browser --headed open <url> # Force visible window
agent-browser --session <name> ... # Isolated session
agent-browser --profile <path> ... # Persistent browser profile
agent-browser 環境変数
| 変数 | 用途 |
|---|---|
AGENT_BROWSER_HEADED | ブラウザーウィンドウを表示します(ヘッドレスではありません) |
AGENT_BROWSER_SESSION | セッション名 |
AGENT_BROWSER_SESSION_NAME | 状態の永続化を自動保存/復元します |
AGENT_BROWSER_PROFILE | 永続的なブラウザープロファイルのパス |
AGENT_BROWSER_EXECUTABLE_PATH | カスタムブラウザーバイナリ |
AGENT_BROWSER_PROXY | プロキシサーバーの URL |
AGENT_BROWSER_CONFIG | 設定ファイルへのパス |
AGENT_BROWSER_AUTO_CONNECT | 実行中の Chrome を自動検出します |
AGENT_BROWSER_STREAM_PORT | WebSocket ストリーミングポート |
ブラウザーのセキュリティモデル
- すべての URL は
validate_url()を経由し、allowed_domainsが適用されます file://スキームはブロックされます(ローカルファイルの外部流出を防止します)- プライベート/予約済み IP 範囲は拒否されます
computer_useでは、座標が検証されます。allow_remote_endpoint = trueでない限り、エンドポイントは localhost である必要があります
ブラウザーのトラブルシューティング
| 問題 | 解決策 |
|---|---|
| ブラウザーは開くが、表示されない(ヘッドレス) | ~/.agent-browser/config.json の executablePath を Playwright Chromium ではなく、実際の Chrome に設定します |
| 「ドメインが許可リストにありません」 | ZeroClaw の設定で browser.allowed_domains = ["*"] を設定し、デーモンを再起動します |
| agent-browser が見つからない | npm install -g agent-browser |
| ブラウザーがすぐに閉じる | agent-browser --version を確認し、Chrome がインストールされていることを確認します |
| セッションが古い | agent-browser close を実行してから再試行します |
| rust_native「機能が有効になっていません」 | プレビルドバイナリには browser-native が含まれていません。再ビルドします:cargo install --path . --force --locked --features browser-native |
| rust_native のスナップショットが null を返す | 想定どおりです。rust_native はアクセシビリティツリーのスナップショットに対応していません。スナップショット/@ref に対応するには agent_browser に切り替えてください |
| ChromeDriver のバージョンが一致しない | ChromeDriver のバージョンは Chrome のバージョンと一致している必要があります。macOS の場合:brew install --cask chromedriver を実行してから、xattr -d com.apple.quarantine /opt/homebrew/bin/chromedriver を実行します |
| agent_browser で computer_use の操作が失敗する | OS レベルの操作(mouse_move、mouse_click など)は computer_use バックエンドでのみ動作します |
| is_visible の厳密モードエラー | セレクターが複数の要素に一致しています。より具体的な CSS セレクター、またはスナップショットの @ref を使用してください |
完全自律セットアップ(最大パワーモード)
すべての機能を有効にし、すべての制限を解除するには:
設定(~/.zeroclaw/config.toml)
[autonomy]
level = "full"
workspace_only = false
allowed_commands = ["*"]
forbidden_paths = []
max_actions_per_hour = 200
max_cost_per_day_cents = 5000
require_approval_for_medium_risk = false
block_high_risk_commands = false
auto_approve = [
"shell",
"file_read",
"file_write",
"memory_store",
"memory_recall",
"memory_forget",
]
always_ask = []
[agent]
compact_context = false
max_tool_iterations = 50
max_history_messages = 200
parallel_tools = true
tool_dispatcher = "auto"
[scheduler]
enabled = true
max_tasks = 128
max_concurrent = 8
[heartbeat]
enabled = true
interval_minutes = 30
[browser]
enabled = true
allowed_domains = ["*"]
backend = "agent_browser"
[http_request]
enabled = true
allowed_domains = ["*"]
max_response_size = 10485760
timeout_secs = 30
[composio]
enabled = true
entity_id = "default"
[web_search]
enabled = true
provider = "duckduckgo"
max_results = 5
timeout_secs = 15
最大パワーを実現する外部依存関係
# Browser control (visible Chrome window)
npm install -g agent-browser
# agent-browser config (~/.agent-browser/config.json)
{
"headed": true,
"profile": "~/.agent-browser/profile",
"executablePath": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
}
# Start daemon with headed browser
AGENT_BROWSER_HEADED=true zeroclaw daemon
各設定で有効になる機能
| 設定 | 内容 |
|---|---|
autonomy.level = "full" | どの操作にも承認が不要になります |
autonomy.workspace_only = false | システム上のあらゆる場所のファイルにアクセスできます |
autonomy.allowed_commands = ["*"] | 任意のシェルコマンドを実行できます |
autonomy.forbidden_paths = [] | パスの制限がなくなります |
block_high_risk_commands = false | 破壊的なコマンドが許可されます |
auto_approve = [all tools] | すべてのツールが確認なしで実行されます |
agent.max_tool_iterations = 50 | タスクあたりのツール呼び出し数が 5 倍になります |
agent.parallel_tools = true | 複数のツールを同時に実行します |
browser.enabled = true | ブラウザーの自動化が有効になります |
browser.allowed_domains = ["*"] | あらゆるウェブサイトを閲覧できます |
http_request.enabled = true | あらゆるドメインに HTTP リクエストを送信できます |
composio.enabled = true | 250 以上のアプリを統合します(Gmail、Calendar、GitHub など) |
heartbeat.enabled = true | 30 分ごとにバックグラウンドで事前確認を行います |
scheduler.max_concurrent = 8 | スケジュールされたタスクを 8 件並列で実行します |
セキュリティに関する警告
完全自律モードでは、すべてのガードレールが解除されます。エージェントは次の操作を実行できます。
- システム上の任意のコマンドを実行する
- 任意のファイルを読み書きする
- Chrome プロファイル(Cookie、ログイン情報)を使って任意のウェブサイトを閲覧する
- 任意のドメインに HTTP リクエストを送信する
- 承認なしでシェルコマンドを実行する
信頼できる個人用マシンでのみ使用してください。共有環境や本番環境では、明示的な許可リストを設定した supervised モードを維持してください。
運用手順書
実行モード
| モード | コマンド | 用途 |
|---|---|---|
| フォアグラウンド実行 | zeroclaw daemon | ローカルでのデバッグ |
| ゲートウェイのみ | zeroclaw gateway | Webhook のテスト |
| ユーザーサービス | zeroclaw service install && start | 継続的な実行 |
オペレーターチェックリスト
zeroclaw status # Check config
zeroclaw doctor # Run diagnostics
zeroclaw channel doctor # Check channel health
zeroclaw daemon # Start runtime
安全な設定変更の手順
~/.zeroclaw/config.tomlをバックアップします- 論理的にまとまった変更を1つ適用します
zeroclaw doctorを実行します- デーモン/サービスを再起動します
statusとchannel doctorで確認します
ログ
- macOS/Windows:
~/.zeroclaw/logs/daemon.stdout.log、daemon.stderr.log - Linux systemd:
journalctl --user -u zeroclaw.service -f
ネットワークへのデプロイ
Telegram/Discord/Slack(ポート不要)
これらはロングポーリングを使用し、アウトバウンド通信のみを行います。NAT の背後、RPi、ホームラボでも動作します。
zeroclaw daemon --host 127.0.0.1 --port 3000
Webhook チャネル(WhatsApp など)
パブリック URL が必要です。次の方法があります。
[tunnel] provider = "tailscale"— Tailscale Funnel[tunnel] provider = "ngrok"— ngrok トンネル- Cloudflare Tunnel
LAN アクセス
[gateway]
host = "0.0.0.0"
allow_public_bind = true
ハードウェア周辺機器
対応ボード
| ボード | トランスポート | パス |
|---|---|---|
| nucleo-f401re | シリアル | /dev/ttyACM0 |
| arduino-uno | シリアル | /dev/ttyACM0, /dev/cu.usbmodem* |
| arduino-uno-q | ブリッジ | (IP) |
| rpi-gpio | ネイティブ | ネイティブ |
| esp32 | シリアル | /dev/ttyUSB0 |
ボードの追加
zeroclaw peripheral add nucleo-f401re /dev/ttyACM0
または、設定で追加します。
[peripherals]
enabled = true
datasheet_dir = "docs/datasheets"
[[peripherals.boards]]
board = "nucleo-f401re"
transport = "serial"
path = "/dev/ttyACM0"
baud = 115200
2つの動作モード
- エッジネイティブ: ZeroClaw をデバイス(ESP32、RPi)上で直接実行し、ローカルの GPIO/I2C/SPI を使用します
- ホスト経由: ホスト(Mac/Linux)上の ZeroClaw を USB/J-Link 経由でデバイスに接続し、開発やデバッグを行います
トラブルシューティング早見表
| 問題 | 解決方法 |
|---|---|
cargo が見つからない | ./bootstrap.sh --install-rust |
zeroclaw が見つからない | export PATH="$HOME/.cargo/bin:$PATH" |
| ゲートウェイに到達できない | 設定の gateway.host/gateway.port を確認します |
Telegram で terminated by other getUpdates が表示される | 余分なデーモン/チャネルプロセスを停止します。トークンごとにポーラーは1つだけにしてください |
| チャネルが正常でない | zeroclaw channel doctor を実行し、認証情報と許可リストを確認します |
| サービスが実行されていない | zeroclaw service stop && zeroclaw service start |
| 設定ファイルが全ユーザーから読み取り可能という警告が表示される | chmod 600 ~/.zeroclaw/config.toml |
| ブラウザーがヘッドレス(非表示)で起動する | ~/.agent-browser/config.json の executablePath に実際の Chrome を設定します。Playwright に同梱された Chromium は headed フラグを無視します |
| ブラウザーで「ドメインが許可リストにありません」と表示される | 設定で browser.allowed_domains = ["*"] を設定し、デーモンを再起動します |
| エージェントが存在しないドメイン制限を主張する | LLM のハルシネーションです。「allowed_domains はワイルドカードです。今すぐ閲覧してください」と伝えます |
agent-browser が見つからない | npm install -g agent-browser |
| バイナリに rust_native ブラウザ機能がない | プリビルドバイナリには含まれていません。--features browser-native を指定してソースからビルドします |
| 組み込みの更新コマンドがない | リポジトリをクローンし、すばやく更新するには bash scripts/bootstrap.sh --prefer-prebuilt を実行します |
診断コマンド
zeroclaw --version
zeroclaw status
zeroclaw doctor
zeroclaw channel doctor
zeroclaw channel list
ワークスペースファイル
| ファイル | 目的 |
|---|---|
SOUL.md | エージェントの性格、アイデンティティ、コミュニケーションスタイル |
AGENTS.md | セッションプロトコル、メモリーシステム、安全ルール |
IDENTITY.md | 名前、クリーチャーの種類、雰囲気、絵文字 |
USER.md | ユーザープロファイル、好み、作業コンテキスト |
MEMORY.md | 長期的に保持する整理済みの記憶(メインセッションに自動挿入) |
TOOLS.md | ローカルメモ — SSH ホスト、デバイス名、環境固有の情報 |
HEARTBEAT.md | 定期タスク(空の場合はハートビートをスキップ) |
BOOTSTRAP.md | 初回起動時のオンボーディング(初期設定後に削除) |
メモリシステム
- 日次メモ:
memory/YYYY-MM-DD.md— 生ログ(必要に応じてツール経由で取得) - 長期メモリ:
MEMORY.md— 整理済みで、各セッションに自動挿入されます - ツール:
memory_store、memory_recall、memory_forget
セキュリティモデル
- デフォルトで拒否するチャンネルの許可リスト
- ゲートウェイとのペアリングがデフォルトで必須
- パブリックバインドはデフォルトで無効
- ワークスペースに限定されたファイルシステムアクセス
- シェル実行用のコマンド許可リスト
- レート制限(1時間あたりのアクション数、1日あたりのコスト)
- 暗号化されたシークレットの保存
- プラグイン可能なサンドボックス化(Landlock、Firejail、Bubblewrap、Docker — 機能フラグで制御)
- 監査ログ(提案/ロードマップ — HMAC署名付きの改ざん検知可能なログ)
LangGraph / Python 統合
zeroclaw-tools Python パッケージは、OpenAI互換プロバイダーで一貫した動作を実現する、LangGraphベースのツール呼び出しを提供します。
pip install zeroclaw-tools
from zeroclaw_tools import create_agent, shell, file_read, file_write
agent = create_agent(tools=[shell, file_read, file_write], model="glm-5", api_key="your-api-key", base_url="your-base-url")
Open Skills 統合
ZeroClawはOpen Skills(https://github.com/besoeasy/open-skills)と統合されており、トークン使用量を95~98%削減する、すぐに使える実行プレイブックを利用できます。
スキルは~/.zeroclaw/workspace/skills/に同期され、次のコマンドでインストールできます。
zeroclaw skills install <github-url-or-local-path>
主な設計原則
- オーバーヘッドゼロ — RAM使用量は5MB未満、起動時間は10ms未満、バイナリサイズは約3.4MB
- 妥協ゼロ — パフォーマンスを犠牲にせず、完全なセキュリティを実現
- 100% Rust — 単一バイナリで、ランタイム依存関係なし
- 100%非依存 — プロバイダー、チャンネル、ツール、メモリ、トンネルを自由に切り替え可能
- トレイト主導 — すべてのサブシステムがトレイトで構成され、あらゆる要素をプラグイン可能
- デフォルトでセキュア — ペアリング、スコープ制限、許可リスト、暗号化されたシークレット