Production Deployment
Moving a workflow from a laptop to production does not require a new WOML artifact format. The same .woml files run with woml run; production adds persistent storage, protected secrets, stable ingress, preflight validation, backups, and a process supervisor.
A production checklist
- Run
woml check workflows/ --config woml.runtime.jsonin CI or before deployment. - Deploy source and imported local modules as one immutable release.
- Keep WOML in the foreground under systemd, Docker, Kubernetes, or another supervisor.
- Persist the state database, object storage, logs, and backups outside the image.
- Supply secrets through mounted files or environment-backed production providers.
- Terminate public TLS at a reviewed reverse proxy.
- Keep the administration listener loopback-only.
- Allow enough graceful shutdown time for active work to settle honestly.
Example runtime configuration
{
"schemaVersion": 1,
"deploymentName": "order-automation",
"statePath": "./data/workflow-history.sqlite",
"public": { "host": "127.0.0.1", "port": 3000 },
"admin": { "host": "127.0.0.1", "port": 3001 },
"logging": {
"format": "json",
"level": "info",
"directory": "./logs"
},
"workers": 4,
"shutdownTimeoutMs": 30000,
"observability": { "health": true, "metrics": true },
"backup": { "directory": "./backups" }
}Run it with:
woml run workflows/ --config woml.runtime.jsonContainer deployment
Run WOML as the foreground container process. Mount durable locations instead of baking them into the image:
/app/workflows immutable WOML source and local modules
/var/lib/woml state database and object storage
/var/log/woml runtime logs
/run/secrets mounted production secretsThe native core.node binary is installed through the platform package selected by woml-cli; users should not manually copy it into workflow projects. Build and release pipelines must publish matching platform artifacts.
Ingress and security
Bind the WOML public listener to a private interface when a reverse proxy owns TLS. Configure webhook authentication, event control tokens, and provider callback verification. Do not expose the local administration listener or state database as a public API.
Scale expectations
Workers and workflow policies provide useful single-host concurrency. The v1 runtime has one durable runtime/state authority; it does not claim an active-active distributed control plane. Scale within that reviewed boundary, measure queue pressure, and separate deployments when isolation or capacity requires it.
Do not bake .woml/state.sqlite or credentials into a container image. A single runtime/state authority is the supported production profile; WOML does not claim a distributed multi-node control plane.