Hoy trabajo con varios agentes de IA a la vez: uno refactoriza la web, otro renderiza un vídeo en SPIELBERG, otro audita una especificación. Repartidos entre ventanas de VS Code y Antigravity, el problema dejó de ser programar y pasó a ser saber cuál ha terminado, cuál me está preguntando algo y cuál lleva diez minutos esperando un permiso. AURORA es la app que estoy construyendo para resolverlo. Este artículo es un diario de obra: cuenta lo que ya funciona y lo que todavía es plan.
Estado: work in progress
Fase 1 (monitor de agentes): terminada e instalada en uso diario, con 22 de sus 23 historias cerradas y la última en prueba. Fases 2 a 8: especificadas, sin código. Aún no hay una versión publicada; actualizaré este artículo a medida que avance.
El problema: muchas sesiones, ninguna visibilidad
La visión cabe en una frase del PRD: abrir AURORA y saber en diez segundos qué agentes me necesitan, cómo va cada proyecto y qué tengo que hacer hoy.
Antes de AURORA, la información estaba repartida en tres sitios que no se hablaban: las terminales de cada agente, las notas de cada proyecto y una lista de tareas sin casa fija. Para ordenarlo, AURORA parte de cinco principios:
- Local primero, compartido solo si yo lo elijo.
- Observa, nunca decide por un agente.
- Un modelo de datos pequeño.
- Nunca escribe dentro de otros proyectos.
- Nunca bloquea a un agente.
Lo que ya funciona: una isla en el notch
La fase 1 vive donde ya miro: en el notch del MacBook. Una isla negra, compacta mientras todo va bien, que se despliega cuando un agente necesita algo. Al abrirla, cada sesión aparece agrupada por lo que me pide: te esperan, trabajando y recientes.

El resumen agrupa las sesiones por lo que necesitan de mí. Cada proyecto tiene su color, y la mascota cambia de pose según el estado.
Cuando un agente pide permiso para ejecutar un comando, la isla muestra el comando exacto y deja responder ahí mismo. Si no contesto en 60 segundos, la petición vuelve a la terminal: AURORA nunca deja a un agente colgado esperando a la app.

Responder desde la alerta: el comando a la vista, dos botones y un plazo claro antes de volver a la terminal.
Mientras un agente trabaja, la isla enseña qué está haciendo: el archivo que edita, el cambio en curso y los pasos completados.

Y cuando no estoy mirando la pantalla, una notificación del sistema con botones de acción hace el mismo trabajo:

Alrededor de eso hay piezas pequeñas que marcan la diferencia en el uso diario: silencios globales, por agente o por proyecto; un sonido propio de gato; un historial privado de siete días; arranque al iniciar sesión; nombres de sesión y subagentes, y la capacidad de abrir el editor correcto aunque la sesión corra en segundo plano.
Cómo funciona por dentro
El recorrido de un evento es corto y deliberadamente aburrido:
- El agente dispara su hook (Claude Code, Codex y la CLI de Antigravity tienen el suyo).
- Un binario pequeño,
aurora-hook, recibe el evento y lo pasa por un adaptador propio de cada agente. - El adaptador lo normaliza a un contrato común de 12 tipos de evento.
- El evento viaja por un socket local hasta la app, que mueve la sesión por una máquina de 7 estados.
La regla que manda es la quinta de los principios: nunca bloquear a un agente. El hook siempre termina con éxito, tiene un límite de 200 ms y solo transmite una respuesta después de que yo haga clic. Medido en un build de release, el percentil 95 de latencia quedó entre 7,3 y 10,6 ms, con límites de 20 ms con la app cerrada y 50 ms con la app abierta.
Dos reglas más completan el cuadro de privacidad: en la fase 1 la app no usa la red para nada, y nunca registra el contenido de los prompts.
Instalar los hooks también sigue esa filosofía. AURORA hace una copia de seguridad del archivo de configuración del agente, enseña el cambio exacto antes de escribir y solo escribe si el archivo no ha cambiado desde la vista previa. Desinstalar deja todo como estaba.
Responder desde la alerta, y dónde todavía no se puede
Antes de diseñar la interacción, un spike comprobó qué permite realmente cada agente. El resultado no es uniforme, y la interfaz lo refleja en lugar de esconderlo:
| Agente | Permisos desde la alerta | Preguntas desde la alerta |
|---|---|---|
| Claude Code | Sí | Sí |
| Codex | Sí | No: abre la sesión |
| Antigravity CLI | Sí | No: abre la sesión |
Aurora, la mascota
AURORA tiene una cara: un gato blanco de ojos negros que sale del dibujo de Kron, el gato negro de mi asistente de investigación. Tiene 19 poses que acompañan los estados de cada sesión: reposo, trabajando, pregunta, permiso, terminó, límite de uso, error, sesión caída, durmiendo…

La mascota comunica el estado antes que el texto: de un vistazo sé si me esperan o si todo va bien.
Animarla también fue una decisión de rendimiento. Con Core Animation, la mascota animada consumió 0,00 s de CPU en 10 segundos; la misma animación con TimelineView de SwiftUI gastaba entre un 2,9 % y un 4,1 %. Para algo que vive siempre encendido en el notch, esa diferencia importa.
Decisiones que ya tomé
- SwiftUI y AppKit en lugar de Tauri y React, aunque casi todo mi ecosistema es web. Una app que vive en el notch, en la barra de menús y en las notificaciones del sistema tiene que ser nativa.
- Un hook compilado, no un script. Codex aprueba los hooks por el hash del comando, así que el comando tiene que ser estable. Un binario lo es; un script que cambia, no.
- Sin proyecto de Xcode. La app se empaqueta directamente desde Swift Package Manager con un script, firmada con una identidad local estable.
- SQLite para lo que viene. Está decidido para la fase 2, pero la fase 1 no lo necesita y no lo usa.
Cómo lo estoy construyendo
AURORA es también un experimento de método. La regla es ninguna línea de código sin una especificación aprobada: cada historia empieza como un cambio especificado, el diseño vive en un DESIGN.md que los tests de tokens vigilan, y el agente que programa encadena una historia por commit y solo se detiene para pedir aprobaciones, pruebas en vivo, gasto o publicación. Es el mismo enfoque que conté en Dexter.
Cada historia se cierra conmigo probando la app instalada, no una demo. Las cifras de la fase 1, del 4 al 14 de octubre de 2026:
- 48 commits y unas 10.200 líneas de Swift entre código y tests.
- 180 tests, que crecieron de 54 a 99, 139 y 180 en cuatro días de trabajo.
- 23 historias en la épica de la fase 1 (22 cerradas), 22 cambios especificados archivados, 3 decisiones de arquitectura y 3 spikes.
Lo que viene
La hoja de ruta tiene ocho fases. Las cinco primeras están aprobadas; las tres últimas tienen la dirección aprobada y preguntas abiertas.
| Fase | Qué añade | Estado |
|---|---|---|
| F1 · Monitor de agentes | Isla, alertas, respuestas, silencios, historial | Terminada (1 historia en prueba) |
| F2 · Proyectos y fichas | Fichas que se rellenan solas desde el disco y Git | Especificada |
| F3 · Tareas | Lista, kanban, hoy y semana, modo foco | Especificada |
| F4 · CLI y MCP | Que los agentes lean y escriban tareas; capturas de Kron a la bandeja de entrada; avisos de CI y despliegues | Especificada |
| F5 · Migración | Importar mis proyectos y tareas anteriores | Especificada |
| F6 · Uso y gasto en IA | Consumo por agente con precios calculados en local | Dirección aprobada |
| F7 · Memoria de proyecto | Memoria persistente por proyecto | Dirección aprobada |
| F8 · Proyectos compartidos | Invitar a otras personas, con servidor propio | Dirección aprobada |
Quedan decisiones abiertas que no quiero fingir resueltas: si adopto el material Liquid Glass de macOS, la notarización (que exige el programa de desarrollador de pago de Apple) y ocho preguntas de las fases 6 a 8, desde dónde vivirá el servidor hasta en qué moneda se mide el gasto.
El siguiente hito es cerrar la última historia de la fase 1 con su prueba en vivo y empezar la fase 2 por su propio PRD corto. Cuando las fichas de proyecto funcionen, este artículo tendrá su segunda entrega.
Preguntas frecuentes
- ¿Qué es AURORA?
- Una app nativa de macOS que estoy construyendo para saber en diez segundos qué agentes de IA me necesitan, cómo va cada proyecto y qué tengo que hacer hoy. Hoy funciona su primera fase, el monitor de agentes.
- ¿Qué agentes de IA vigila AURORA?
- Claude Code, Codex y la CLI de Antigravity. Cada agente avisa a través de su sistema de hooks, y AURORA normaliza esos eventos en un contrato común de 12 tipos.
- ¿Puede AURORA bloquear o ralentizar a un agente?
- No. El hook siempre termina con éxito, tiene un límite de 200 ms y nunca decide por el agente. En las mediciones, el percentil 95 de latencia quedó entre 7,3 y 10,6 ms.
- ¿Se puede responder a un agente desde la alerta?
- Sí, en parte. Los permisos se responden desde la alerta en los tres agentes y las preguntas en Claude Code. En Codex y Antigravity, las preguntas abren la sesión correcta para contestar allí.
- ¿En qué estado está AURORA?
- En construcción. La fase 1 (monitor de agentes) está terminada e instalada en uso diario, con una historia aún en prueba. Las fases 2 a 8 (proyectos, tareas, CLI y MCP, migración, gasto en IA, memoria y proyectos compartidos) están especificadas, pero todavía no tienen código.



