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

  1. Run woml check workflows/ --config woml.runtime.json in CI or before deployment.
  2. Deploy source and imported local modules as one immutable release.
  3. Keep WOML in the foreground under systemd, Docker, Kubernetes, or another supervisor.
  4. Persist the state database, object storage, logs, and backups outside the image.
  5. Supply secrets through mounted files or environment-backed production providers.
  6. Terminate public TLS at a reviewed reverse proxy.
  7. Keep the administration listener loopback-only.
  8. Allow enough graceful shutdown time for active work to settle honestly.

Example runtime configuration

JSON
{
  "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:

Terminal
woml run workflows/ --config woml.runtime.json

Container deployment

Run WOML as the foreground container process. Mount durable locations instead of baking them into the image:

Text
/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 secrets

The 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.