Orchestration
Tier-based startup ordering ensures dependencies are ready before dependent services begin.
How It Works
Services are grouped into tiers. fuku starts all services in the first tier, waits for them to become ready (via readiness checks or process start), then moves to the next tier. Within each tier, services start concurrently up to the configured worker limit.
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
Configuration
Assign tiers to services in fuku.yaml. The tier order is determined by first occurrence in the file:
services:
auth:
dir: auth
tier: foundation # Starts first
gateway:
dir: gateway
tier: foundation # Same tier — starts with auth
api:
dir: backend/api
tier: platform # Starts after foundation is ready
web:
dir: frontend
tier: edge # Starts after platform is ready Key Details
- Tier order is defined by first appearance in the YAML file
- Services within each tier are sorted alphabetically by name
- Services without a tier go to a
defaulttier that runs last - Tier names are case-insensitive and whitespace is trimmed
- You can use any tier names —
infrastructure,middleware,api,frontend, etc.
Profiles
Profiles let you group services for batch operations — run only what you need:
profiles:
default: "*" # All services
backend: [auth, api] # Just the backend stack
full: [auth, api, web] fuku
$ fuku run backend │ profile backend → auth, api │ │ tier foundation │ ✓ auth running │ │ tier platform │ ✓ api running
Concurrency
Control how many services start in parallel within a tier:
concurrency:
workers: 5 # Max concurrent service starts (default: 5) Ready to try it out?
Get Started