
Plataforma de red-team com IA. Agentes LLM autónomos executam um teste de penetração de ponta a ponta dentro de um contentor Kali e escrevem o relatório. Motor de planeamento/ação LangGraph, modelos agnósticos de fornecedor via LiteLLM, saída em PDF/JSON/SARIF. FastAPI + React.
O REDCELL conduz uma equipe de agentes LLM por um teste de intrusão. Um orquestrador planeja o engajamento e entrega objetivos aos agentes executores, que rodam ferramentas reais dentro de um contêiner Kali e reportam de volta. Você acompanha e direciona a execução a partir de um console de operador: um chat que comanda o orquestrador, um grafo de agentes e feed de atividades ao vivo, uma visualização ao vivo do navegador que o agente controla, um terminal em qualquer reverse shell que o agente capture e um relatório para entregar quando o trabalho terminar.
Os modelos são plugáveis via LiteLLM, então você pode apontá-lo para OpenAI, Anthropic, Google, GLM, DeepSeek, Kimi, um Ollama local ou qualquer outra coisa que ele suporte. Cada execução faz checkpoint conforme avança, então uma queda ou reinício retoma de onde parou.
run_command cobre qualquer coisa sem uma ferramenta dedicada.docker exec. Escolha localhost ou um servidor salvo por sessão; um servidor remoto roda o mesmo contêiner via SSH com rede do 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| APIA API não executa agentes. Ela enfileira uma execução, o worker a executa, e o worker publica a saída em canais do Redis que a API retransmite ao navegador via WebSockets.
Python 3.12, FastAPI, SQLAlchemy assíncrono + asyncpg, Alembic, arq, LangGraph, LiteLLM, ReportLab, PostgreSQL, Redis, MinIO, asyncssh. Frontend: React 18, Vite, TypeScript, Tailwind, TanStack Query, xterm. Ferramentas: uv para Python, bun para o 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
Ou inicie os três de uma vez com um gerenciador de processos (eles estão declarados no
Procfile): pipx install honcho e depois honcho start.
Abra http://localhost:5183 e entre com admin / admin.
As execuções rodam ferramentas reais por padrão. Adicione uma chave de API de provedor em Settings e certifique-se de que o Docker consegue baixar a imagem Kali (martian56/kali:latest). Para simular contra saída pré-definida, defina REDCELL_RUN_MODE=sim em .env.
Aplicações intencionalmente vulneráveis para apontar o REDCELL, todas locais:
docker compose -f docker-compose.targets.yml up -d
# DVWA http://localhost:8081 · Juice Shop http://localhost:3000 · WebGoat http://localhost:8082
Rode o REDCELL em um servidor com as imagens publicadas atrás de um proxy reverso Caddy, para que o aplicativo web e a API compartilhem uma origem (sem CORS) e o HTTPS seja tratado para você. Em um servidor novo:
git clone https://github.com/martian56/redcell.git
cd redcell
./deploy.sh
O script instala o Docker se estiver faltando e então pergunta como o REDCELL será acessado:
https://seu-dominio.Ele grava suas respostas em .env, baixa as imagens e inicia a stack. Leia a senha de admin gerada com docker compose logs init-secrets, então entre como admin e altere-a. Para mudar como ele é acessado depois, basta rodar ./deploy.sh novamente e escolher uma opção diferente.
Apenas as portas 80 e 443 são publicadas; Postgres, Redis, MinIO, a API e o aplicativo web permanecem na rede interna. Os arquivos armazenados são transmitidos pela API, então o armazenamento de objetos nunca é exposto. Veja docs/DEPLOY.md para os detalhes de cada modo.
A configuração do backend é um único .env na raiz (veja .env.example), lido tanto pela API quanto pelo worker. As que vale a pena conhecer:
REDCELL_RUN_MODE: live (padrão) ou sim.REDCELL_DATABASE_URL, REDCELL_REDIS_URL, REDCELL_S3_*: infraestrutura.REDCELL_SECRET_KEY: chave Fernet para criptografar credenciais armazenadas. Defina uma real antes de ir para produção.Chaves de API de provedores, a imagem de execução, guardrails de escopo e a marca do relatório ficam na página Settings e são armazenados no banco de dados, criptografados onde necessário.
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
Contribuições são bem-vindas. Veja CONTRIBUTING.md para configuração, testes e convenções, e o Código de Conduta. Relate problemas de segurança de forma privada através de SECURITY.md, não em issues públicas.
Esta é uma ferramenta defensiva e ofensiva autorizada para profissionais de segurança, CTFs e seus próprios laboratórios. Não a use contra sistemas para os quais você não tem permissão escrita de teste. Os mantenedores não são responsáveis por uso indevido.