# Agent Fleet — AI コーディングエージェントを運用する、自社ホストの基盤 [English](README.md) | 日本語 · [agent-fleet.org](https://agent-fleet.org/ja/) **エージェントは置き換えない。運用する。** ![Agent Fleet の Console。リポジトリのツリーと実行中のセッション、エージェントの会話ミラー、コミットグラフが並んでいる](docs/img/console-ja.webp) Agent Fleet は、新しいエージェントフレームワークではありません。Claude Code は Claude Code のまま、Codex は Codex のままです。いま使っている CLI を、ログイン・ モデル・振る舞いごとそのまま動かします。Agent Fleet が引き受けるのはその周りで、 メンバーごとに持続し隔離された環境、本物の git の作業コピーと worktree、ブラウザから 追って操縦できるセッション、質問と許可確認、使用量、スケジュール、そして遠隔からの 操作です。**ノートを閉じても、エージェントは動き続けます。** いま扱えるエージェント: Claude Code / Codex CLI / GitHub Copilot CLI / Antigravity CLI / Cursor CLI / Kiro / OpenCode / Muse Code、そしてフリート自身の llama.cpp ハーネス。 **自社でホストします**。1 社 1 配備で、自分たちのインフラの上で動くので、資格情報も ソースも会話も外に出ません。メンバーの環境は cgroup で CPU とメモリを制限した Docker コンテナ(Docker を使わない native 版では bubblewrap のサンドボックス)です。同じ中身が、 Docker Compose の Linux 1 台でも AWS ECS でも動きます。 ## Agent Fleet のある一日 1. 朝、Claude Code と Codex に別々の Issue を頼む。どちらも自分の git worktree で作業する。 2. ノートを閉じて出かける。どちらもサーバーの上で作業を続ける。 3. 片方が許可を求める。その依頼はセッションごとの Slack スレッドに届き、スマートフォン から答える。 4. 机に戻ると、セッション一覧でどれが終わり、どれがあなたを待っているかが分かり、 各 worktree の変更はワンクリックで開ける。 ![この 4 つの手順を約 45 秒で再生する録画。2 つの Issue を Claude Code と Codex のセッションとしてそれぞれの worktree で始め、ノートを閉じ、スマートフォンに届いたセッションの Slack スレッドで権限要求を許可し、机に戻るとセッション一覧に完了した 1 本と質問待ちの 1 本が並び、その横に完了したセッションの変更ファイルと差分が開いている](docs/img/demo-day-ja.webp) 録画は本物の Console を架空のデータで動かしたものです。スマートフォンの Slack スレッドは、 チャットブリッジが送るメッセージを描き直したものです。 ## 1 つの会話ではなく、フリートとして運用する - **何本ものセッションを同時に**:種類の違うエージェントを、それぞれ自分の worktree で 同時に動かせます。作業中か、質問・プラン・許可確認であなたを待っているかが 1 つの一覧で 分かります。 - **セッションがセッションを起こす**:レビューを別の種類のエージェントに渡し、終わったら 報告を 1 本受け取れます。フリート俯瞰図に、誰が誰を起こし、何をやり取りしたかが描かれ ます。 - **人がいなくても進む**:スケジュール実行は止まっているワークスペースを起こします。 使用量の上限で切れたターンは、上限がリセットされると再開します。 - **どこからでも**:セッションごとの Discord / Slack スレッドで、返信して操縦し、ボタンで 答えられます。Console はスマートフォンのブラウザでも使えます。 - **費用を 1 つの物差しで**:トークンを機能別・エージェント別・モデル別に集計します。 トークンを報告しない呼び出しはゼロではなく「未計測」として数えます。 ## CLI が更新されても、検証済みの版で動き続ける エージェントの CLI は数日おきに新しい版が出ます。9 種類に対応していても、その対応が続かなければ 意味がありません。そこで: - どの CLI も、検証済みの版に**固定**しています。自動更新はオプトインです。 - 新しい版が出ると毎日の監視が気づき、その CLI を**実際に動かす契約テスト**を走らせます。 対話画面(TUI)も含めて、Agent Fleet が頼っている振る舞いが変わっていないかを確かめます。 - 「新しい版が出た」ことと「その版がテストを通った」ことは別々に記録するので、 まだ通っていない版を通った版と取り違えることはありません。 仕組みの詳細: [版の固定と契約テストの仕組み](docs/build/10-development.ja.md#上流-cli-の破壊検知版ドリフト監視--contract-テスト) ## 画面を眺める | | | |---|---| | ![起動ダイアログ。エージェント・モデル・推論の深さ・開始モード・新しい worktree で動かすかを選ぶ](docs/img/launch-ja.webp) | ![会話ミラー。エージェントの質問が、選択肢つきの答えられるカードとして描かれている](docs/img/mirror-ja.webp) | | **起動ダイアログ**:エージェント、モデル、推論の深さ、開始モード、新しい git worktree で動かすか作業コピーのままかを、1 つのダイアログで選んで起動します。 | **ブラウザから追って、操縦する**:質問・プラン・許可確認がカードで届き、その場で答えられます。 | | ![3 つのペイン。会話ミラー、shell セッションに繋がった端末、作業ツリーの変更とコミット欄](docs/img/split-ja.webp) | ![分割ペイン。左にブランチのレーンつきコミットグラフ、右に選んだコミットの差分](docs/img/scm-ja.webp) | | **ペインの分割**:ミラー・端末・作業ツリーの変更を横に並べられます。どのペインも別のタブへ切り出せます。 | **Console の中の git**:作業コピーと worktree ごとに、コミットグラフと選んだコミットの差分を表示し、ステージとコミットまで行えます。 | | ![使用量タブ。30 日ぶんの機能別トークン積み上げグラフ、トークン・呼び出し・キャッシュ読み・API 換算費用・未計測の呼び出しの KPI、機能/エージェント/モデル別の内訳](docs/img/usage-ja.webp) | ![shell セッションに繋がった端末ペインで、ビルドと git status を走らせている](docs/img/terminal-ja.webp) | | **トークンの行き先が見える**:機能別・エージェント別・モデル別に、24 時間・7 日・30 日の範囲で見られます。トークンを報告しない呼び出しは 0 とせず、別に数えます。 | **端末**:エージェントでも素の shell でも、どのセッションも生の端末として開けます。 | | ![セッション一覧。稼働中のセッションをリポジトリごとに 1 枚ずつカードで並べ、状態チップ・モデル・コンテキスト使用率が載る](docs/img/overview-ja.webp) | ![フリート俯瞰図。1 セッション 1 レーンを時間軸に描き、子は親の下、セッション間のやり取りは矢印、各レーンに状態チップ](docs/img/fleetgraph-ja.webp) | | **稼働中のセッションを一望**:1 セッション 1 枚のカードをリポジトリと家系ごとに並べ、あなたの返事を待っているものは色で目立ちます。 | **フリートを時間で見る**:1 セッション 1 レーンで描き、子は親の下に置き、セッション間のやり取りは矢印で示します。一日の中を動かして拡大縮小できます。 | 画面の言葉は日本語と英語を利用者ごとに ⚙設定で切り替えます。上のどの画面も英語版が あります(`docs/img/*-en.webp`、たとえば [Console](docs/img/console-en.webp))。 ## 試す どのエディションが合うかは 20 分で決められます。判断材料は [配備形態を選ぶ](guide/operate/01-choose.ja.md)にまとめてあります。 | エディション | 向いている相手 | |---|---| | **compose** | 既定。Docker の載った Linux 1 台で、チームで使う | | **native** | Docker が入れられない・1 人で使う(WSL2、個人の Linux) | | **ecs / ecs-ec2** | AWS で、タスク単位の隔離が要る | | **ec2-single** | AWS で小規模。EC2 1 台に compose を載せる | リリース版は GHCR のピンされたイメージを取得する形で [配布リポジトリ](https://github.com/k-k1/agent-fleet-dist)に公開しています。コマンドの 手順書は、操作する対象の隣に置いてあります([compose](deploy/compose/README.md) / [native](deploy/native/README.md) / [AWS](deploy/aws/ecs/README.md))。 このツリーからイメージを自分でビルドすることもできます。開発中はこちらを使います: ```bash cd deploy/compose cp .env.example .env # 秘密(AF_MASTER_KEY など)を生成して埋める docker build -t agent-fleet/workspace:dev ../../workspace # 利用者ごとのワークスペース像 docker compose up -d --build ``` TLS は Caddy が Let's Encrypt で自動取得し、サインインは Control Plane 自身の OAuth を 使います。各手順が何を決めているのか、その後何に気をつけるのかは [配備の運用](guide/operate/README.ja.md)にあります。 ## ドキュメント 文書は読者で分かれていて、その分かれ方がそのまま配布の単位でもあります。 | あなたは | 読むもの | |---|---| | Agent Fleet を使う人 | **[guide/](guide/README.ja.md)**:やり方。**このツリーがワークスペースのコンテナへ配られ**、Console の「**利用ガイド**」が開くのもここです | | コードを変える人 | **[docs/](docs/README.ja.md)**:どう動いているか、なぜそうなったか | コードは [`workspace/`](workspace/)(エージェントとそのイメージ)・ [`control-plane/`](control-plane/)・[`console/`](console/) の 3 つ。手元の開発スタックは [`deploy/local/run-dev.sh`](deploy/local/run-dev.sh)(`local` = Docker / `wsl` / `native` / `reset`)で起動します。説明は [10 開発](docs/build/10-development.ja.md)。 ## 用語 - **ワークスペース**:利用者 1 人ぶんの、持続するコンテナ環境。ホームのボリュームと 動いているプロセスを持ちます。 - **作業コピー**:ワークスペースの中にクローンした git リポジトリの作業ディレクトリ。 - **セッション**:会話・設定・実行状態をまとめた論理単位で、作業コピーに結びついています。 端末があるとは限りません: Codex / OpenCode / Copilot / Cursor / Kiro は既定で **マネージド**実行(会話画面から操る。Codex と OpenCode はセッションごとの CLI プロセス すら持たない共有ランタイムで動きます)、llama.cpp と Muse Code はマネージド実行だけで、 Claude / Antigravity と素の shell / SSM が端末を使います。 ## ライセンス [Apache License 2.0](LICENSE)(寛容型・特許許諾つき)。資格情報を扱う道具のソースを 公開し、暗号と隔離の実装を各社が監査できるようにしておくこと自体を、採用の理由の 1 つと 考えています。コントリビューション: [CONTRIBUTING.md](CONTRIBUTING.md)、 脆弱性の報告と脅威モデル: [SECURITY.md](SECURITY.md)。