MoonFlight: the whole model in one project
MoonFlight is the project in the recording on the front page. It is a complete imitation of a small product, so every part of the Kranz model appears in one place instead of one feature at a time.

Run it
cd examples/moonflight
kranzPress a, then s. Nothing leaves localhost, and the "infrastructure" is marker files under .kranz-demo.
What is in it
| Service | What it demonstrates |
|---|---|
shared-infra | A detached resource that outlives the session |
migrate | A one-shot service others wait to finish successfully |
catalog-api, billing-api | Readiness, liveness, restart policy, and an action |
gateway | Waiting for two dependencies to become healthy, not merely to exist |
moonflight-web | A runtime-discovered port and a prerequisite |
orders-worker, reconciliation-worker | Workers gated on health, with recovery |
toolbox | A project-level action group |
The order it starts in
Selecting everything and pressing s does not start eight things at once. The graph decides:
shared-infracomes up first — its status probe reports it exists.migrateruns and exits successfully.catalog-apiandbilling-apistart together, because both only needed the migration to finish, and become ready.gatewaywaits for both to be healthy, not merely running.moonflight-webbuilds its assets throughbefore_start, then starts.- Both workers start once the service each one talks to is healthy.
Watch the queued labels in the list: they show what a service is waiting for while it waits.
Things worth trying
Stop gateway. Kranz includes everything that depends on it and stops the dependents first, in reverse order.
Quit while shared-infra runs. The exit plan separates the processes that will stop from the detached resource that will keep running, because it declares stop_on_exit: false. Start Kranz again: the status probe finds the resource and reconnects to it without running the start command.
Open moonflight-web in Details. It declares no port; the listener shown was discovered from the running process.
Expand catalog-api with Enter. Its reindex action runs on demand and keeps its own output, exit code, and duration.
Run toolbox / reset. It asks first, because it deletes the marker files.
Cleanup
Press a, then s, and confirm. shared-infra keeps running by design; stop it explicitly, or run toolbox / reset.
Full source: examples/moonflight/kranz.yaml.