
KI-Red-Team-Plattform. Autonome LLM-Agenten führen einen Penetrationstest Ende-zu-Ende in einem Kali-Container durch und verfassen den Bericht. LangGraph-Plan/Act-Engine, anbieterunabhängige Modelle über LiteLLM, PDF/JSON/SARIF-Ausgabe. FastAPI + React.
REDCELL führt ein Team von LLM-Agenten durch einen Pentest. Ein Orchestrator plant den Auftrag und übergibt Ziele an Executor-Agenten, die echte Werkzeuge in einem Kali-Container ausführen und zurückmelden. Du beobachtest und steuerst den Lauf über eine Betreiberkonsole: ein Chat, der den Orchestrator steuert, ein Live-Agentengraph und Aktivitätsfeed, eine Live-Ansicht des Browsers, den der Agent steuert, ein Terminal auf jeder Reverse Shell, die der Agent abfängt, und ein Bericht zum Übergeben, wenn die Arbeit getan ist.
Modelle sind über LiteLLM austauschbar, sodass du es auf OpenAI, Anthropic, Google, GLM, DeepSeek, Kimi, ein lokales Ollama oder alles andere richten kannst, das es unterstützt. Jeder Lauf wird unterwegs gecheckpointet, sodass ein Absturz oder Neustart dort weitermacht, wo er aufgehört hat.
run_command deckt alles ab, wofür es kein dediziertes Werkzeug gibt.docker exec. Wähle pro Sitzung localhost oder einen gespeicherten Server; ein Remote-Server führt denselben Container über SSH mit Host-Netzwerk aus.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| APIDie API führt keine Agenten aus. Sie reiht einen Lauf in die Warteschlange ein, der Worker führt ihn aus, und der Worker veröffentlicht Ausgaben auf Redis-Kanälen, die die API über WebSockets an den Browser weiterleitet.
Python 3.12, FastAPI, async SQLAlchemy + asyncpg, Alembic, arq, LangGraph, LiteLLM, ReportLab, PostgreSQL, Redis, MinIO, asyncssh. Frontend: React 18, Vite, TypeScript, Tailwind, TanStack Query, xterm. Tooling: uv für Python, bun für das Frontend.
# 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
Oder starte alle drei auf einmal mit einem Prozessmanager (sie sind in der
Procfile deklariert): pipx install honcho, dann honcho start.
Öffne http://localhost:5183 und melde dich mit admin / admin an.
Läufe führen standardmäßig echte Werkzeuge aus. Füge einen Provider-API-Schlüssel in den Einstellungen hinzu und stelle sicher, dass Docker das Kali-Image ziehen kann (martian56/kali:latest). Um stattdessen einen Trockenlauf gegen vorgefertigte Ausgabe zu machen, setze REDCELL_RUN_MODE=sim in .env.
Absichtlich verwundbare Apps, auf die du REDCELL richten kannst, alle lokal:
docker compose -f docker-compose.targets.yml up -d
# DVWA http://localhost:8081 · Juice Shop http://localhost:3000 · WebGoat http://localhost:8082
Betreibe REDCELL auf einem Server mit den veröffentlichten Images hinter einem Caddy-Reverse-Proxy, sodass Web-App und API einen Origin teilen (kein CORS) und HTTPS für dich erledigt wird. Auf einem frischen Server:
git clone https://github.com/martian56/redcell.git
cd redcell
./deploy.sh
Das Skript installiert Docker, falls es fehlt, und fragt dann, wie REDCELL erreicht wird:
https://your-domain.Es schreibt deine Antworten in .env, zieht die Images und startet den Stack. Lies das generierte Admin-Passwort mit docker compose logs init-secrets und melde dich dann als admin an und ändere es. Um später zu ändern, wie es erreicht wird, führe einfach ./deploy.sh erneut aus und wähle eine andere Option.
Nur die Ports 80 und 443 werden veröffentlicht; Postgres, Redis, MinIO, die API und die Web-App bleiben im internen Netzwerk. Gespeicherte Dateien werden durch die API gestreamt, sodass Objektspeicher nie exponiert wird. Siehe docs/DEPLOY.md für die Details der einzelnen Modi.
Die Backend-Konfiguration ist eine Root-.env (siehe .env.example), gelesen von sowohl der API als auch dem Worker. Die, die man kennen sollte:
REDCELL_RUN_MODE: live (Standard) oder sim.REDCELL_DATABASE_URL, REDCELL_REDIS_URL, REDCELL_S3_*: Infrastruktur.REDCELL_SECRET_KEY: Fernet-Schlüssel zum Verschlüsseln gespeicherter Anmeldedaten. Setze einen echten, bevor du in die Produktion gehst.Provider-API-Schlüssel, das Ausführungs-Image, Scope-Guardrails und Report-Branding leben auf der Einstellungsseite und werden in der Datenbank gespeichert, verschlüsselt, wo es nötig ist.
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
Beiträge sind willkommen. Siehe CONTRIBUTING.md für Setup, Tests und Konventionen sowie den Code of Conduct. Melde Sicherheitsprobleme privat über SECURITY.md, nicht über öffentliche Issues.
Dies ist defensives und autorisiert-offensives Tooling für Sicherheitsfachleute, CTFs und deine eigenen Labs. Verwende es nicht gegen Systeme, für deren Test du keine schriftliche Erlaubnis hast. Die Maintainer sind nicht für Missbrauch verantwortlich.