Una petición entra a la ciudad.
Sale un solo Decreto.

Atlantis es un orquestador multi-agente config-driven para Claude Code: reparte tu pedido entre especialistas con contexto fresco, lo audita con guardianes siempre-on, filtra los falsos bloqueantes con un juicio adversarial y reconcilia todo en un veredicto.

MITClaude Code · Workflowfuente TypeScriptun solo archivo0 deps de runtimeNode ≥ 20

🔱 Los seis actos

Cada acto tiene su nombre y su oficio. Vos configurás el roster; el motor no se toca.

Diagrama de los seis actos de Atlantis
ACTO 1

El Oráculo

Un router LLM lee la petición, la reparte en lanes por experto y clasifica la complejidad (trivial → corriente rápida).

ACTO 2

Los Heraldos

(Opcional) Registran la iniciativa — ticket, card, convención de rama — antes de que se escriba una línea.

ACTO 3

Los Artesanos

Un agente experto por lane, en paralelo, cada uno aislado en su propio worktree off origin/main.

ACTO 4

Los Guardianes

Auditan lo despachado desde sus lentes (seguridad, docs, lo que definas) — siempre-on y condicionales. No tocan código.

ACTO 5

Los tres Jueces

Minos · Radamantis · Éaco pesan cada 🔴 con lentes distintas (repro, autoridad, severidad); sobrevive solo por mayoría.

ACTO 6

El Decreto

Funde salidas y hallazgos confirmados en un veredicto: ✅ hecho · 🔴 bloqueante · 🟡 pendiente · → próximo paso.

🌊 Tres corrientes para no pagar de más

Corriente rápidapetición trivial de ≤1 lane → se resuelve en línea, sin Heraldos, sin worktrees, sin Guardianes.
Marea bajadry-run para probar la ciudad sin side-effects: los Artesanos solo reportan qué harían.
El juiciocada 🔴 pasa por los tres Jueces que intentan refutarlo; un falso bloqueante no llega a frenarte.

Uso en 60 segundos

Cloná el repo (o copiá atlantis.mjs al tuyo), definí tu roster, y corré la ciudad con la tool Workflow de Claude Code.

// 1. Tu roster, en src/workflow/config.ts (o el bloque CONFIG del .mjs emitido)
profiles: {
  'agent-front': 'frontend: componentes, navegación, bugs visuales',
  'agent-back':  'backend: rutas API, dominio, persistencia',
  'agent-security': 'seguridad: auth, PII, secrets, prompt-injection',
}

// 2. Corré la ciudad
Workflow({ scriptPath: 'atlantis.mjs', args: 'arreglá el botón de volver del mapa' })

// 3. Marea baja (ensayo sin side-effects)
Workflow({ scriptPath: 'atlantis.mjs', args: { request: 'tu pedido', dryRun: true } })

🏛️ La ciudad también vive en otros puertos

💬 Slack

Mencionás a Atlantis en un hilo, la ciudad delibera y el Decreto vuelve al hilo; responder continúa la tarea con el contexto vivo. Con límite de privacidad por diseño: solo ve lo que pasa en Slack. → slack/

🚀 Gemini / Antigravity

Skill nativa y harness CLI de simulación para validar tu config y el flujo de los seis actos sin gastar tokens. → integrations/antigravity/

🛠️ CLI atlantis

atlantis config — wizard interactivo del roster que nunca toca un when escrito a mano. atlantis doctor — valida que tus perfiles existan como agentes. atlantis update — trae el motor más nuevo sin pisar tu config. → src/cli/

🧪 Verificable por diseño

npm run verify: typecheck estricto, build que garantiza el contrato del sandbox de Workflow, un smoke test del atlantis.mjs emitido y un test de integración del CLI, todo contra los artefactos reales.

⚖️ El humano decide lo irreversible

Atlantis prepara branches y reconcilia veredictos, pero no abre PRs ni mergea: mergear, deployar y publicar siguen siendo tuyos.