Orbit
Orbit is a TUI to launch, control and monitor local development services: processes (backends, frontends, workers), Docker containers and docker compose services. It is built with TypeScript, Bun and OpenTUI (@opentui/react), and configured through a single orbit.yaml file.
◉ 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 ││ ╰────────────────────╯ │ │ ... │
The problem
Running a local stack usually means juggling many terminals: a database container, a backend, a frontend, a worker, each one depending on another. Starting them in the wrong order, leaving orphaned processes hogging ports, or not knowing which one failed makes the day-to-day painful.
What it does
- Dependency graph. Services are laid out by layers and colored by status; selecting a node highlights its dependencies and its dependents. Navigable with keyboard and mouse.
- Ordered startup and shutdown.
startbrings up dependencies first and waits until they are ready;stopstops dependents first. - Healthchecks. HTTP, TCP, command, or Docker’s
HEALTHCHECK. - Restart policy.
no,on-failureoralways, with exponential backoff. - Live logs. Per service or combined, with colored prefixes, regex filter, scrolling, timestamps and error/warning highlighting.
- CPU and memory metrics. Per process tree (via
/proc) and per container (docker stats), shown as sparklines. - Docker and compose. Imports
docker-compose.ymlautomatically (includingdepends_on, ports, healthchecks and variable interpolation) and re-attaches to containers that were already running. - One-shot tasks. Builds, migrations or provisioning steps count as ready once they finish successfully.
- Robust process handling. Detects occupied ports before starting and kills entire process trees, so no orphaned
viteoresbuildprocesses are left behind. - Command palette with fuzzy search, service groups, and open-in-browser.
Usage
Published on npm as @jgoterris/orbit: run it with bunx @jgoterris/orbit, or install it globally. It also offers non-TUI commands (up, down, graph, ls) and orbit init, which generates an orbit.yaml by scanning the project.
Status
Personal open-source tool released under the MIT license. The codebase is covered by tests for the config, the dependency graph, the supervisor (with real processes) and the TUI.