依頼を分解する
UI または API でフローを作ると、primary_agent がタスクに分け、generator がサブタスクを作ります。
Penetration testing Artificial General Intelligence / vxcontrol/pentagi
PentAGI は、自前のサーバーで動かすペネトレーションテスト用のマルチエージェントシステムです。対象と目的を自然言語で伝えると、役割の異なる AI エージェントが作業を計画し、隔離された Docker サンドボックス内で nmap・Metasploit・sqlmap などのツールを実行し、結果をレポートにまとめます。
利用する LLM は選べます。クラウドの各社 API、OpenAI 互換のゲートウェイ、Ollama や vLLM のローカルモデルに対応します。
| コンポーネント | 役割 | 構成 |
|---|---|---|
pentagi | API サーバー(Go)と Web UI(React)。フローの実行とサンドボックス管理 | 必須 |
pgvector | PostgreSQL + pgvector。コマンド出力・推論・長期記憶を保存 | 必須 |
scraper | Web から情報を集める内蔵ブラウザー | 必須 |
| Graphiti + Neo4j | ホスト・サービス・発見事項の関係を知識グラフとして保持 | 任意(docker-compose-graphiti.yml) |
| Langfuse | LLM 呼び出しの分析 | 任意(docker-compose-langfuse.yml) |
| Grafana / VictoriaMetrics / Loki / Jaeger | システムの監視 | 任意(docker-compose-observability.yml) |
言語: Go(バックエンド)· TypeScript / React(フロントエンド)· MIT ライセンス + EULA · 開発: VXControl
1 つのフローを、計画・実行・補助の役割に分かれたエージェントが処理します。役割の一覧はバックエンドの MsgchainType 列挙型で定義されています。
| 区分 | エージェント | 担当 |
|---|---|---|
| 統括 | primary_agent | フローをタスクに分け、サブタスクを専門エージェントへ委譲する |
| 計画 | generator / refiner | タスクのサブタスクを作り、サブタスク完了ごとに残りを計画し直す |
| 実行 | pentester / coder / installer / searcher | 攻撃ツールの実行、スクリプト作成、ツール導入、Web 検索 |
| 記憶・文脈 | memorist / enricher / summarizer | 過去の結果の検索、文脈の補強、長い会話履歴の要約 |
| 監督・修復 | adviser / reflector / tool_call_fixer | 行き詰まりへの助言、ツール呼び出しに失敗したときの立て直し |
| 出力・対話 | reporter / assistant | レポートの作成、利用者との対話 |
PentAGI では 1 回の診断依頼を「フロー」と呼びます。
UI または API でフローを作ると、primary_agent がタスクに分け、generator がサブタスクを作ります。
サブタスクは 1 つずつ実行されます。専門エージェントがフロー専用のコンテナ内でターミナル・ファイル・ブラウザー・検索のツールを呼びます。
サブタスクが終わるたびに refiner が残りの計画を更新します。結果と推論は PostgreSQL に保存され、UI へ逐次配信されます。
| 仕組み | 動作 | 既定 |
|---|---|---|
| ツール呼び出し上限 | 統括・実行系は MAX_GENERAL_AGENT_TOOL_CALLS(100)、補助系は MAX_LIMITED_AGENT_TOOL_CALLS(20)で打ち切る | 常に有効 |
| Reflector | LLM が 3 回続けてツール呼び出しを生成できないとき、done や ask での終了へ導く | 常に有効 |
| 実行監視(Beta) | 同じツールの繰り返し(5 回)や呼び出し総数(10 回)を検知し、adviser が別の方針を助言する | EXECUTION_MONITOR_ENABLED=false |
| タスク計画(Beta) | 専門エージェントの作業前に 3〜7 手順の計画を作り、サブタスクの範囲外へ広がるのを防ぐ | AGENT_PLANNING_STEP_ENABLED=false |
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.env を作成し、LLM プロバイダーと検索エンジンを設定します。起動後、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依頼文には、対象のシステムや 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 | 繰り返し使う依頼文を保存し、新規フロー作成時に呼び出す |
| Report | Web 表示、クリップボードへのコピー、Markdown・PDF でのダウンロード |
| API | Settings で発行した Bearer トークンで REST・GraphQL から操作する |
docker が必要な場合は、TLS で保護した dind デーモンを DOCKER_INSIDE_HOST で指定します。COOKIE_SIGNING_SALT を乱数にし、外部アクセスするなら PUBLIC_URL と CORS を設定します。flow-{id}-data/ は手動で削除が必要です。