Procfile quickstart
Use this example if you have a handful of development commands and want Kranz without learning its YAML format first.
What it demonstrates
- automatic
Procfilediscovery; - one service per
name: commandline; - adjacent
.envloading; - separate logs for concurrent processes;
- automatic listener discovery for a child process.
Run it
From the repository root:
bash
cp examples/procfile/.env.example examples/procfile/.env
cd examples/procfile
kranzKranz discovers Procfile because there is no native configuration in this directory. You should see three stopped services: clock, environment, and web.

Walk through the UI
- Press
a, thens, to start all three. - Focus
clock: its log prints the current time every two seconds. - Focus
environment: its log showsMESSAGEfrom the adjacent.envfile. - Focus
weband inspect Details. The command contains a port, but Kranz does not parse shell text to guess it. Instead it observes the real listener from the process group and reports it as detected. - Open the displayed localhost URL in a browser.
- Press
s, confirm the stop, thenq.
The complete Procfile
text
clock: while true; do date; sleep 2; done
environment: while true; do echo "MESSAGE=${MESSAGE:-hello from Procfile}"; sleep 5; done
web: python3 -u -m http.server ${PORT:-8123} --bind 127.0.0.1There is intentionally no Kranz-specific syntax here. Procfile is the entry point; native YAML is the upgrade path when you need dependencies or actions.
Try changing it
Edit .env:
dotenv
MESSAGE=hello from my project
PORT=8124Press Ctrl+L in Kranz to reload. Restart the affected services and inspect the new output and listener.
Cleanup
Stop the services from Kranz, then optionally remove the copied file:
bash
rm .env