
自律型AIエージェントのためのセキュア*ランタイム。平易な英語の憲法からポリシーを生成。(*https://ironcurtain.dev)
自律型 AI エージェントのためのセキュア*なランタイム。セキュリティポリシーは人間が読める憲法から導出される。
*誰かが「セキュア」と書いたら、すぐに疑うべきです。セキュアとは何を意味するのか?
[!WARNING] 研究プロトタイプ。 IronCurtain は、AI エージェントを真に有用なレベルまで安全にする方法を探求する初期段階の研究プロジェクトです。API、設定フォーマット、アーキテクチャは変更される可能性があります。コントリビューションとフィードバックを歓迎します。
エージェントはリポジトリのクローンと変更のプッシュを依頼されます。git_clone と git_push はどちらもポリシーエンジンによってエスカレーションされますが、自動承認機能がそれらを自動的に承認します — コマンドモード(Ctrl-A)からのユーザーの信頼された入力が明確な意図を示していたため、手動の /approve は不要でした。
自律型 AI エージェントは、ファイルの管理、git コマンドの実行、メッセージの送信、API との連携をあなたに代わって行うことができます。しかし今日のエージェントフレームワークは、エージェントにユーザーと同じ権限 — ファイルシステム、認証情報、ネットワークへの完全なアクセス — を与えています。セキュリティ研究者はこれを ambient authority(環境権限) と呼び、単一のプロンプトインジェクションやマルチターンのドリフトによって、エージェントがファイルを削除したり、データを窃取したり、悪意のあるコードをプッシュしたりする可能性があることを意味します。
一般的な対応は、エージェントを狭いサンドボックスに制限する(有用性を制限する)か、すべてのアクションをユーザーに承認させる(自律性を制限する)かのどちらかです。どちらも満足のいくものではありません。
IronCurtain は別の道を取ります: セキュリティの意図を平易な英語で表現し、システムに強制方法を考えさせる。
あなたは constitution(憲法) を書きます。これはエージェントが何をしてよく、何をしてはいけないかを記述した短い文書です。IronCurtain は LLM パイプラインを使ってこれを決定論的なセキュリティポリシーにコンパイルし、コンパイルされたルールを生成されたテストシナリオに対して検証し、実行時にすべてのツール呼び出しに対してポリシーを強制します。その結果、自然言語で定義した境界内で自律的に動作できるエージェントが得られます。
主要なアイデア:
IronCurtain は、異なる信頼モデルを持つ 2 つのセッションモードをサポートしています:
Builtin Agent(コードモード) — IronCurtain 独自の LLM エージェントが、V8 サンドボックス内で実行される TypeScript スニペットを書きます。IronCurtain はエージェント、サンドボックス、ポリシーエンジンを制御します。すべてのツール呼び出しは構造化された MCP リクエストとしてサンドボックスを出て、ポリシーエンジン(許可 / 拒否 / エスカレーション)を通過し、その後でのみ実際の MCP サーバーに到達します。
Docker Agent モード — 外部エージェント(Claude Code、Goose、Codex)が、パブリックネットワークへの直接アクセスなしでコンテナ内で実行されます。IronCurtain は外部への影響を仲介します: LLM API 呼び出しは TLS 終端 MITM プロキシ(ホスト許可リスト、偽キーから実キーへの交換)を通過し、MCP ツール呼び出しは同じポリシーエンジンを通過し、サポートされているパッケージインストールは検証パッケージプロキシを通過します。
オプトインの ネストされた Docker は、開発者セッションにホストの Docker ソケットを公開することなく、プライベートで一時的なデーモンを提供します。実装済みのプロファイルは、macOS 上の Apple Container と Docker Desktop、および amd64 上の WSL2 + Docker Desktop をカバーしています。その offline、images、packages モードは、ローカルイメージの使用、仲介されたパブリックイメージのプル、サポートされているパッケージビルドを分離します。ネイティブ Linux Engine はネストには許可されていません。前提条件と制限については設定リファレンスを参照してください。
どちらのモードでも、エージェントは 信頼されません。セキュリティはモデルが指示に従うことに依存せず、境界で強制されます。
図、レイヤーごとの信頼分析、macOS プラットフォームの注意事項を含む完全なアーキテクチャについては SANDBOXING.md を参照してください。
isolated-vm バイナリをインストールします。Node 25 はサポートされておらず、テストもされていません。container が代替バックエンドとして機能します(コンテナごとに VM。そのサービスが実行中の場合に自動的に使用されます — ironcurtain config の containerRuntime を参照)グローバル CLI ツールとして(エンドユーザー向け):
npm install -g @provos/ironcurtain
ソースから (開発):
git clone https://github.com/provos/ironcurtain.git
cd ironcurtain
npm install
1. APIキーを設定する:
export ANTHROPIC_API_KEY=sk-ant-...
プロジェクトルートの .env ファイルにキーを配置することもできます(dotenv 経由で自動的に読み込まれます)。または、ironcurtain config を実行して ~/.ironcurtain/config.json に追加することもできます。環境変数は設定ファイルの値よりも優先されます。サポート対象: ANTHROPIC_API_KEY、GOOGLE_GENERATIVE_AI_API_KEY、OPENAI_API_KEY。
2. 初回起動ウィザードを実行する(推奨される mux パスを使用する前に明示的に実行してください。初回の非 mux の ironcurtain start でも自動的に実行されます):
ironcurtain setup
GitHub トークンのセットアップ、Web 検索プロバイダー、モデル選択、その他の設定を順を追って説明します。選択内容を反映した ~/.ironcurtain/config.json を作成します。
IronCurtain には、開発者体験を重視したデフォルトポリシーが同梱されています — 読み取り専用操作は許可され、変更操作(書き込み、プッシュ、PR 作成)は人間の承認を求めてエスカレーションされます。セットアップ後すぐに使い始めることができます。
IronCurtain を使用するための推奨方法です。IronCurtain がポリシーエンジンを通じてすべてのツール呼び出しを仲介しながら、エージェントのインタラクティブ TUI(Claude Code または Goose)の全機能を単一のターミナルで利用できます。
ironcurtain mux
主な機能:
/approve+ N を使用すると、セッションの残りの間、ドメインまたはパスをホワイトリストに登録できます。git_push エスカレーションが自動承認されます。/new)、それらを切り替え(/tab N、Alt-1..9)、閉じることができます(/close)。複数のmuxインスタンスを並行して実行できます。入力モード、信頼された入力のセキュリティモデル、エスカレーションワークフロー、キーボードリファレンスを含む完全なウォークスルーについては、DEVELOPER_GUIDE.md を参照してください。
クイックなワンショットタスク、スクリプト、またはローカルの組み込みエージェントを明示的に使用したい場合は、ironcurtain start を使用してください。通常のインタラクティブなDockerエージェント作業には、ironcurtain mux を使用してください。
ironcurtain start "Summarize the files in ./src" # Single-shot mode
ironcurtain start -w ./my-project "Fix the tests" # Single-shot workspace mode
ironcurtain start --agent builtin # Local builtin REPL, no Docker
ironcurtain start --persona my-assistant "Check my email" # Use a persona
IronCurtainは、セッション再開(--resume <session-id>)、レガシーなraw PTY/デバッグモード、モバイル承認用のSignalメッセージングトランスポート、スケジュールされたcronジョブ用のデーモンモードもサポートしています。デーモンには、ブラウザベースの監視とエスカレーション処理のためのオプションのweb UI(--web-ui)があります。詳細はRUNNING_MODES.mdを参照してください。
IronCurtainは、構造化されたワークフローを通じて複数のAIエージェントをオーケストレーションします。バンドルされている脆弱性発見ワークフローは、階層化されたハーネスパイプライン(Tier 1 分離関数 → Tier 2 マルチコンポーネント → Tier 3 フルビルド)とlibFuzzer/AFL++のカバレッジゲーティング、仮説駆動型のdiscover/triage状態、そして最終的な人間によるレポートレビューゲートを通じて、ネイティブコードのメモリ安全性および論理バグを追跡します。design-and-codeワークフローは、plan / design / implement / reviewサイクルを実行し、これも人間によるゲートを備えています。各エージェントは、役割固有のポリシー境界を持つ独自のDockerコンテナ内で実行されます。エンジンは、状態遷移、アーティファクトの受け渡し、クラッシュ再開チェックポイントを自動的に管理します。オープンソースで、完全にあなたのマシン上で動作し、憲法ベースのポリシーエンジンを介してエージェントごとのセキュリティポリシーを適用し、任意のDockerコンテナ化されたエージェントで動作します — コーディングタスクにおけるAmazon KiroやGoogle Julesと同等のスコープですが、ファーストクラスのセキュリティと拡張可能なワークフロー定義フォーマットを備えています。

web UIはワークフロー実行のための意図されたインターフェースです。 デーモンを起動し、表示されたURLを開き、Workflowsページから実行を操作します — 上の状態機械グラフはライブで、エージェントメッセージのタイムラインはmarkdownレンダリングでストリーミングされ、ゲートレビューにはワークスペース + アーティファクトブラウザが含まれ、過去の実行は一覧に残ります。
ironcurtain daemon --web-ui
スクリプト、自動化、デバッグ用にCLIアクセスが利用可能です: