
AIレッドチームプラットフォーム。自律型LLMエージェントがKaliコンテナ内でペネトレーションテストをエンドツーエンドで実行し、レポートを作成します。LangGraphのplan/actエンジン、LiteLLM経由のプロバイダー非依存モデル、PDF/JSON/SARIF出力。FastAPI + React。
REDCELLはLLMエージェントのチームにペネトレーションテストを実行させます。オーケストレーターがエンゲージメントを計画し、実行エージェントに目標を引き渡します。実行エージェントはKaliコンテナ内で実際のツールを実行し、結果を報告します。オペレーターコンソールから実行を監視・操作できます。オーケストレーターを操作するチャット、ライブのエージェントグラフとアクティビティフィード、エージェントが操作するブラウザのライブビュー、エージェントがキャッチしたリバースシェル上のターミナル、そして作業完了時に引き渡すレポートが含まれます。
モデルはLiteLLMを通じてプラグイン可能で、OpenAI、Anthropic、Google、GLM、DeepSeek、Kimi、ローカルのOllama、その他サポートされている任意のものを指定できます。すべての実行は進行中にチェックポイントを保存するため、クラッシュや再起動が発生しても中断したところから再開できます。
run_commandがカバーします。docker execを介してKaliコンテナ内で実行されます。セッションごとにlocalhostまたは保存済みサーバーを選択できます。リモートサーバーはSSH経由で同じコンテナをホストネットワーキングで実行します。flowchart LR
UI["Operator console<br/>React + Vite"] -->|REST + WebSocket| API["FastAPI"]
API --> PG[(PostgreSQL)]
API --> RS[(Redis<br/>pub/sub + queue)]
API --> S3[(MinIO<br/>files & reports)]
RS --> W["Worker (arq)"]
W --> ENG["Engine<br/>LangGraph + LiteLLM"]
ENG -->|docker exec| KALI["Kali container<br/>local or remote over SSH"]
KALI --> TGT["Targets"]
W -->|events / chat / shell| RS
RS -->|stream| APIAPIはエージェントを実行しません。実行をキューに入れ、ワーカーがそれを実行し、ワーカーが出力をRedisチャネルに発行し、APIがそれをWebSocket経由でブラウザに中継します。
Python 3.12、FastAPI、async SQLAlchemy + asyncpg、Alembic、arq、LangGraph、LiteLLM、ReportLab、PostgreSQL、Redis、MinIO、asyncssh。フロントエンド: React 18、Vite、TypeScript、Tailwind、TanStack Query、xterm。ツール: Pythonにはuv、フロントエンドにはbun。
# 1. infrastructure (Postgres, Redis, MinIO)
docker compose -f docker-compose.dev.yml up -d
# 2. Python deps, database, and seed data
uv sync --group live
uv run rc db upgrade
uv run rc seed # admin user, provider catalog, buckets
# 3. copy the env template
cp .env.example .env
# 4. run the three processes (separate terminals)
cd apps/api && uv run uvicorn app.main:app --host 127.0.0.1 --port 8080
cd apps/worker && uv run arq worker.settings.WorkerSettings
cd apps/web && bun install && bun run dev
または、プロセスマネージャーで3つすべてを一度に起動します(Procfileで宣言されています): pipx install honcho の後に honcho start。
http://localhost:5183 を開き、admin / admin でサインインします。
実行はデフォルトで実際のツールを実行します。設定でプロバイダーのAPIキーを追加し、DockerがKaliイメージ(martian56/kali:latest)をプルできることを確認してください。代わりに定型出力に対してドライランするには、.envでREDCELL_RUN_MODE=simを設定します。
REDCELLを向けるための意図的に脆弱なアプリ、すべてローカル:
docker compose -f docker-compose.targets.yml up -d
# DVWA http://localhost:8081 · Juice Shop http://localhost:3000 · WebGoat http://localhost:8082
公開イメージを使ってサーバー上でREDCELLをCaddyリバースプロキシの背後で実行し、WebアプリとAPIが1つのオリジンを共有し(CORSなし)、HTTPSが自動的に処理されるようにします。新規サーバー上で:
git clone https://github.com/martian56/redcell.git
cd redcell
./deploy.sh
スクリプトはDockerがなければインストールし、REDCELLへの到達方法を尋ねます:
https://your-domainを提供します。回答を.envに書き込み、イメージをプルし、スタックを起動します。生成された管理者パスワードはdocker compose logs init-secretsで確認し、adminとしてサインインして変更してください。後で到達方法を変更するには、./deploy.shを再実行して別のオプションを選ぶだけです。
公開されるのはポート80と443のみで、Postgres、Redis、MinIO、API、Webアプリは内部ネットワークに留まります。保存されたファイルはAPI経由でストリーミングされるため、オブジェクトストレージが公開されることはありません。各モードの詳細はdocs/DEPLOY.mdを参照してください。
バックエンドの設定は1つのルート.env(.env.exampleを参照)で、APIとワーカーの両方が読み取ります。知っておくべきもの:
REDCELL_RUN_MODE: live(デフォルト)またはsim。REDCELL_DATABASE_URL、REDCELL_REDIS_URL、REDCELL_S3_*: インフラストラクチャ。REDCELL_SECRET_KEY: 保存された認証情報を暗号化するためのFernetキー。本番環境に移行する前に実際のものを設定してください。プロバイダーのAPIキー、実行イメージ、スコープガードレール、レポートのブランディングは設定ページにあり、データベースに保存され、必要な箇所は暗号化されます。
apps/
api/ FastAPI: routers, WebSocket streams, auth
worker/ arq worker: runs engagements and report generation
web/ React operator console
packages/
core/redcell_core/ engine, models, repositories, storage, bus, reporting
api-client/ the single typed client the UI talks to (mock + HTTP)
docker/ Kali execution image, web/api images, Caddy config
docker-compose.yml full stack behind a Caddy reverse proxy (self-host)
docker-compose.dev.yml Postgres + Redis + MinIO
docker-compose.targets.yml local vulnerable targets
deploy.sh interactive self-host deploy
コントリビューションを歓迎します。セットアップ、テスト、規約についてはCONTRIBUTING.mdを、行動規範も参照してください。セキュリティ問題は公開イシューではなく、SECURITY.mdを通じて非公開で報告してください。
これはセキュリティ専門家、CTF、自分のラボ向けの防御的および許可された攻撃的ツールです。テストの書面による許可がないシステムに対して使用しないでください。メンテナーは誤用に対して責任を負いません。