
自律型AIエージェントのためのセキュア*ランタイム。平易な英語の憲法からポリシーを生成。(*https://ironcurtain.dev)
自律型AIエージェントのためのセキュア*ランタイム。セキュリティポリシーは人間が読める憲法から導出されます。
*「セキュア」と書かれているのを見たら、すぐに疑ってください。ここで「セキュア」が意味するものは?
[!WARNING] 研究プロトタイプ。 IronCurtainは、AIエージェントを実際に有用になる程度に安全にする方法を探求する初期段階の研究プロジェクトです。API、構成形式、アーキテクチャは変更される可能性があります。貢献とフィードバックを歓迎します。
エージェントはリポジトリをクローンし、変更をプッシュするよう求められます。git_clone と git_push はどちらもポリシーエンジンによって昇格されますが、自動承認者が自動的に承認します — コマンドモード(Ctrl-A)からの信頼された入力が明確な意図を提供したため、手動の /approve は不要でした。
自律型AIエージェントは、ファイルの管理、gitコマンドの実行、メッセージの送信、APIとのやり取りをユーザーに代わって行えます。しかし、今日のエージェントフレームワークは、ファイルシステム、認証情報、ネットワークへの完全なアクセスなど、ユーザーと同じ権限をエージェントに与えています。セキュリティ研究者はこれをアンビエント権限と呼びます。これは、一度のプロンプトインジェクションやマルチターンのドリフトによって、エージェントがファイルを削除したり、データを外部に持ち出したり、悪意のあるコードをプッシュしたりする可能性があることを意味します。
一般的な対応は、エージェントを狭いサンドボックスに制限する(有用性が制限される)か、ユーザーにすべての操作の承認を求める(自律性が制限される)かのどちらかです。どちらも満足のいくものではありません。
IronCurtainは異なる道を選びます。セキュリティの意図を平易な英語で表現し、システムに強制方法を考えさせるのです。
あなたは憲法を書きます。これは、エージェントが何を許可され、何を許可されないかを記述した短い文書です。IronCurtainは、LLMパイプラインを使ってこれを決定的なセキュリティポリシーにコンパイルし、生成されたテストシナリオに対してコンパイル済みルールを検証し、実行時にすべてのツール呼び出しでポリシーを強制します。その結果、ユーザーが自然言語で定義した境界の範囲内で自律的に動作できるエージェントが得られます。
主なアイデア:
IronCurtainは、異なる信頼モデルを持つ2つのセッションモードをサポートしています:
どちらのモードでも、エージェントは信頼されていません。セキュリティはモデルが指示に従うことに依存せず、境界で強制されます。
図、レイヤーごとの信頼分析、macOSプラットフォームに関する注意事項を含む完全なアーキテクチャについては、SANDBOXING.mdを参照してください。
isolated-vmが必要とします。24と26はビルド済みバイナリをインストールし、Node 22はインストール時にソースからコンパイルするためC/C++ツールチェーンが必要です)。奇数番号のライン(23、25)は実行できますが未テストです — ironcurtain doctor が警告します。containerが代替バックエンドとして機能します(コンテナごとにVM。そのサービスが実行されているときに自動的に使用されます — ironcurtain config の containerRuntime を参照)。グローバルCLIツールとして(エンドユーザー向け):```bash npm install -g @provos/ironcurtain
**ソースから(開発):**```bash
git clone https://github.com/provos/ironcurtain.git
cd ironcurtain
npm install
1. APIキーを設定します:```bash 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` でも自動的に実行されます):```bash
ironcurtain setup
GitHubトークンの設定、Web検索プロバイダー、モデル選択、その他の設定について順を追って説明します。選択内容を保存した ~/.ironcurtain/config.json を作成します。
IronCurtainには、開発者体験を重視したデフォルトポリシーが同梱されています。読み取り専用の操作は許可され、変更(書き込み、プッシュ、PR作成)は人間の承認を求めてエスカレーションされます。セットアップ後すぐに使い始められます。
IronCurtainを使う際の推奨方法です。IronCurtainがすべてのツール呼び出しをポリシーエンジンを介して仲介する一方で、エージェントの対話型TUI(Claude CodeまたはGoose)の全機能を単一のターミナルで利用できます。```bash ironcurtain mux
**主な機能:**
- **完全なエージェントTUI** — エージェントはネットワークアクセスなしのDockerコンテナ内のPTYで実行されます。ローカルで実行しているのとまったく同じように操作できます。
- **インラインのエスカレーション処理** — ツール呼び出しが承認を必要とする場合、エスカレーションピッカーがビューポートにオーバーレイされ、単一キー操作(a/d/w で承認/拒否/ホワイトリスト登録)が可能になります。`/approve+ N` を使用すると、セッションの残り期間中、ドメインまたはパスをホワイトリストに登録できます。
- **信頼済みユーザー入力** — コマンドモード(Ctrl-A)で入力されたテキストは、コンテナに入る前にホスト側でキャプチャされます。これにより、自動承認者が利用できる検証済みの意図シグナルが生成されます。たとえば、「push my changes to origin」と入力すると、後続の `git_push` エスカレーションが自動承認されます。
- **タブ管理** — 複数の並行セッションを生成(`/new`)、切り替え(`/tab N`、Alt-1..9)、終了(`/close`)できます。複数のmuxインスタンスを並行して実行できます。
完全なウォークスルー(入力モード、信頼済み入力のセキュリティモデル、エスカレーションワークフロー、キーボードリファレンス)については [DEVELOPER_GUIDE.md](https://github.com/provos/ironcurtain/blob/master/DEVELOPER_GUIDE.md) を参照してください。
### 非muxセッション
`ironcurtain start` は、簡単な単発タスク、スクリプト、またはローカルの組み込みエージェントを明示的に使用したい場合に使います。通常のインタラクティブなDockerエージェント作業には、`ironcurtain mux` を使用してください。```bash
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 状態、そして最終的な人間によるレポートレビューゲートを備えています。設計とコーディング ワークフローは、計画 / 設計 / 実装 / レビューのサイクルを実行し、こちらも人間によるゲートを備えています。各エージェントは、ロール固有のポリシー境界を持つ独自の Docker コンテナ内で実行されます。エンジンは状態遷移、成果物の受け渡し、クラッシュリジュームチェックポイントを自動的に管理します。オープンソースで、完全にあなたのマシン上で動作し、憲法ベースのポリシーエンジンを介してエージェントごとのセキュリティポリシーを強制し、あらゆる Docker コンテナ化されたエージェントと連携します — コーディングタスクにおいて Amazon Kiro や Google Jules に匹敵する規模ですが、第一級のセキュリティと拡張可能なワークフロー定義形式を備えています。

Web UI は、ワークフロー実行のための想定されたインターフェースです。 デーモンを起動し、表示された URL を開いて、Workflows ページから実行を操作します。上記のステートマシングラフはライブで、エージェントメッセージのタイムラインはマークダウンレンダリング付きでストリーミング表示され、ゲートレビューにはワークスペース + 成果物ブラウザが含まれ、過去の実行は一覧に残ります。```bash ironcurtain daemon --web-ui
CLIアクセスは、スクリプト作成、自動化、デバッグに利用できます:```bash
ironcurtain workflow start vuln-discovery \
"Find memory-safety bugs in libical" --workspace ~/src/libical
ironcurtain workflow start design-and-code \
"Build a REST API with authentication"
完全なドキュメントについては WORKFLOWS.md を参照してください。
デフォルトのポリシーは一般的な開発に適していますが、ワークフローに合わせて調整できます:
1. 憲法をカスタマイズする(任意ですが推奨されます):```bash ironcurtain customize-policy
ワークフローに合わせた憲法を生成するLLM支援の会話で、`~/.ironcurtain/constitution-user.md` に保存されます。このファイルを直接編集することもできます。