Reference
Task Launch
How to model process start truthfully, especially for long-running services.
referenceautomation buildersintermediatestable2026-05-30
Recommended next
Purpose
Use this page when you need to decide whether a task should use run, script, or launch.
The strong default for long-running service processes is launch.kind: command.
launchowns process startruntimeowns what becomes reachable and how readiness is provedrunstays the simple shell shorthand for finite tasksscriptstays the multiline shell escape hatch
Governance rule
Use launch.kind: command for long-running app servers, docs previews, workers, and similar service processes.
Use run for finite shell tasks, pipelines, or cases where a structured executable shape would be misleading.
Preferred service shape
Long-running service taskyaml
tasks: dev: launch: kind: command exe: bundle args: [exec, rails, server, -b, 0.0.0.0, -p, "3000"] runtime: kind: service surfaces: - apiWhy this is stronger
- the executable and arguments stay structured instead of disappearing into one shell string
- ota can reason about launch separately from the endpoint contract
- service surfaces, listeners, and readiness stay canonical under
runtime, not duplicated in shell glue - examples and generated docs can teach one stable service-launch shape
Use run when shell is the truth
Finite shell taskyaml
tasks: test: run: pnpm test -- --runInBand