Orchestration

Foundation, then platform, then edge. Services in the same tier launch concurrently. The next tier waits for the previous to be ready.

How it works

Three tiers. Bounded concurrency

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

Declared in fuku.yaml

Assign tiers to services in fuku.yaml. The tier order is determined by first occurrence in the file:

fuku.yaml
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
Details

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 default tier that runs last
  • Tier names are case-insensitive and whitespace is trimmed
  • You can use any tier names – infrastructure, middleware, api, frontend, etc.

Profiles

Run subsets of services

Profiles let you group services for batch operations – run only what you need:

fuku.yaml
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

Worker pool control

Control how many services start in parallel within a tier:

fuku.yaml
concurrency:
  workers: 5 # Max concurrent service starts (default: 5)

Ready to try it out?

Get Started