資料一覧へ
PentAGI

自律型ペネトレーションテストのマルチエージェント基盤

Penetration testing Artificial General Intelligence / vxcontrol/pentagi

1 — 概要と構成

PentAGI は、自前のサーバーで動かすペネトレーションテスト用のマルチエージェントシステムです。対象と目的を自然言語で伝えると、役割の異なる AI エージェントが作業を計画し、隔離された Docker サンドボックス内で nmap・Metasploit・sqlmap などのツールを実行し、結果をレポートにまとめます。

利用する LLM は選べます。クラウドの各社 API、OpenAI 互換のゲートウェイ、Ollama や vLLM のローカルモデルに対応します。

Web UI / REST / GraphQLGo バックエンドエージェント群 + LLMフローごとの Docker サンドボックス対象システム
コンポーネント役割構成
pentagiAPI サーバー(Go)と Web UI(React)。フローの実行とサンドボックス管理必須
pgvectorPostgreSQL + pgvector。コマンド出力・推論・長期記憶を保存必須
scraperWeb から情報を集める内蔵ブラウザー必須
Graphiti + Neo4jホスト・サービス・発見事項の関係を知識グラフとして保持任意(docker-compose-graphiti.yml)
LangfuseLLM 呼び出しの分析任意(docker-compose-langfuse.yml)
Grafana / VictoriaMetrics / Loki / Jaegerシステムの監視任意(docker-compose-observability.yml)

言語: Go(バックエンド)· TypeScript / React(フロントエンド)· MIT ライセンス + EULA · 開発: VXControl

2 — エージェントの分担

1 つのフローを、計画・実行・補助の役割に分かれたエージェントが処理します。役割の一覧はバックエンドの MsgchainType 列挙型で定義されています。

区分エージェント担当
統括primary_agentフローをタスクに分け、サブタスクを専門エージェントへ委譲する
計画generator / refinerタスクのサブタスクを作り、サブタスク完了ごとに残りを計画し直す
実行pentester / coder / installer / searcher攻撃ツールの実行、スクリプト作成、ツール導入、Web 検索
記憶・文脈memorist / enricher / summarizer過去の結果の検索、文脈の補強、長い会話履歴の要約
監督・修復adviser / reflector / tool_call_fixer行き詰まりへの助言、ツール呼び出しに失敗したときの立て直し
出力・対話reporter / assistantレポートの作成、利用者との対話

3 — フローの流れ

PentAGI では 1 回の診断依頼を「フロー」と呼びます。

01 / Plan

依頼を分解する

UI または API でフローを作ると、primary_agent がタスクに分け、generator がサブタスクを作ります。

02 / Execute

サンドボックスで実行

サブタスクは 1 つずつ実行されます。専門エージェントがフロー専用のコンテナ内でターミナル・ファイル・ブラウザー・検索のツールを呼びます。

03 / Refine

結果を見て計画し直す

サブタスクが終わるたびに refiner が残りの計画を更新します。結果と推論は PostgreSQL に保存され、UI へ逐次配信されます。

進捗は画面で追えます。 メッセージ、エージェントの動き、ツール呼び出し、ターミナル出力は GraphQL サブスクリプションで UI に届きます。成功した手法は pgvector の長期記憶に残り、後のフローで参照されます。

4 — 暴走と行き詰まりを抑える仕組み

仕組み動作既定
ツール呼び出し上限統括・実行系は MAX_GENERAL_AGENT_TOOL_CALLS(100)、補助系は MAX_LIMITED_AGENT_TOOL_CALLS(20)で打ち切る常に有効
ReflectorLLM が 3 回続けてツール呼び出しを生成できないとき、done や ask での終了へ導く常に有効
実行監視(Beta)同じツールの繰り返し(5 回)や呼び出し総数(10 回)を検知し、adviser が別の方針を助言するEXECUTION_MONITOR_ENABLED=false
タスク計画(Beta)専門エージェントの作業前に 3〜7 手順の計画を作り、サブタスクの範囲外へ広がるのを防ぐAGENT_PLANNING_STEP_ENABLED=false
Beta の 2 機能は小さいモデル向けです。 README では 32B 未満のモデルでの利用を勧めています。実行監視は実行時間とトークン消費が 2〜3 倍になります。

5 — 始め方

2
vCPU 以上
4GB
RAM 以上
20GB
空きディスク
1+
LLM プロバイダー

Docker と Docker Compose(または Podman)、イメージ取得のためのインターネット接続が必要です。

インストーラーを使う(推奨)

Linux・Windows・macOS 向けに対話式のインストーラーがあります。以下は Linux amd64 の例です。

mkdir -p pentagi && cd pentagi
wget -O installer.zip https://pentagi.com/downloads/linux/amd64/installer-latest.zip
unzip installer.zip
sudo ./installer
  1. Docker・ネットワーク・システム要件を確認します。
  2. .env を作成し、LLM プロバイダーと検索エンジンを設定します。
  3. 認証情報と SSL 証明書を生成し、Docker Compose で起動します。

起動後、https://localhost:8443 を開きます。初期アカウントは admin@pentagi.com / admin です。最初のログインでパスワードを変更してください。

任意のスタックを追加する

# 知識グラフ
docker compose -f docker-compose.yml -f docker-compose-graphiti.yml up -d

# LLM 分析
docker compose -f docker-compose.yml -f docker-compose-langfuse.yml up -d

# システム監視
docker compose -f docker-compose.yml -f docker-compose-observability.yml up -d

6 — ログイン後の使い方

フローを作る

  1. サイドバーの Flows から New Flow を選びます。
  2. モードを選びます。Automation は最後まで自律実行し、Assistant は対話しながら進めます。Assistant で Use Agents を有効にすると、サブタスクを専門エージェントへ委譲します。
  3. LLM プロバイダーを選び、対象と目的を書きます。

依頼文には、対象のシステムや URL、診断の種類、範囲の制限、期待する成果物を含めます。

Assess https://target.example for common web application vulnerabilities. Focus on authentication, file handling, and injection issues. Stay within the provided target only and summarize confirmed findings with reproduction steps.

実行中・実行後にできること

機能内容
Assistant ビュー実行中のフローの状態確認、現在のタスクの停止、追加指示、残りサブタスクの修正
Files タブアップロードしたファイルはコンテナの /work/uploads/ に配置される。コンテナ内のファイルを取り出して保存できる
Templates繰り返し使う依頼文を保存し、新規フロー作成時に呼び出す
ReportWeb 表示、クリップボードへのコピー、Markdown・PDF でのダウンロード
APISettings で発行した Bearer トークンで REST・GraphQL から操作する

7 — 運用上の注意

  • 許可を得た対象だけを診断します。 EULA は、所有者から明示的な許可を得た環境でのペネトレーションテストと研究に用途を限定しています。
  • ホストの Docker ソケットをサンドボックスに渡さないでください。 エージェントが特権コンテナを起動してホスト全体を掌握できます。サンドボックスで docker が必要な場合は、TLS で保護した dind デーモンを DOCKER_INSIDE_HOST で指定します。
  • 診断データは LLM と検索サービスへ送られます。 PentAGI 自体はデータを収集しませんが、外部プロバイダーの扱いは利用者の責任です。
  • 本番公開前に設定を変えます。 COOKIE_SIGNING_SALT を乱数にし、外部アクセスするなら PUBLIC_URL と CORS を設定します。
  • フローを削除してもディスク上のファイルは残ります。 flow-{id}-data/ は手動で削除が必要です。
現時点の対象外: CALDERA のような攻撃キャンペーンを事前定義する BAS(Breach and Attack Simulation)製品ではありません。レポートの JSON 出力も対応形式に含まれていません。