Manual Triggers

A manual trigger is useful for local development, demonstrations, and operator-controlled automation.

Declare the trigger

WOML
<triggers>
  <manual id="start" />
</triggers>

id is the only accepted attribute.

Run it

Terminal
woml run workflow.woml

WOML activates the workflow and waits. Press Enter to create a run. The runtime remains active so you can press Enter again; Ctrl+C stops it.

Use --trigger <id> when a workflow contains more than one manual trigger. A keyboard occurrence currently supplies {} as context.payload.

For a single finite CI execution, use woml test workflow.woml instead of hosting a long-lived runtime.

Build an operator-run workflow

WOML
<woml>
  <workflow id="dailySummary" name="Build daily summary" version="1.0.0">
    <triggers>
      <manual id="start" />
    </triggers>
    <steps>
      <step id="summary" name="Build summary">
        <script>
          return {
            generatedAt: new Date().toISOString(),
            message: "The operator started this run from the terminal."
          };
        </script>
      </step>
    </steps>
  </workflow>
</woml>

Activate it:

Terminal
woml run daily-summary.woml

The process remains alive because WOML is hosting an automation. Each Enter press creates a new run with its own ID and durable history. A previous run does not resume or mutate when you press Enter again.

Manual payload behavior

Keyboard activation currently provides an empty object:

JavaScript
context.payload // {}

Use fallback sample data for a local demonstration, or switch to a webhook, event, or workflow call when the caller must provide input. Do not design a production data-entry interface around terminal keystrokes.

Run one finite test

Use this command in CI or when you need one execution and an exit code:

Terminal
woml test daily-summary.woml

woml test is not a long-lived trigger host. It executes a finite test journey and exits, which makes it suitable for scripts and release checks.

Use manual triggers safely

Manual activation is useful for maintenance, recovery tools, reports, and operations that should require an intentional operator action. Give the workflow and steps descriptive names so the terminal makes the consequence clear before the operator presses Enter.