
Plataforma de red-team con IA. Agentes LLM autónomos ejecutan una prueba de penetración de principio a fin dentro de un contenedor Kali y redactan el informe. Motor de planificación/acción LangGraph, modelos agnósticos al proveedor mediante LiteLLM, salida en PDF/JSON/SARIF. FastAPI + React.
REDCELL ejecuta un equipo de agentes LLM a lo largo de una prueba de penetración. Un orquestador planifica el encargo y entrega objetivos a los agentes ejecutores, que ejecutan herramientas reales dentro de un contenedor Kali e informan de vuelta. Tú observas y diriges la ejecución desde una consola de operador: un chat que controla al orquestador, un grafo de agentes y un feed de actividad en vivo, una vista en vivo del navegador que maneja el agente, una terminal sobre cualquier reverse shell que capture el agente y un informe para entregar cuando el trabajo esté hecho.
Los modelos son intercambiables a través de LiteLLM, así que puedes apuntarlo a OpenAI, Anthropic, Google, GLM, DeepSeek, Kimi, un Ollama local o cualquier otra cosa que soporte. Cada ejecución guarda puntos de control a medida que avanza, así que un fallo o un reinicio continúa donde lo dejó.
run_command cubre cualquier cosa que no tenga una herramienta dedicada.docker exec. Elige localhost o un servidor guardado por sesión; un servidor remoto ejecuta el mismo contenedor por SSH con red de host.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| APILa API no ejecuta agentes. Encola una ejecución, el worker la ejecuta, y el worker publica la salida en canales de Redis que la API retransmite al navegador por WebSockets.
Python 3.12, FastAPI, SQLAlchemy asíncrono + asyncpg, Alembic, arq, LangGraph, LiteLLM, ReportLab, PostgreSQL, Redis, MinIO, asyncssh. Frontend: React 18, Vite, TypeScript, Tailwind, TanStack Query, xterm. Herramientas: uv para Python, bun para el 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
O inicia los tres a la vez con un gestor de procesos (están declarados en el
Procfile): pipx install honcho y luego honcho start.
Abre http://localhost:5183 e inicia sesión con admin / admin.
Las ejecuciones ejecutan herramientas reales por defecto. Añade una clave de API de proveedor en Settings y asegúrate de que Docker puede descargar la imagen Kali (martian56/kali:latest). Para hacer una ejecución en seco contra salida predefinida, define REDCELL_RUN_MODE=sim en .env.
Aplicaciones intencionadamente vulnerables a las que apuntar REDCELL, todas locales:
docker compose -f docker-compose.targets.yml up -d
# DVWA http://localhost:8081 · Juice Shop http://localhost:3000 · WebGoat http://localhost:8082
Ejecuta REDCELL en un servidor con las imágenes publicadas detrás de un proxy inverso Caddy, para que la aplicación web y la API compartan un mismo origen (sin CORS) y HTTPS se gestione por ti. En un servidor nuevo:
git clone https://github.com/martian56/redcell.git
cd redcell
./deploy.sh
El script instala Docker si falta y luego pregunta cómo se accederá a REDCELL:
https://tu-dominio.Escribe tus respuestas en .env, descarga las imágenes e inicia el stack. Lee la contraseña de administrador generada con docker compose logs init-secrets, luego inicia sesión como admin y cámbiala. Para cambiar cómo se accede más adelante, simplemente vuelve a ejecutar ./deploy.sh y elige una opción diferente.
Solo se publican los puertos 80 y 443; Postgres, Redis, MinIO, la API y la aplicación web permanecen en la red interna. Los archivos almacenados se transmiten a través de la API, así que el almacenamiento de objetos nunca queda expuesto. Consulta docs/DEPLOY.md para los detalles de cada modo.
La configuración del backend es un único .env raíz (ver .env.example), leído tanto por la API como por el worker. Los que conviene conocer:
REDCELL_RUN_MODE: live (por defecto) o sim.REDCELL_DATABASE_URL, REDCELL_REDIS_URL, REDCELL_S3_*: infraestructura.REDCELL_SECRET_KEY: clave Fernet para cifrar las credenciales almacenadas. Define una real antes de pasar a producción.Las claves de API de proveedores, la imagen de ejecución, las barreras de alcance y la marca del informe viven en la página Settings y se almacenan en la base de datos, cifradas donde sea necesario.
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
Las contribuciones son bienvenidas. Consulta CONTRIBUTING.md para la configuración, las pruebas y las convenciones, y el Código de Conducta. Reporta problemas de seguridad de forma privada a través de SECURITY.md, no en issues públicos.
Esto es tooling defensivo y ofensivo autorizado para profesionales de seguridad, CTFs y tus propios laboratorios. No lo uses contra sistemas para los que no tengas permiso por escrito de probar. Los mantenedores no son responsables del mal uso.