Geese-in-the-Box(旧 Goose-in-the-Box)は、Goose、OpenCode、OpenClaw 2.0 などの自律型 AI エージェントを、安全に隔離・実行するための「Docker 隔離 + Squid 監査プロキシ基盤」です。AIエージェントの通信状況を監視しながら動作をさせることができます。
自律型AIエージェントに直接ホストの権限やネットワークを与えると、以下のようなリスクがあります。
- 未許可の外部サーバーへのデータ送信(情報漏洩)
- クレデンシャル(秘密鍵や API キー)の流出
- ホスト環境そのものへの侵害・破壊
Geese-in-the-Box は、これらのリスクをある程度解決し、エージェントが安全に思考・実行できる環境を提供します。また、通信を監視・管理・制御することもできます。
なお、本プロダクトは個人開発による実験的な取り組みで、高度なセキュリティ的評価を行ったプロダクトではありません。
本基盤のコンセプトは、二重防御モデル (Defense in Depth) です。
- L3/L4 ネットワーク隔離 (Docker
internal: true):- AI エージェントは外部インターネットから完全に切り離された専用の内部ネットワークで動作します。
- L7 ホワイトリストプロキシ (Squid):
- エージェントが外部と通信する際は、Squid プロキシを経由する必要があります。
- 事前に許可されたドメイン(例:
api.openai.com,github.com)のみ接続でき、それ以外はすべて403 Forbiddenで遮断・監査されます。
- Goose Agent (Block社製 / CLI・GUI対応)
- OpenCode (オープンソース / ターミナル・GUI対応)
- OpenClaw 2.0 (最新自律エージェント / ターミナル・GUI対応)
まずは .env ファイルを作成し、各種 API キーや設定を行います。
cp .env.example .envTip
.env には OpenAI や Anthropic などの API キーを設定します。ローカルLLM (Ollama等) を使用する場合は不要です。
Docker イメージをビルドし、エージェントを起動します。用途に合わせてコマンドを選択してください。
# 基本ビルド (Goose + プロキシ基盤)
make build
# 🌟 インタラクティブ CLI ランチャーで起動する (最も簡単)
make menu
# ターミナルで直接対話したい場合 (Goose CLI)
make session各エージェントの起動コマンド:
- Goose:
- ターミナル:
make session - GUI (ブラウザ仮想デスクトップ):
make gui
- ターミナル:
- OpenCode:
- ビルド:
make build-opencode - ターミナル:
make run-opencode - GUI (ブラウザ仮想デスクトップ):
make run-opencode-gui
- ビルド:
- OpenClaw 2.0:
- ビルド:
make build-openclaw - ターミナル:
make run-openclaw - GUI (ブラウザ仮想デスクトップ):
make run-openclaw-gui
- ビルド:
コンテナの再作成・リセット & 実行オプション:
- コンテナ破棄・強制再作成:
make recreate(既存コンテナを破棄してイメージから再生成) - キャッシュなし再ビルド:
make rebuild - 全破棄・初期化:
make clean-all(全コンテナ・全ボリュームを削除) - コンテナ状態の保持 (
--rm制御):RM=0 make <コマンド>(終了時にコンテナを破棄せず保持して次回も継続可能。デフォルトはRM=1でクリーン自動破棄) - GPU 有効化:
USE_GPU=1 make <コマンド>
エージェントが動作し始めたら、ブラウザから通信制御や監視、GUI操作が可能です。
- コントロールパネル:
http://localhost:6080/control/(キルスイッチ・ホワイトリスト管理) - Dozzle (コンテナログ):
http://localhost:8080/ - 仮想デスクトップ (noVNC):
- Goose:
http://localhost:6080/vnc.html - OpenCode:
http://localhost:6081/vnc.html - OpenClaw 2.0:
http://localhost:6082/vnc.html
- Goose:
Web UI からリアルタイムにホワイトリストの編集や通信ブロックが行えます。

- 🔒 緊急キルスイッチ: ワンクリックでエージェントの全外部通信を即座に遮断。
- ⏳ 一時ホワイトリスト化: 遮断された通信ログから 15分/1時間の一時許可を付与。
Squid の JSON ログを自動集計し、トラフィック量やアラート推移を可視化します。

- Web UI ダッシュボード:
http://localhost:6080/report/
GUI エージェントの動作を視覚的に確認・介入できるブラウザ完結型の Xfce4 デスクトップ環境を内蔵しています(Goose: :6080、OpenCode: :6081、OpenClaw: :6082)。日本語入力 (Fcitx5) にも対応。詳細な起動コマンドやオプションについては、CLI 使い方・運用ガイド を参照してください。
一つの安全な基盤の上で、Goose、OpenCode、OpenClaw を並行運用したりすることが可能です。
機械学習スクリプトや GPU を必要とするタスク向けに、ホストの NVIDIA GPU をオンデマンドでコンテナに割り当て可能です。安全のためデフォルトは CPU のみで動作します。
- 一時的に有効化: コマンドの先頭に
USE_GPU=1を付与(例:USE_GPU=1 make session,USE_GPU=1 make run-opencode-gui) - 常時有効化:
.envにUSE_GPU=trueを設定
- エージェントコンテナから外部への直接通信の遮断 (Docker L3/L4 隔離)
- 許可されたドメイン以外の L7 (HTTP/HTTPS) 通信の遮断と監査記録 (Squid プロキシ)
- プロキシを経由しない不透明なバイパス通信の防止
- エージェントが故意・悪意を持って難読化されたコードをホストにバインドされた
/workspace領域に書き込むことの防止 (ワークスペースはユーザー責任でレビューする必要があります) - 許可されたホワイトリストドメイン (例:
github.com) を悪用したデータの持ち出し手法 (DNSトンネリング等を除く)
より詳細な技術アーキテクチャやドメイン知識については、内部の LLM-Wiki を参照してください。
- 📖 Geese-in-the-Box LLM-Wiki インデックス (docs/README.md)
- 多層防御モデル (Architecture)
- コントロールパネルの仕組み (Infrastructure)
- エージェント比較と並行運用 (Domain)
本プロジェクトは MIT License の下で公開されています。


