Concepts

Triggers

A trigger is attached to one automation. When it fires, it starts one run, or applies the automation's concurrency policy if a run is already active. Triggers do not fan out across automations: if two automations want the same source event, each declares its own trigger.

Kinds

KindFires on
scheduleA cron expression or interval, evaluated in the project's timezone.
eventA durable source event like github.issues.opened or table.row.inserted.
webhookAn inbound HTTP request to an automation-specific receive URL.

Picking the right kind

If a third party already emits the event you care about, such as Slack, GitHub, Linear, Jira, Gmail, or email, use an event trigger. Mobius's integrations do the verification, deduplication, and replay.

If the third party is one Mobius does not integrate with yet, use a webhook trigger. You get a receive URL and the external system POSTs to it directly.

If nothing external fires the event and you just need cadence, use a schedule trigger.

You can attach multiple triggers to one automation. A nightly cleanup with both a schedule trigger and a manual HTTP trigger is a common shape.

Source events

Source events are the events event triggers and wait_for_event steps match against. They are emitted by integrations, tables, agent sessions, HTTP triggers, artifacts, interactions, signals, and run lifecycle changes.

Provider events use provider.resource.verb. Mobius-native events use domain.object.verb. Wildcards match a subtree, such as github.pull_request.*.

github.pull_request.opened
github.issues.opened
github.check_run.completed
github.push
 
slack.event
slack.interactivity
slack.command
 
linear.issue.created
linear.issue.updated
linear.comment.created
gmail.message.received
jira.issue.created
 
email.received
http_trigger.received
table.row.inserted
table.row.updated
table.row.deleted
session.message.created
artifact.created
interaction.resolved
run.completed
run.failed
run.cancelled
signal.deploy_complete

The canonical list is project-aware because integrations can add or remove provider events:

mobius catalog list-events

See Source events for the envelope shape, catalog fields, and matching rules.

Configuration reads like English

Triggers carry filter config, and the UI renders it in natural language wherever possible. A Slack message trigger reads as:

Any Message from Anyone in #ops

A GitHub issue trigger reads as:

Issue Opened in deepnoodle-ai/api with label bug

The underlying config is JSON, but the human-readable rendering is what you see in the automation editor and CLI output.

Concurrency and triggers

The trigger does not decide what happens when it fires while a run is in flight; the automation's concurrency policy does. A burst of GitHub events does not have to mean a burst of overlapping runs. Pick queue to serialize, forbid to drop, or replace to keep only the latest. See Automations for the full set.

Schedule triggers

- kind: schedule
  config:
    cron: "0 9 * * MON-FRI"
    timezone: "America/New_York"

Schedule internals flow through Mobius's durable source-event pipeline, but authors do not subscribe to an internal schedule event. Declare the schedule trigger and the runtime wires it up.

Inbound vs. outbound webhooks

Webhook triggers are the inbound direction: external systems POST to Mobius, a run starts. The outbound direction, where Mobius POSTs your service when a run finishes, is a different surface; see Webhooks.