Community Edition completa bajo Apache 2.0. Sin telemetría.Ver el código

Una ciudad separa responsabilidad, evidencia y autoridad.

Agents City no es un chat entre bots. Cada persona ejecuta sus ciudades en local, organiza agentes con workspaces y montajes y conecta sólo los asientos que deban intercambiar información.

Modelo mental

Una persona puede poseer varias ciudades locales. Otra persona mantiene las suyas en otro ordenador. Una carretera remota conecta sus asientos sin unir máquinas, workspaces ni credenciales.

propietario A · ordenador A
└── ciudad producto
    ├── asiento · preside
    ├── agente delivery · code
    │   ├── mounts/api → repo API
    │   └── mounts/web → repo web
    ├── agente research
    │   └── mounts/handbook → documentos
    └── carretera remota → propietario B/seguridad
Usuario
posee varias ciudades locales.
Ciudad
un ámbito autónomo con dominio, objetivo, conocimiento y estado.
Asiento
preside el comité y es el único actor que cruza carreteras.
Agente
es la unidad miembro; tiene nombre, tipo, rol, runtime y un workspace que puede montar varias fuentes o ninguna.
Montaje
enlace desde el workspace del agente hacia una o varias fuentes reales de trabajo.
Rol
perspectiva profesional; no concede permisos del bus.
Skill
capacidad de un repo que se reconoce en vivo o carpeta/zip que el propietario instala explícitamente para un agente compatible.
Carretera
allowlist entre asientos; da alcance, no autoridad.
Comité
proceso de posiciones, síntesis, palabra, decisión y verificación.
TERMINAL
agents-city agents list --data <city> --card <owner-card>agents-city agents mount --data <city> --agent writer --src ~/Documents/handbook

Los agentes se definen de uno en uno

El onboarding actual de main no convierte cada carpeta en un agente. Termina un especialista completo antes de ofrecer el siguiente, y también permite crear una ciudad que empiece sólo con su presidente.

  1. 1

    Nombre — cómo aparece el agente en su ventana, mapa y bus.

  2. 2

    Tipo de trabajo — code, knowledge o coordinator; describe el trabajo y el edificio, no la autoridad.

  3. 3

    Rol — su especialidad, elegida del dominio actual o de otro sin convertirlo en presidente.

  4. 4

    Todo lo que usa — cualquier combinación de repos, worktrees y carpetas de documentos montada en un workspace propio.

  5. 5

    Runtime — Claude, Codex, OpenCode, Kimi o un fallback de terminal explícito.

  6. 6

    Skills iniciales — sólo las que el propietario elige; se ofrecen únicamente cuando el motor puede leerlas.

TERMINAL
agents-city seat --agentsagents-city agents mounts --agent writer --data <city>agents-city agents mount --agent writer --src ~/Documents/handbook --data <city>

Un bus local, cuatro entregas nativas

Todos reciben sobres tipados por el mismo WebSocket local. La última milla cambia para mantener la interfaz real de cada proveedor.

RuntimeEntrega de tareaInterfaz
Claudestream-json persistentegateway city> y transcript visible
CodexWebSocket app-serverTUI oficial conectado con --remote
OpenCodeAPI HTTP/SSEgateway city> interactivo
KimiREST + WebSocketgateway city> interactivo
CLI desconocidaadaptador compatibleterminal:<comando> explícito

El comité, paso a paso

El asiento abre un comité sólo si evidencia especializada puede cambiar la decisión. No convoca todos los agentes por defecto.

  1. 01

    Brief

    pregunta, resultado, contexto, límites, definición de terminado, autoridad y participantes.

  2. 02

    Posiciones aisladas

    cada miembro responde sin ver al resto; abstenerse es válido.

  3. 03

    Síntesis

    el asiento compara evidencia, acuerdos, conflictos e incógnitas sin votar.

  4. 04

    Palabra

    un miembro pide un turno por evidencia nueva, contradicción, riesgo o dependencia.

  5. 05

    Decisión

    se registran resultado, razones, ejecutor, verificador, disenso y condiciones de reapertura.

  6. 06

    Verificación

    otro agente devuelve pass o fail; fail obliga a replanificar.

TERMINAL
agents-city committee schema openagents-city committee open --input proposal.jsonagents-city committee show <deliberation-id>

Cada deliberación conserva ACT.md para humanos, state.json para estado y events.jsonl como audit trail append-only. No se editan para saltar transiciones.

Carreteras locales y remotas

Una carretera local conecta dos ciudades de la misma máquina sin servidor externo. Para dos personas u ordenadores, cada lado acepta la invitación pública del otro y ambos asientos usan el mismo relay opcional con una credencial de owner propia. La invitación nunca contiene ese token.

TERMINAL
agents-city road invite product > product.invitation.jsonagents-city road connect research product.invitation.jsonagents-city road invite research > research.invitation.jsonagents-city road connect product research.invitation.jsonagents-city bus roster

Estado que puedes inspeccionar

~/.agents-city es un contenedor. Cada ciudad gestionada vive debajo del owner y no comparte configuración con home, producto o cliente-a.

~/.agents-city/<owner>/<city>/
├── city.yml
├── roads.json
├── <owner>.md
├── AGENTS.md
├── agents/
│   └── <agent>/
│       └── mounts/ → repos, worktrees, documents
├── domains/
├── roles/
├── deliberations/
├── units.yml
└── parcels.yml

domains/ y roles/ son Markdown editable de la ciudad. No son skills ocultas ni se sobrescriben automáticamente cuando cambias un rol.

Una puerta para cada ciudad

El main actual puede poner una ciudad en el escritorio con su nombre e icono. Crea una app de macOS, una entrada .desktop de Linux o un acceso directo real en el escritorio de Windows cuando se ejecuta bajo WSL. Todos abren la misma ciudad que abriría el CLI.

TERMINAL
agents-city shortcutagents-city shortcut product --hallagents-city shortcut --remove