62864bdba8de5b67fd34acde3f22aa370b3b403c
zoo-system/zoo-operator sat 0/1 for two days. The probe was not wrong: path /readyz and port 8081 both match the server main.rs binds. The endpoint itself was. Two faults compounded. 1. 0.1.3's /readyz returned 503 for any replica that did not hold the lease. Readiness answers "can this pod serve?"; leadership answers "who reconciles?". Braiding them means a healthy standby is NotReady forever, so the Deployment never goes available. Measured on the live pod before the fix — /healthz=200 while /readyz=503, process fine. 2. Something else was holding zoo-system's lease. A stale zoo-testnet replica, floating on :main with no OPERATOR_NAMESPACE, had survived since the last apply of this file. main.rs falls back to the literal "zoo-system" when that env is unset, so it wrote zoo-system's lease from zoo-testnet and renewed it indefinitely. git has said replicas: 0 for that overlay all along (zoo-testnet/network-patch.yaml) — the cluster had simply drifted, and the floating tag hid it. So: pin the immutable semver, and record that the fieldRef and the scale-to-0 overlays are load-bearing invariants rather than tidiness. 0.1.4 (zooai/operator 98be7d7) carries the /readyz change. This file still tracked :main because the 0.1.3 pin was only ever made on a feature branch; trunk kept floating and would have reverted the cluster on the next clean apply. Proof, zoo-system after rollout — two replicas, one leader, both Ready, which 0.1.3 could not do by construction: NAME READY UP-TO-DATE AVAILABLE zoo-operator 2/2 2 2 lease holder = zoo-operator-7dd698654-t6v4q (10.160.16.31) 10.160.17.253 /readyz=200 /healthz=200 <- NOT the leader 10.160.16.31 /readyz=200 /healthz=200 Co-authored-by: Hanzo Dev <[email protected]>
Zoo Universe
Infrastructure orchestration for Zoo Labs Foundation.
Architecture
zoo.ngo — Marketing site (Vite SPA)
zoo.exchange — DEX (Vite + Tamagui)
zoo.network — Zoo Network validators
zoo.wallet — Browser extension + mobile + web wallet
docs.zoo.ngo — Documentation (fumadocs)
zips.zoo.ngo — Zoo Improvement Proposals
Local Development
docker compose up # All services
docker compose up ngo # Just the website
Production (DOKS)
Three clusters:
do-sfo3-zoo-k8s— mainnetdo-sfo3-zoo-test-k8s— testnetdo-sfo3-zoo-dev-k8s— devnet
Deploy:
./deploy.sh mainnet
./deploy.sh testnet
./deploy.sh devnet
Repos
| Repo | Package | Purpose |
|---|---|---|
| zoo/ngo | @zooai/ngo-web | Marketing site |
| zoo/exchange | @zooai/exchange | DEX frontend |
| zoo/wallet | @zooai/wallet | Wallet (ext + mobile + web) |
| zoo/ui | @zooai/ui + @zooai/gui | Design system |
| zoo/node | — | Rust blockchain node |
| zoo/docs | @zoo/docs | Documentation |
| zoo/ZIPs | — | Improvement Proposals |
| zoo/papers | — | Research papers (47) |
| zoo/formal | — | Formal proofs (20) |
Description
Declared state for the zoo fleet: one values file per service, one ApplicationSet
1.2 MiB
Languages
TypeScript
70.1%
Shell
21.5%
Makefile
8.4%