Tiny service routing

Three binaries, one codebase. No database, no container-runtime coupling.

Peon is a small gateway that reads routes from one YAML file, accepts service registrations, health-checks your backends, load-balances by active requests, and reverse-proxies traffic to them. Behind this panel is the babu view of a live gateway.

BinaryRole
peon-sirdarThe gateway. Routes, health checks, load-balancing, and the registry — all in one process.
peon-jobberA one-shot. Run it, it registers service:port with the sirdar, then exits.
peon-babuThe admin panel — the topology behind this sheet.

How a request flows

request → sirdar (match route → pick live instance → proxy) → your service
your service starts → run peon-jobber once → registered → jobber exits

Install & run

Download a binary, or build from source — one Go module, three targets:

CGO_ENABLED=0 go build -o bin/peon-sirdar ./cmd/sirdar
CGO_ENABLED=0 go build -o bin/peon-jobber ./cmd/jobber
CGO_ENABLED=0 go build -o bin/peon-babu   ./cmd/babu

conf.yaml — only routes is required:

routes:
  "api/#HOST": api    # api.<domain>/*        -> service "api"
  "#HOST/babu": babu  # any host, path /babu -> service "babu"
  "#HOST": web        # everything else       -> service "web"
# Sirdar (gateway + registration API):
bin/peon-sirdar --config conf.yaml

# Register a service instance (runs once, then exits):
bin/peon-jobber --sirdar http://10.0.0.1:9000 --service api:8080