WOML CLI Reference
August 17, 2026 ยท View on GitHub
The woml command validates, activates, observes, and maintains durable WOML
automations. Human-readable colored output is the default; commands that expose
--json provide stable machine-readable output.
woml --help
woml --version
woml -v
Relative paths are resolved from the current directory. The default durable
store is .woml/state.sqlite.
Author and activate
woml check
woml check <workflow.woml|directory>... [--config <path>] [--json]
Parses, validates, and compiles one deployment without activating triggers or
executing scripts. Direct .woml files in a directory are loaded
non-recursively. It also checks cross-workflow targets, local imports, referenced
secret names, and optional production configuration.
woml run
woml run <workflow.woml|directory>... \
[--config <path>] [--host <address>] [--port <port>] \
[--state <path>] [--trigger <manualTriggerId>] [--resume <runId>] \
[--approval-port <port>] [--json] [--verbose] \
[--color=auto|always|never] [--background|-d]
Activates one or more workflows as one runtime unit. Manual workflows wait for
keyboard input; network, provider, and time triggers remain active. Multiple
files are useful for services.workflows.call() and .start() because every
target is registered in the same durable runtime.
--background detaches after readiness and prints the runtime ID, log path,
and stop command. --resume continues a recoverable existing run against its
stored immutable definition. Use --state consistently when selecting a
non-default store.
woml test
woml test <workflow.woml> [--state <path>] \
[--trigger <manualTriggerId>] [--resume <runId>] \
[--approval-port <port>]
Runs one manual occurrence and exits. This is intended for automated tests and CI, not as the normal automation host.
woml types
woml types <workflow.woml|directory> [--output <path>]
Refreshes editor declarations for built-in services and local module aliases.
Normal check and run already refresh the default woml-env.d.ts; use this
advanced command only for a custom path or an explicit refresh.
Observe and control runs
woml inspect [--state <path>] [--no-color]
woml list [--workflow <workflowId>] [--status <status>] \
[--limit <1-200>] [--state <path>] [--json]
woml get <runId> [--state <path>] [--json]
woml cancel <runId> [--state <path>] [--json]
woml stop [--state <path>] [--json]
inspectis the live, colored terminal view of runtime and run health.listfilters recent durable runs.getshows one redacted run, its steps, attempts, waits, and control flow.cancelrecords a durable cancellation request and propagates it through supervised work.stopgracefully stops the background runtime that owns the selected store.
Run and runtime inspection deliberately omit payloads, secrets, credentials, and operation keys.
Follow logs
woml <run-id|workflow-id> --logs \
[--state <path>] [--config <path>] [--json] \
[--color=auto|always|never]
Shows matching historical output and follows new records. Press Ctrl+C to stop following; the background automation continues running.
Secrets
woml secrets set <NAME>
woml secrets list
woml secrets delete <NAME>
set prompts without echoing the value. Names use uppercase symbolic form such
as PAYMENTS_API_TOKEN. Workflow source refers to a configured value as
{{secrets.PAYMENTS_API_TOKEN}} in supported attributes or
secrets.PAYMENTS_API_TOKEN inside scripts. list prints names, never values.
Publish an event
woml emit <eventName> --id <publisherEventId> --data @<jsonFile> \
--server <url> --token-secret <NAME>
Publishes an authenticated event to a running WOML event endpoint. The token is
loaded from WOML secrets by symbolic name. Applications may call the same HTTP
endpoint directly; emit is a convenient operator client, not a requirement.
Provider diagnostics
woml telegram doctor [--token-secret <NAME>] [--destination <chatId>] [--json]
woml discord doctor [--token-secret <NAME>] [--destination <channelId>] [--json]
woml whatsapp doctor [--access-token-secret <NAME>] [--app-secret <NAME>] \
[--verify-token-secret <NAME>] [--phone-number-id <id>] \
[--callback-url <https-url>] [--json]
Doctor commands validate credentials, permissions, and optional destinations without creating a workflow run. They redact credentials from both human and JSON output.
Backup and retention
woml backup <backup-directory> [--state <path>] [--json]
woml restore <backup-directory> [--state <path>] [--replace] [--json]
woml prune --before <duration> [--state <path>] [--dry-run] [--compact] [--json]
backupcreates a coherent manifest and checksummed durable snapshot.restoreverifies a backup before restoring it;--replaceis required to replace an existing target store.pruneremoves terminal history older than the requested duration while preserving active/recoverable runs and referenced definitions. Start with--dry-run;--compactreclaims SQLite space after successful pruning.
See Backup and restore and Retention and maintenance before operating on production state.
Exit behavior and diagnostics
Authoring errors carry a stable code, source location, message, and usually a
repair hint. Runtime and provider errors use stable codes without printing
secret values. A non-zero exit indicates that the requested command failed;
long-lived run and log-following commands normally end through Ctrl+C or an
explicit stop.