
Piattaforma di red-team basata su AI. Agenti LLM autonomi eseguono un penetration test end-to-end all'interno di un container Kali e scrivono il report. Motore plan/act LangGraph, modelli provider-agnostic tramite LiteLLM, output PDF/JSON/SARIF. FastAPI + React.
REDCELL esegue una squadra di agenti LLM attraverso un pentest. Un orchestratore pianifica l'engagement e assegna obiettivi agli agenti esecutori, che eseguono strumenti reali all'interno di un container Kali e riportano i risultati. Osservi e guidi l'esecuzione da una console operatore: una chat che pilota l'orchestratore, un grafo degli agenti e un feed attività in tempo reale, una vista live del browser guidato dall'agente, un terminale su qualsiasi reverse shell catturata dall'agente e un report da consegnare al termine del lavoro.
I modelli sono intercambiabili tramite LiteLLM, quindi puoi puntarlo a OpenAI, Anthropic, Google, GLM, DeepSeek, Kimi, un Ollama locale o qualsiasi altro provider supportato. Ogni esecuzione salva checkpoint man mano, così un crash o un riavvio riprende da dove era rimasto.
run_command copre tutto ciò che non ha uno strumento dedicato.docker exec. Scegli localhost o un server salvato per sessione; un server remoto esegue lo stesso container via SSH con host networking.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| APIL'API non esegue gli agenti. Accoda un'esecuzione, il worker la esegue e il worker pubblica l'output sui canali Redis che l'API inoltra al browser tramite WebSocket.
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 per Python, bun per il 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
Oppure avvia tutti e tre insieme con un process manager (sono dichiarati nel
Procfile): pipx install honcho poi honcho start.
Apri http://localhost:5183 e accedi con admin / admin.
Le esecuzioni usano strumenti reali per impostazione predefinita. Aggiungi una API key di un provider in Settings e assicurati che Docker possa scaricare l'immagine Kali (martian56/kali:latest). Per fare un dry-run su output predefiniti, imposta REDCELL_RUN_MODE=sim in .env.
Applicazioni intenzionalmente vulnerabili su cui puntare REDCELL, tutte locali:
docker compose -f docker-compose.targets.yml up -d
# DVWA http://localhost:8081 · Juice Shop http://localhost:3000 · WebGoat http://localhost:8082
Esegui REDCELL su un server con le immagini pubblicate dietro un reverse proxy Caddy, così l'app web e l'API condividono una sola origine (niente CORS) e HTTPS è gestito per te. Su un server nuovo:
git clone https://github.com/martian56/redcell.git
cd redcell
./deploy.sh
Lo script installa Docker se manca, poi chiede come REDCELL sarà raggiunto:
https://tuo-dominio.Scrive le tue risposte in .env, scarica le immagini e avvia lo stack. Leggi la password admin generata con docker compose logs init-secrets, poi accedi come admin e cambiala. Per cambiare in seguito come viene raggiunto, riesegui semplicemente ./deploy.sh e scegli un'opzione diversa.
Solo le porte 80 e 443 sono pubblicate; Postgres, Redis, MinIO, l'API e l'app web restano sulla rete interna. I file memorizzati vengono trasmessi attraverso l'API, quindi l'object storage non è mai esposto. Vedi docs/DEPLOY.md per i dettagli di ciascuna modalità.
La configurazione del backend è un unico .env alla radice (vedi .env.example), letto sia dall'API sia dal worker. Quelle che vale la pena conoscere:
REDCELL_RUN_MODE: live (predefinito) o sim.REDCELL_DATABASE_URL, REDCELL_REDIS_URL, REDCELL_S3_*: infrastruttura.REDCELL_SECRET_KEY: chiave Fernet per cifrare le credenziali memorizzate. Impostane una reale prima di andare in produzione.Le API key dei provider, l'immagine di esecuzione, i guardrail di scope e il branding del report si trovano nella pagina Settings e sono memorizzati nel database, cifrati dove necessario.
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
I contributi sono benvenuti. Vedi CONTRIBUTING.md per setup, test e convenzioni, e il Code of Conduct. Segnala i problemi di sicurezza in privato tramite SECURITY.md, non con issue pubbliche.
Questo è tooling difensivo e offensivo autorizzato per professionisti della sicurezza, CTF e i tuoi laboratori. Non usarlo contro sistemi per cui non hai il permesso scritto di testare. I maintainer non sono responsabili per usi impropri.