Events overview
Everything the pipeline does emits a structured event — a run starting, a stage completing, a PR opening, a circuit breaker tripping. Around 80 event types flow through one dispatch system, and you subscribe to them in one of two ways.
Event domains
Section titled “Event domains”Event types are dotted strings, grouped by domain:
| Domain | Covers |
|---|---|
pipeline.* | A single run: lifecycle, stages, agents, beads, git, tests, review, cost, hooks. |
control.* | Inbound control signals — pause / resume / abort a run from outside. |
fleet.* | Fleet-level lifecycle across a fan-out. |
workspace.* | Workspace-level lifecycle, tiers, integration tests, umbrella issue. |
The complete catalog is in the Events reference.
The envelope
Section titled “The envelope”Every event is wrapped in a consistent envelope, so a subscriber can route on event_type and dedupe on event_id without parsing the payload:
{ "schema_version": 1, "event_id": "<uuid>", "event_type": "pipeline.run.completed", "timestamp": "2026-05-21T14:32:01.123Z", "run_id": "<run_id>", "pipeline": { /* run context */ }, "payload": { /* event-specific fields */ }}Two ways to subscribe
Section titled “Two ways to subscribe”| Mechanism | Best for | Configured in |
|---|---|---|
| Webhooks | Programmatic integrations — CI, dashboards, paging, custom automation. Optional HMAC signing; can even pause/abort a run from the response. | Settings → Webhooks panel (writes worca.webhooks in settings.json). |
| Chat integrations | Human notifications in Telegram, Discord, Slack, or a generic webhook. | Integrations panel (writes ~/.worca/integrations/config.json). |
Webhooks deliver the raw event to any URL. Chat integrations render a curated subset of events into readable chat messages.