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.
| Binary | Role |
|---|---|
peon-sirdar | The gateway. Routes, health checks, load-balancing, and the registry — all in one process. |
peon-jobber | A one-shot. Run it, it registers service:port with the sirdar, then exits. |
peon-babu | The admin panel — the topology behind this sheet. |
request → sirdar (match route → pick live instance → proxy) → your service
your service starts → run peon-jobber once → registered → jobber exits
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