README_ja.md
OpenClawは素晴らしいプロジェクトですが、自分が理解しきれない複雑なソフトウェアに生活へのフルアクセスを与えたまま安心して眠れるとは思えませんでした。OpenClawは約50万行のコード、53の設定ファイル、70以上の依存関係を持っています。セキュリティはアプリケーションレベル(許可リスト、ペアリングコード)であり、真のOSレベルの分離ではありません。すべてが共有メモリを持つ1つのNodeプロセスで動作します。
NanoClawは同じコア機能を提供しますが、理解できる規模のコードベースで実現しています。1つのプロセスと少数のファイル。Claudeエージェントは単なるパーミッションチェックの背後ではなく、ファイルシステム分離された独自のLinuxコンテナで実行されます。
git clone https://github.com/nanocoai/nanoclaw.git nanoclaw-v2
cd nanoclaw-v2
bash nanoclaw.sh
nanoclaw.shは、まっさらなマシンから、メッセージを送れる名前付きエージェントが動く状態までを一気通貫で案内します。NodeやpnpmやDockerが無ければインストールし、AnthropicクレデンシャルをOneCLIに登録し、エージェントコンテナをビルドし、最初のチャネル(Telegram、Discord、WhatsApp、またはローカルCLI)とペアリングします。途中でステップが失敗すれば自動的にClaude Codeが呼び出され、原因を診断して中断箇所から再開します。
理解できる規模。 1つのプロセス、少数のソースファイル、マイクロサービスなし。NanoClawのコードベース全体を把握したいなら、Claude Codeに説明を求めれば十分です。
分離によるセキュリティ。 エージェントはLinuxコンテナで実行され、明示的にマウントされたものだけが見えます。コマンドはホストではなくコンテナ内で実行されるため、Bashアクセスも安全です。
個人ユーザー向け。 NanoClawはモノリシックなフレームワークではなく、各ユーザーのニーズに正確にフィットするソフトウェアです。肥大化するのではなく、オーダーメイドであるよう設計されています。自分のフォークを作り、Claude Codeにニーズに合わせて変更させます。
カスタマイズ=コード変更。 設定の肥大化はありません。動作を変えたいならコードを変える。コードベースは変更しても安全な規模です。
AIネイティブ、設計としてハイブリッド。 インストールとオンボーディングは最適化されたスクリプトのパスで、速く決定的です。判断が必要なところ(インストール失敗、対話的な決定、カスタマイズ)では、制御はシームレスにClaude Codeへ渡されます。セットアップ以降も、監視ダッシュボードやデバッグUIは用意しません。問題をチャットで説明すれば、Claude Codeが処理します。
機能ではなくスキル。 トランクにはレジストリとインフラのみを同梱し、個別のチャネルアダプターや代替プロバイダーは含めません。チャネル(Discord、Slack、Telegram、WhatsAppなど)は長期運用されるchannelsブランチに、代替プロバイダー(OpenCode、Ollama)はprovidersブランチに置かれます。/add-telegramや/add-opencodeなどを実行すると、スキルが必要なモジュールだけを正確にフォークへコピーします。要求していない機能は一切入りません。
最高のハーネス、最高のモデル。 NanoClawはAnthropic公式のClaude Agent SDK経由でネイティブにClaude Codeを使用します。最新のClaudeモデルとClaude Codeの全ツールセット(自分のNanoClawフォークを変更・拡張する能力を含む)が手に入ります。他プロバイダーはドロップイン・オプションです。OpenAIのCodex(ChatGPTサブスクリプションまたはAPIキー)向けには/add-codex、OpenCode経由のOpenRouter、Google、DeepSeekなどには/add-opencode、ローカルのオープンウェイトモデルには/add-ollama-provider。プロバイダーはエージェントグループごとに設定可能です。
/add-<channel>スキルでオンデマンドにインストール。1つでも複数でも同時に実行可能。/manage-channelsでチャネル単位に選択。docs/isolation-model.md参照。CLAUDE.md、独自のメモリ、独自のコンテナ、そしてあなたが許可したマウントのみを持ちます。明示的に配線しない限り、境界を越えるものはありません。トリガーワード(デフォルト:@Andy)でアシスタントに話しかけます:
@Andy 毎朝9時に営業パイプラインの概要を送って(Obsidian vaultフォルダにアクセス可能)
@Andy 毎週金曜に過去1週間のgit履歴をレビューして、差異があればREADMEを更新して
@Andy 毎週月曜の朝8時に、Hacker NewsとTechCrunchからAI関連のニュースをまとめてブリーフィングを送って
所有または管理しているチャネルからは、グループやタスクを管理できます:
@Andy 全グループのスケジュールタスクを一覧表示して
@Andy 月曜のブリーフィングタスクを一時停止して
@Andy Family Chatグループに参加して
NanoClawは設定ファイルを使いません。変更したいときは、Claude Codeにやりたいことを伝えるだけです:
または/customizeを実行すればガイド付きで変更できます。
コードベースは十分に小さいため、Claudeが安全に変更できます。
機能を追加するのではなく、スキルを追加してください。
新しいチャネルやエージェントプロバイダーを追加したい場合、トランクには追加しないでください。新しいチャネルアダプターはchannelsブランチに、新しいエージェントプロバイダーはprovidersブランチに追加します。ユーザーはそれぞれのフォークで/add-<name>スキルを実行し、スキルが必要なモジュールを標準パスへコピーし、登録を配線し、依存関係をピン留めします。
こうすることでトランクは純粋なレジストリ/インフラのまま保たれ、どのフォークもスリムなままです。ユーザーは求めたチャネルとプロバイダーだけを受け取り、それ以外は入りません。
私たちが見たいスキル:
コミュニケーションチャネル
/add-signal — Signalをチャネルとして追加/customize、/debug、セットアップ時のエラー復旧、全ての/add-<channel>スキルで使用)メッセージングアプリ → ホストプロセス(ルーター) → inbound.db → コンテナ(Bun、Claude Agent SDK) → outbound.db → ホストプロセス(配信) → メッセージングアプリ
単一のNodeホストがセッションごとのエージェントコンテナをオーケストレーションします。メッセージが到着すると、ホストはエンティティモデル(ユーザー → メッセージンググループ → エージェントグループ → セッション)に沿ってルーティングし、セッションのinbound.dbに書き込み、コンテナを起こします。コンテナ内部のagent-runnerはinbound.dbをポーリングしてClaudeを実行し、レスポンスをoutbound.dbに書き込みます。ホストはoutbound.dbをポーリングし、チャネルアダプターを通じて配信します。
セッションごとに2つのSQLiteファイル、各ファイルにライターは1つだけ — クロスマウントの競合なし、IPCなし、stdinパイプなし。チャネルと代替プロバイダーは起動時に自己登録します。トランクはレジストリとChat SDKブリッジを同梱し、アダプター本体はフォークごとにスキルでインストールされます。
詳しいアーキテクチャ説明はdocs/architecture.mdを、3階層の分離モデルについてはdocs/isolation-model.mdを参照してください。
主要ファイル:
src/index.ts — エントリーポイント:DB初期化、チャネルアダプター、配信ポーリング、sweepsrc/router.ts — インバウンドルーティング:メッセージンググループ → エージェントグループ → セッション → inbound.dbsrc/delivery.ts — outbound.dbをポーリングし、アダプター経由で配信、システムアクションを処理src/host-sweep.ts — 60秒ごとのsweep:ストール検出、期限到来メッセージの起動、繰り返しsrc/session-manager.ts — セッションの解決、inbound.dbとoutbound.dbのオープンsrc/container-runner.ts — エージェントグループごとのコンテナ起動、OneCLIによるクレデンシャル注入src/db/ — セントラルDB(ユーザー、ロール、エージェントグループ、メッセージンググループ、配線、マイグレーション)src/channels/ — チャネルアダプターのインフラ(アダプターは/add-<channel>スキルでインストール)src/providers/ — ホスト側プロバイダー設定(claudeはバンドル、その他はスキル経由)container/agent-runner/ — Bun製agent-runner:ポーリングループ、MCPツール、プロバイダー抽象化groups/<folder>/ — エージェントグループごとのファイルシステム(CLAUDE.md、スキル、コンテナ設定)なぜDockerなのか?
Dockerはクロスプラットフォーム対応(macOS、Linux、WSL2経由のWindows)と成熟したエコシステムを提供します。macOSでは、/convert-to-apple-containerでオプションとしてApple Containerに切り替え、より軽量なネイティブランタイムを使えます。さらに強い分離が必要なら、Docker Sandboxesが各コンテナをマイクロVM内で動作させます。
LinuxやWindowsで実行できますか?
はい。Dockerがデフォルトのランタイムで、macOS、Linux、Windows(WSL2経由)で動作します。bash nanoclaw.shを実行するだけです。
セキュリティは大丈夫ですか?
エージェントはアプリケーションレベルのパーミッションチェックではなく、コンテナ内で実行されます。明示的にマウントされたディレクトリのみアクセス可能です。クレデンシャルはコンテナに渡されず、アウトバウンドAPIリクエストはOneCLI Agent Vaultを経由し、プロキシレベルで認証を注入し、レートリミットやアクセスポリシーをサポートします。実行するものはレビューすべきですが、コードベースは実際にレビュー可能な規模です。完全なセキュリティモデルについてはセキュリティドキュメントを参照してください。
なぜ設定ファイルがないのか?
設定の肥大化を避けたいからです。すべてのユーザーがNanoClawをカスタマイズし、汎用的なシステムを設定するのではなくコードが自分の望み通りに動くようにすべきです。設定ファイルが欲しければClaudeに追加するよう伝えれば実現できます。
サードパーティやオープンソースモデルを使えますか?
はい。推奨される方法は/add-opencode(OpenCode設定経由でOpenRouter、OpenAI、Google、DeepSeekなど)か/add-ollama-provider(Ollama経由でローカルのオープンウェイトモデル)です。どちらもエージェントグループごとに設定可能なので、同じインストール内で異なるエージェントが異なるバックエンドで動作できます。
一時的な実験用には、Claude API互換のエンドポイントも.envで利用できます:
ANTHROPIC_BASE_URL=https://your-api-endpoint.com
ANTHROPIC_AUTH_TOKEN=your-token-here
問題のデバッグ方法は?
Claude Codeに聞いてください。「スケジューラーが動いていないのはなぜ?」「最近のログには何がある?」「このメッセージに返信がなかったのはなぜ?」これがNanoClawの基盤となるAIネイティブなアプローチです。
セットアップがうまくいかない場合は?
ステップが失敗した場合、nanoclaw.shは診断と再開のためにClaude Codeへ制御を渡します。それでも解決しなければ、claudeを実行して/debugを呼び出してください。他のユーザーにも影響しそうな問題をClaudeが特定した場合は、該当のセットアップステップまたはスキルにPRを送ってください。
どのような変更がコードベースに受け入れられますか?
ベース設定に受け入れられるのは、セキュリティ修正、バグ修正、明確な改善のみです。それだけです。
それ以外(新機能、OS互換性、ハードウェアサポート、拡張など)は、channelsまたはprovidersブランチのスキルとしてコントリビュートしてください。
これにより、ベースシステムを最小限に保ち、全ユーザーが不要な機能を継承することなく自分のインストールをカスタマイズできます。
質問やアイデアがありますか?Discordに参加してください。
破壊的変更についてはCHANGELOG.mdを、完全なリリース履歴はドキュメントサイトのfull release historyを参照してください。
MIT