Orbit
Orbit es una TUI para lanzar, controlar y monitorizar servicios de desarrollo locales: procesos (backends, frontends, workers), contenedores Docker y servicios de docker compose. Está construida con TypeScript, Bun y OpenTUI (@opentui/react), y se configura mediante un único archivo orbit.yaml.
◉ orbit · demo 1 Dashboard 2 Graph 3 Logs ● 7 up ○ 1
╭─ Services 7/8 ───────────╮╭─ Dependency graph · 7/8 up ────────────────────────────────────╮
│ ● postgres :55432 ││ ╭────────────────────╮ │
│ ● redis :56379 ││ ╭────▶│ ● auth ├────╮ │
│ ● auth :4300 ││ ╭────────────────────╮ │ │ healthy :4300 40M │ │ │
│▌● api :4100 ││ │ ● postgres ├──┤ ╰────────────────────╯ │ │
│ ● worker ││ │ healthy :55432 19M │ │ │ │
│ ● web :4200 ││ ╰────────────────────╯ │ │ ... │
El problema
Levantar un entorno local suele implicar manejar muchas terminales: un contenedor de base de datos, un backend, un frontend, un worker, cada uno dependiendo de otro. Arrancarlos en el orden equivocado, dejar procesos huérfanos ocupando puertos o no saber cuál ha fallado hace el día a día incómodo.
Qué hace
- Grafo de dependencias. Los servicios se colocan por capas y se colorean según su estado; al seleccionar un nodo se resaltan sus dependencias y sus dependientes. Se navega con teclado y ratón.
- Arranque y parada ordenados.
startlevanta primero las dependencias y espera a que estén listas;stopdetiene primero a los dependientes. - Healthchecks. HTTP, TCP, comando o el
HEALTHCHECKde Docker. - Política de reinicio.
no,on-failureoalways, con backoff exponencial. - Logs en vivo. Por servicio o combinados, con prefijos de color, filtro por regex, scroll, marcas de tiempo y resaltado de errores y avisos.
- Métricas de CPU y memoria. Por árbol de procesos (vía
/proc) y por contenedor (docker stats), mostradas como sparklines. - Docker y compose. Importa automáticamente el
docker-compose.yml(condepends_on, puertos, healthchecks e interpolación de variables) y se reengancha a contenedores que ya estaban en ejecución. - Tareas de una sola ejecución. Builds, migraciones o aprovisionamiento cuentan como listas cuando terminan correctamente.
- Gestión robusta de procesos. Detecta puertos ocupados antes de arrancar y mata árboles de procesos completos, sin dejar procesos
viteoesbuildhuérfanos. - Paleta de comandos con búsqueda difusa, grupos de servicios y apertura en el navegador.
Uso
Publicada en npm como @jgoterris/orbit: se ejecuta con bunx @jgoterris/orbit o se instala globalmente. También ofrece comandos sin TUI (up, down, graph, ls) y orbit init, que genera un orbit.yaml escaneando el proyecto.
Estado
Herramienta personal de código abierto con licencia MIT. El código está cubierto por tests de la configuración, el grafo de dependencias, el supervisor (con procesos reales) y la TUI.