UNO
EN DESARROLLO
Python · Claude Code · Git · Seguridad de aplicaciones · 2026
UNO es un orquestador local para repositorios git. Le describo una tarea, un planificador la divide en pasos con roles (desarrollador, revisor de código, tester, revisor de validación…) y yo apruebo el plan antes de que se ejecute nada. Cada agente trabaja aislado, sus cambios se revisan y se comprueban automáticamente, y nada llega a mi código sin mi aprobación final. Lo uso a diario en mis propios proyectos.
El reto
Dar autonomía a los agentes de IA sin perder el control. El principio de diseño: cada agente es un trabajador no confiable.
Cómo funciona
- Plan con aprobación: el planificador propone pasos con rol, archivos permitidos, dependencias, modelo y esfuerzo, y justifica cada elección. Yo puedo cambiar cualquier cosa antes de aprobar.
- Ejecución aislada: cada paso corre en su propio git worktree y rama; los pasos independientes van en paralelo.
- Revisión y correcciones: los revisores devuelven hallazgos clasificados por severidad y tipo (defecto o evidencia). Los defectos medios o altos vuelven automáticamente al desarrollador, con un límite de rondas.
- Comprobaciones deterministas: UNO ejecuta él mismo los comandos de verificación del proyecto (build, tests) tras cada paso y sobre la rama de integración; el resultado es la evidencia que ven los revisores.
- Fusión humana: todo se integra en una rama aparte. Veo el diff consolidado, los hallazgos y las comprobaciones, y solo yo fusiono.
Controles de seguridad
- Mínimo privilegio: los agentes solo leen y editan archivos; sin shell, sin red y sin servidores MCP.
- Compuerta determinista: cada paso declara qué archivos puede tocar; los cambios fuera de su alcance, en rutas protegidas (CI, configuración, dependencias) o con posibles secretos esperan a mi revisión.
- Comandos fuera del alcance del modelo: las comprobaciones las define el usuario y las ejecuta UNO como lista de argumentos, sin shell, con un entorno sin claves ni tokens, timeout por grupo de procesos y salida redactada.
- Inyección de prompts: los artefactos entre agentes viajan como datos etiquetados como no fiables, y los roles que propone el planificador nunca pueden ampliar los permisos de los roles confirmados.
- Confianza en la configuración: roles, contexto y comprobaciones se verifican por hash antes de cada ejecución (protección TOCTOU); cualquier cambio exige una nueva confirmación.
- Interfaz solo local: token por arranque, validación de Origin/Host (CSRF y DNS rebinding) y una CSP estricta.
Funciones
- Prompt Studio: convierte una idea corta en un prompt estructurado (objetivo, alcance, tareas, tests, criterios de aceptación) con un linter determinista y una biblioteca versionada.
- Roles configurables: cada proyecto define sus roles, rutas protegidas y comprobaciones en una carpeta .uno/ revisada como código.
- Interfaz en español e inglés: chat con el orquestador, agentes en directo, panel de revisión y registro de eventos.
Verificación
- Tests: más de 200 tests unitarios y un smoke test que ataca el servidor en marcha.
- Pruebas adversarias: con agentes reales: se bloqueó a un agente fuera de su alcance y un intento de inyección no tuvo efecto.
- Uso real: pilotos en una aplicación Python/Next.js y en esta web, con cambios fusionados después de pasar las comprobaciones de UNO.
- Modelo de amenazas: documentado, con los riesgos residuales.
Proceso
Diseñé la arquitectura, el modelo de amenazas y los controles, y lo construí dirigiendo a Claude Code mediante PRs revisadas una a una. Es un proyecto privado en desarrollo activo.