Skip to content

Process Compose compatibility

Kranz opens a supported process-compose.yaml directly, so you can try it on an existing project without maintaining a second configuration.

bash
cd your-project
kranz                       # finds process-compose.yaml automatically
kranz -f process-compose.yaml

A native kranz.yaml in the same directory takes priority, so adding one later is not a breaking change.

Compatibility is deliberately conservative: a feature is either translated faithfully, ignored with a visible diagnostic, or rejected before anything starts. Kranz never accepts a file by quietly dropping a field that changes what your processes do.

Top level

FieldSupportNotes
version✅ TranslatedKept as the project version
name✅ TranslatedProject name; defaults to the directory name
environment✅ TranslatedMapping or NAME=value list
processes✅ TranslatedSee below

Process fields

FieldSupportMaps to
command✅ Translatedcommand
description✅ Translateddescription
working_dir✅ Translateddir
environment✅ Translatedenv
env_file✅ Translatedenv_files
depends_on✅ Translateddepends_on with conditions
readiness_probe✅ Translatedhealthcheck.readiness
liveness_probe✅ Translatedhealthcheck.liveness
ready_log_line✅ Translatedready_log_line
availability✅ Translatedavailability
shutdown✅ Translatedshutdown
success_exit_codes✅ Translatedsuccess_exit_codes
disabled, is_disabled✅ Translateddisabled
is_dotenv_disabled✅ TranslatedSkips the adjacent .env
namespace⚠️ ApproximatedBecomes a tag, unless it is default
log_location⚠️ IgnoredReported as a diagnostic; Kranz keeps logs in the interface
replicas❌ RejectedValues above 1 are not supported
is_daemon❌ RejectedKranz supervises process groups it starts
is_tty, is_interactive, is_foreground❌ RejectedUse a Kranz interactive action instead
schedule❌ RejectedKranz is not a scheduler

A rejected field fails the load with a message naming the process and the field. An ignored field loads successfully and reports a diagnostic in the interface.

Dependency conditions

Both the list form and the mapping form are supported:

yaml
processes:
  web:
    depends_on:
      api:
        condition: process_healthy
      seed:
        condition: process_completed_successfully
ConditionSupport
process_started✅ (default for the list form)
process_healthy
process_completed
process_completed_successfully
process_log_ready

Any other condition is rejected by name.

Probes

Probe fieldSupportNotes
exec.commandBecomes a command check
http_getBecomes an http check; its port is also declared
http_get.hostDefaults to 127.0.0.1
http_get.schemeDefaults to http
http_get.pathDefaults to /
http_get.headersPassed through
http_get.status_codeDefaults to 200
initial_delay_secondsinitial_delay
period_secondsinterval, default 10s
timeout_secondstimeout, default 1s
failure_thresholdDefault 3
success_threshold⚠️ ApproximatedValues above 1 are accepted as 1, with a diagnostic

Exactly one of exec or http_get is required per probe.

What you gain by converting

Compatibility mode gives you the Kranz interface over your existing file. Moving to a native kranz.yaml additionally gives you:

The full-stack example ships the same project in both formats, so you can compare them field by field.

Released under the MIT License.