La primera necesidad parecía mínima: mostrar cuánto tiempo había pasado desde el último incidente. Pero un número aislado no explicaba qué había ocurrido, si el problema seguía abierto ni qué parte del entorno estaba afectada.
El producto terminó convirtiéndose en una pequeña central operativa: continuidad, bitácora de incidentes, métricas y salud de varios servicios en una sola superficie.
La arquitectura que lo hizo posible
Capa
Tecnología
Responsabilidad
Interfaz
Astro + Tailwind CSS
Sitio estático rápido, responsive y fácil de desplegar
Dominio
TypeScript
Cálculo de continuidad, estados, normalización y fusión de señales
Respaldo local
localStorage
Conservar acciones cuando la capa remota no responde
Integración
n8n
Persistencia de incidentes y ejecución de comprobaciones
Persistencia
Data Tables
Sincronización del historial entre dispositivos
Entrega
Hosting estático con políticas de seguridad
Publicación del frontend sin secretos embebidos
La decisión central fue mantener el navegador como consumidor de un contrato acotado. Los accesos autenticados y las credenciales quedaron del lado de la capa de integración, que sólo publicaba estados normalizados.
De un timestamp a un ciclo de vida
Un incidente no es solamente una fecha de reinicio. Tiene inicio real, momento de reporte, estado, cierre y una nota opcional de resolución.
Modelarlo de esa manera resolvió casos que el contador simple escondía:
una incidencia abierta detiene la continuidad y evita un falso “todo bien”;
varias incidencias pueden superponerse;
el nuevo período sano comienza después del último cierre efectivo;
registros antiguos pueden seguir leyéndose sin reescribir el historial;
un corte de conectividad no obliga a perder el alta o el cierre local.
La interfaz pasó de celebrar un número a representar honestamente el estado operativo.
Salud progresiva, no una espera monolítica
Las comprobaciones se dividieron por grupos y el frontend las solicitó en paralelo. Cada respuesta parcial se fusiona con el estado existente sin borrar servicios que esa rama no observó.
Esto permitió que una caída conocida apareciera apenas se detectaba, aun cuando otras fuentes siguieran demoradas. También exigió reglas explícitas para evitar carreras, datos viejos y estados transitorios engañosos.
Semántica antes que color
No toda respuesta HTTP exitosa prueba que el servicio esté sano. Un frontend puede devolver su HTML genérico ante una ruta inexistente y producir un falso verde.
Por eso el tablero distingue:
operativo: la señal esperada respondió y su contenido es válido;
degradado: el proceso está vivo, pero todavía no puede atender correctamente;
caído: existe evidencia concreta de indisponibilidad;
no verificable: hubo respuesta, pero no demuestra la condición buscada;
sin datos o comprobando: todavía no existe una lectura suficiente.
Separar liveness de readiness evitó alertar como caída cada reinicio normal. Validar el cuerpo además del código HTTP evitó checks verdes que en realidad no medían nada.
Seguridad y resiliencia como parte del producto
El endurecimiento no quedó para el final:
el frontend nunca recibe credenciales de proveedores;
una política CSP estricta limita la ejecución inesperada;
las dependencias se auditan y actualizan;
los endpoints aceptados se normalizan y restringen;
los estados parciales conservan la última observación válida;
las animaciones respetan preferencias de movimiento reducido;
el área con scroll puede recorrerse con teclado.
Los workflows también se trataron como código: se verificaron sus nodos, contratos y recorridos para detectar errores de generación, grupos duplicados y respuestas cruzadas.
Beneficios obtenidos
una lectura común para continuidad, incidentes y dependencias;
detección más temprana gracias a respuestas progresivas;
menos falsos positivos y falsos verdes;
continuidad de uso ante fallas temporales de la integración;
una frontera clara entre visualización pública y acceso autenticado;
comportamiento comprobable incluso cuando la automatización vive fuera del repositorio tradicional.
La lección transferible
La observabilidad útil no consiste en sumar checks. Consiste en definir qué prueba cada señal, qué no puede probar y cómo se combinan resultados incompletos sin mentirle al operador.
El contador siguió siendo la imagen central, pero el verdadero producto pasó a ser el modelo de continuidad que había detrás.
Caso basado en una implementación real. Se removieron nombres, dominios, endpoints, cantidades, proveedores internos y datos operativos identificables.
Agent Development Environment: entorno pensado para ejecutar, organizar y supervisar agentes de desarrollo.
Agent-to-agent
Delegación entre agentes completos que trabajan en conversaciones y entornos separados, intercambian instrucciones o archivos y devuelven resultados.
Agente
Sistema que combina un modelo, instrucciones y herramientas para realizar tareas dentro de un alcance. Su capacidad de actuar depende del harness, el entorno y los permisos.
Amp
Entorno de desarrollo agéntico que reúne modelos, threads, máquinas remotas, Git y coordinación bajo una misma plataforma.
Árbol de procesos
Organización de circuitos de negocio y las funciones que integran cada rama. Permite acotar el análisis y definir evidencia verificable para una unidad de trabajo.
Benchmark
Evaluación con tareas, condiciones y una regla de puntuación definidas. Sirve para comparar resultados dentro de ese protocolo; un puntaje no demuestra el mismo desempeño en tu proyecto.
BYOK
Bring Your Own Key: modalidad donde aportás tu propia clave API de un proveedor. El consumo sigue la cuenta y las condiciones de esa integración; no equivale a usar una suscripción de chat.
Choice
Primitiva de decisión de Jev que elige entre opciones definidas por la aplicación y devuelve una opción con una distribución de probabilidades.
Claude Code
Agente de programación de Anthropic que combina contexto del proyecto y herramientas. Puede especializar su trabajo mediante instrucciones, skills, hooks y subagentes, según la configuración.
CLI
Interfaz de línea de comandos. Permite trabajar con herramientas y agentes desde una terminal, con acceso directo al proyecto y su entorno.
Cline
Agente de programación que puede trabajar de forma interactiva o mediante su CLI sin interfaz interactiva. Automatizarlo exige acotar el objetivo, los cambios autorizados y la validación de la salida.
Codex CLI
Interfaz de terminal de Codex para trabajar sobre un repositorio con un agente. El sandbox limita la ejecución y la política de aprobación determina qué acciones necesitan autorización.
Costo por sesión
Gasto observado en una sesión de agente. Para compararlo hay que fijar harness, tramo de turnos y agregación; una sesión barata puede haber fallado y no equivale a una tarea resuelta.
Costo por tarea resuelta
Costo del trabajo que alcanza el criterio de aceptación, incluyendo intentos fallidos, herramientas y revisión. Permite evaluar productividad más allá del precio por token o por sesión.
CRM
Sistema que centraliza relaciones, datos y procesos comerciales. En estos casos también actúa como fuente de verdad operativa.
Cuota de gasto
Porcentaje del gasto observado que corresponde a un modelo o tarea en una vista. Combina precio y consumo; no equivale a cuota de tokens, cantidad de usuarios o calidad.
Cuota de uso
Porción del total que corresponde a un modelo o autor dentro de una población y período. Puede medirse en tokens o solicitudes; hay que conservar el denominador para interpretar el porcentaje.
Daemon
Proceso que permanece ejecutándose en segundo plano y sostiene servicios, sesiones o tareas aunque una interfaz se cierre.
Decision gate
Punto de control que detiene el avance hasta resolver una decisión o cumplir una condición. Tener confianza en una respuesta no reemplaza la autorización necesaria.
DESIGN.md
Archivo portable que codifica colores, tipografía, composición y reglas visuales para que distintos agentes produzcan artefactos coherentes.
Engram
Memoria local y persistente para agentes que permite guardar y buscar observaciones por proyecto mediante CLI, MCP y otras interfaces.
Frontera de Pareto
Opciones para las que no hay otra igual o mejor en todas las dimensiones elegidas y mejor en al menos una, como costo y puntaje. La frontera cambia si cambian las dimensiones o los candidatos.
Gentle AI
Configurador de agentes de código que prepara integraciones, memoria, skills y componentes de trabajo o revisión para ajustar el gobierno del entorno.
Grant
Regla de Tailscale que concede capacidades de red o aplicación entre orígenes y destinos definidos. Los permisos se suman; una regla no resta accesos concedidos por otra.
Handoff
Entrega de contexto y responsabilidad a otro agente o persona: objetivo, cambios, pruebas, límites, pendientes y ubicación del resultado. Permite retomar el trabajo sin reconstruirlo desde cero.
Harness
Sistema que administra el ciclo del agente: prepara contexto, expone herramientas, ejecuta llamadas, recoge resultados y aplica controles. La CLI es una interfaz para usarlo, no un sinónimo.
Healthcheck
Comprobación de salud de un servicio. Debe validar una señal que represente la capacidad esperada, no sólo que exista una respuesta HTTP.
Hermes
Agente operativo que puede vivir en un servidor, conectarse a canales e integraciones y ejecutar tareas con continuidad.
Jev
Modelo de TypeSafe orientado a decisiones estructuradas: recibe texto o estado y devuelve respuestas tipadas según opciones y criterios definidos por la aplicación.
Latencia
Tiempo de espera entre una solicitud y un hito de respuesta. Hay que aclarar si se mide hasta el primer token o hasta la respuesta completa y con qué condiciones y percentil.
Liveness
Señal que comprueba si un proceso está vivo. No demuestra por sí sola que el servicio pueda atender tráfico correctamente.
MagicDNS
Función de Tailscale que permite encontrar dispositivos de la tailnet por nombre. Facilita localizar un destino, pero no concede acceso.
MCP
Model Context Protocol: protocolo abierto para conectar aplicaciones de IA con herramientas y fuentes de datos. La conexión no reemplaza los permisos ni la aprobación de acciones.
Mediana
Medida que divide un conjunto ordenado en dos mitades. Describe el centro, pero no muestra la dispersión ni el costo de las sesiones extremas. No es lo mismo que el promedio.
Memoria curada
Selección de decisiones, convenciones y descubrimientos útiles para otras sesiones. Cada recuerdo conserva contexto y debe contrastarse con el estado actual antes de aplicarlo.
Mínimo privilegio
Principio de dar sólo los permisos, credenciales y acceso de red necesarios para una tarea. Reduce el impacto de errores y evita que una consigna amplia se convierta en autoridad ilimitada.
Modelo
Componente entrenado que procesa entradas y genera salidas, incluidas propuestas de llamadas a herramientas. El agente agrega instrucciones, contexto, ejecución y controles alrededor de ese modelo.
n8n
Plataforma de automatización visual usada para coordinar integraciones, webhooks y pasos entre distintos sistemas.
Nivel de razonamiento
Control del esfuerzo de deliberación de un modelo, según las opciones del proveedor y el harness. Puede aumentar tiempo y consumo; no reemplaza contexto, herramientas ni verificación.
Noul
Primitiva de Jev que estima, entre 0 y 1, la probabilidad de que se cumpla una condición definida.
Observabilidad
Evidencia para entender qué está haciendo un sistema: estado, salida, eventos y señales de salud. Permite distinguir trabajo activo, espera, bloqueo y fallo, en vez de confiar sólo en que la interfaz siga abierta.
ODD
Organic Driven Development: recorrido de Gentle AI que propone explorar, implementar cambios autorizados, verificar y dejar referencias recuperables en proporción al tamaño del trabajo.
OpenCode
Herramienta abierta de programación con agentes que permite configurar modelos y proveedores. La flexibilidad del catálogo requiere verificar compatibilidad, permisos y resultados para cada tarea.
OpenDesign
Workspace local-first que combina agentes de código, skills, templates y sistemas DESIGN.md para producir artefactos visuales como archivos reales.
OpenRouter
Plataforma que da acceso a modelos de distintos proveedores mediante una API común. Sus rankings describen los datos incluidos en sus vistas, no todo el mercado ni la calidad de cada tarea.
Oracle
Rol de segunda opinión dentro de Amp, usado por el agente principal para consultar razonamiento, planificación o decisiones difíciles.
Orb
Máquina remota, fresca y aislada donde un agente de Amp puede trabajar con código, herramientas y servicios aunque la computadora del usuario esté apagada.
Orca
ADE y plano de control para organizar agentes, repositorios, workspaces, terminales y hosts sin reemplazar al modelo.
Orquestación
Coordinación de agentes con un objetivo común, tareas, dependencias, responsables y evidencia de cierre. Abrir varias sesiones en paralelo no define por sí solo quién decide o integra.
Plano de control
Capa desde la que se organizan y supervisan agentes, sesiones y entornos de ejecución. Coordina el trabajo sin ser el modelo ni la máquina que lo ejecuta.
Preflight
Verificación previa al despliegue que ejecuta el comando real de producción en un entorno de prueba y comprueba que el servicio arranca y responde.
Proveedor
Servicio que recibe solicitudes y ejecuta un modelo. Puede ser distinto de su autor; el endpoint, los límites y el rendimiento forman parte de la configuración que hay que comparar.
Prueba negativa
Comprobación de que una acción prohibida realmente falla. En red, debe probarse contra un servicio disponible para no confundir una caída con una restricción efectiva.
Read-only
Acceso de sólo lectura que permite consultar sin modificar el sistema fuente. Una barrera real se aplica en credenciales, herramientas y arquitectura, no sólo en una instrucción al agente.
Readiness
Señal que comprueba si un servicio está listo para atender tráfico. Puede fallar aunque el proceso siga vivo.
Routing
Selección del modelo o proveedor que atenderá una solicitud, mediante reglas o un router. Cambia costo, disponibilidad y comportamiento, por lo que debe registrarse al comparar resultados.
Runner
Máquina propia o administrada que Amp puede usar como entorno de ejecución en lugar de un Orb de su infraestructura.
Sandbox
Entorno con límites técnicos sobre recursos como archivos, procesos o red. Reduce lo que una ejecución puede afectar; su protección depende de los límites realmente configurados.
Score
Primitiva de Jev que puntúa un caso sobre una escala configurada. Su valor crudo no debe interpretarse automáticamente como un número entre 0 y 1.
Skill
Paquete reutilizable de instrucciones y recursos para una tarea especializada. Ayuda a repetir un método de trabajo; no concede permisos ni garantiza que el resultado sea correcto.
SSH
Protocolo seguro para acceder y ejecutar trabajo en otra máquina o entorno, como WSL o un servidor remoto.
Subagente
Agente al que otro delega una parte del trabajo con contexto propio. Su separación de conversación no implica necesariamente una máquina, archivos o permisos independientes.
Tailnet
Red privada de Tailscale que agrupa identidades y dispositivos autenticados. Pertenecer a ella no sustituye los permisos de cada servicio.
Tailscale
Herramienta que conecta usuarios y dispositivos en una red privada basada en identidades, con tráfico cifrado y reglas explícitas de acceso.
Tailscale Funnel
Función que expone un servicio local a Internet. Conviene usarla con una audiencia pública deliberada, controles de aplicación y un tiempo de exposición definido.
Tailscale Serve
Función que comparte un servicio local dentro de la tailnet, sujeto a sus reglas de acceso. Sirve para previews y paneles internos.
Tailscale SSH
Función que gestiona autenticación y autorización SSH en nodos compatibles mediante reglas propias. Habilitar TCP 22 en la tailnet no basta para configurarla.
The Dial
Selector de Amp que expresa cuánto esfuerzo requiere una tarea mediante los modos low, medium, high y ultra, independientemente del modelo asignado detrás.
Thread
Hilo de conversación que conserva el contexto de una tarea y sus resultados. En Amp puede coordinar trabajo en un entorno propio; la persistencia del hilo no garantiza que la máquina siga ejecutándose.
Throughput
Velocidad de generación, habitualmente medida en tokens por segundo. Debe compararse bajo condiciones equivalentes; no incluye por sí sola el tiempo de herramientas, turnos y reintentos de un agente.
Token
Unidad en la que un modelo representa y procesa contenido. No equivale siempre a una palabra: la segmentación depende del tokenizador. Más tokens de uso no significan más usuarios ni más tareas resueltas.
Tool calling
Mecanismo por el que un modelo solicita ejecutar una herramienta con argumentos. La ejecución la realiza el sistema que lo rodea y puede exigir permisos; contar llamadas no demuestra que fueron correctas.
TTFT
Time to First Token: tiempo desde el envío de la solicitud hasta recibir el primer token. Describe la espera inicial, no cuánto tarda en completarse toda la respuesta o tarea.
Ventana de contexto
Capacidad de tokens que un modelo puede manejar en una interacción, según su configuración. El máximo anunciado, el contexto realmente usado y la calidad al recuperar información son cosas distintas.
WireGuard
Protocolo que Tailscale utiliza para cifrar el tráfico entre dispositivos. El cifrado se mantiene tanto en conexiones directas como mediante relays.
Worker
Agente ejecutor al que se delega una tarea acotada. Recibe alcance, permisos y criterio de finalización, y devuelve resultados verificables al coordinador.
Workspace
Frente de trabajo visible que agrupa tabs, terminales, editores y una tarea; no equivale por sí mismo al aislamiento de Git.
Worktree
Directorio de trabajo adicional de un repositorio Git, normalmente en otra rama. Separa archivos para tareas paralelas, pero comparte datos del repositorio y no es un sandbox de seguridad.
WSL
Windows Subsystem for Linux: entorno Linux integrado en Windows donde pueden vivir repositorios, runtimes y agentes CLI.