All services
one terminal

Lightweight CLI tool for running and managing multiple local services. Tier-based startup ordering, interactive TUI, hot-reload, and readiness checks – all from a single YAML config.

$ brew install tab/apps/fuku
fuku
profile • default starting… 4/5 ready
status cpu mem pid uptime
foundation
auth ▮▮▮▮▮▮▮▮▮▮▮▮ running 0.1% 2MB 76741 00:11
storage ▮▮▮▮▮▮▮▮▮▮▮▮ running 0.1% 2MB 76742 00:11
platform
api ▮▮▮▮▮▮▮▮▮▮▮▮ running 0.1% 2MB 76758 00:09
user ▮▮▮▮▮▮▮▮▮▮▮▮ running 0.1% 2MB 76759 00:09
edge
frontend ▮▮▮▮▮▮▮▮▮▮▮▮ starting
127.0.0.1:9876 • cpu 6.2% • mem 25MB v0.19.0
// features

One config. Six superpowers.
Zero context-switching.

Interactive TUI

See every service at a glance – status, CPU, memory, and uptime in one dashboard. Stop, start, or restart any service with a single keystroke.

Learn more →
fuku
profile • default running 4/4 ready
status cpu mem
foundation
auth ▮▮▮▮▮▮▮▮▮▮▮▮ running 0.3% 24MB
platform
api ▮▮▮▮▮▮▮▮▮▮▮▮ running 1.2% 32MB
worker ▮▮▮▮▮▮▮▮▮▮▮▮ running 0.4% 28MB
edge
web ▮▮▮▮▮▮▮▮▮▮▮▮ running 4.2% 120MB
cpu 6.1% • mem 204MB v0.19.0

Orchestration

Define tiers in fuku.yaml and fuku starts them in order – foundation first, then platform, then edge. Within each tier, services launch concurrently.

Learn more →
fuku run default
$ fuku run default

 preflight  cleaning up stale processes...
 preflight  done

 tier foundation
    auth        running  pid 76741  2.1s
    gateway     running  pid 76742  1.8s

 tier platform
    api         running  pid 76758  4.5s
    worker      running  pid 76759  2.8s

 tier edge
    web         starting

Readiness Checks

A started process isn't always a ready process. fuku polls HTTP endpoints, TCP ports, or log output and only proceeds to the next tier when services are actually healthy.

Learn more →
fuku run default
 tier foundation
    auth        checking http :8081/health
    gateway     checking http :8082/health
    gateway     ready    1.8s
    auth        ready    2.1s

 tier platform
    api         checking http :8080/health
    api         ready    4.5s

Hot-Reload

Edit a file, save, and fuku restarts the affected service automatically. Debouncing prevents restart storms, and shared path support handles cross-service dependencies.

Learn more →
fuku run default
  api         running  pid 76758
  worker      running  pid 76759

 watch  file changed: api/handlers/users.go
 watch  file changed: api/handlers/users.go
 watch  debounce 300ms

  api         restarting
   stopping pid 76758...
   starting...
  api         running  pid 76801

Log Streaming

Open a second terminal and run fuku logs to stream output from running services. Filter by service name, see color-coded prefixes, and keep your TUI clean.

Learn more →
terminal – fuku logs
$ fuku logs api auth
api   10:23:01Z INF server listening on :8080
api   10:23:05Z INF GET /health 200 1ms
auth  10:23:01Z INF auth service started
api   10:23:12Z INF POST /api/users 201 45ms
auth  10:23:12Z INF token issued user=john
api   10:23:18Z INF GET /api/users 200 12ms

Lifecycle

Ctrl+C or press q and services stop in reverse tier order – edge first, then platform, then foundation. Each service receives SIGTERM with time to shut down gracefully.

Learn more →
fuku
 received signal: SIGINT

 stopping tier edge
    web         stopping  SIGTERM → pid 76780
    web         stopped

 stopping tier platform
    api         stopping  SIGTERM → pid 76758
    worker      stopping  SIGTERM → pid 76759
    worker      stopped
    api         stopped

 stopping tier foundation
    auth        stopping  SIGTERM → pid 76741
    auth        stopped

 all services stopped

Install

Homebrew

terminal
brew install tab/apps/fuku

Install Script

terminal
curl -fsSL https://getfuku.sh/install.sh | sh

Build from Source

terminal
git clone https://github.com/tab/fuku.git
cd fuku
go build -o cmd/fuku cmd/main.go
sudo ln -sf $(pwd)/cmd/fuku /usr/local/bin/fuku