Service Manager · Go

Stop juggling terminal tabs

One binary that starts services in the right order, waits until they're actually up, and shuts everything down cleanly on exit.

Terminal
$_
Configuration

One file. Any project.

Drop devservices.yaml in the project root — kb-dev finds it automatically by walking up from the current directory.

Works with any stack: Docker, pnpm, npm, make, shell. KB Labs uses .kb/devservices.yaml — same format.

yaml
name: my-project

services:
  postgres:
    type: docker
    command: docker run --rm -p 5432:5432 postgres:16
    health_check: localhost:5432
    port: 5432

  api:
    command: pnpm dev
    port: 3000
    health_check: http://localhost:3000/health
    depends_on: [postgres]

  worker:
    command: pnpm worker
    depends_on: [postgres]
Commands

Everything is scriptable.

kb-dev startStart all services in dependency order. Health-probes before reporting alive.
kb-dev stopGracefully stop all running services.
kb-dev statusShow running state, PID, port, and uptime per service.
kb-dev restart workflowRestart a specific service by name.
kb-dev logs gateway --followStream live logs for a service. Ctrl-C to stop.
kb-dev doctorRun environment diagnostics: ports, deps, config, health.

All commands support --json for scripts and CI

How it works

The details that matter.

Knows when a service actually died

Tracks real PIDs because it spawned the processes. No port scanning, no stale state.

Doesn't call it alive until it responds

HTTP, TCP, and command health probes with latency. Reports alive only after the check passes.

Starts in the right order

Reads service dependencies from devservices.yaml and starts in topological order automatically.

Install

One binary. No dependencies.

curl -fsSL https://kblabs.ru/kb-dev/install.sh | sh
kb-dev — KB Labs