Skip to main content
Theo supports two complementary event systems for the E.V.I. canvas Input node’s Webhook Event and Hook Event trigger types.

Webhooks — Outbound HTTP Notifications

Webhooks deliver events to your HTTP endpoints. When something happens in Theo (completion, job finish, skill install, etc.), a signed POST is sent to every matching endpoint.

Register a Webhook

The response includes a signing_secret — save it securely. It’s shown once and used to verify payloads.

Event Catalog

Use "*" as an event type to receive all events.

Verify Signatures

Every delivery includes HMAC-SHA256 signatures:
Verify by computing HMAC-SHA256(signing_secret, timestamp + "." + raw_body) and comparing. Reject if the timestamp drifts more than 5 minutes.

Retry Behavior

  • Automatic retries with exponential backoff on transient failures
  • Per-attempt timeout enforced server-side
  • 4xx errors are not retried (client errors)
  • Webhooks are auto-disabled after a sustained run of failed deliveries
  • Every attempt — successful or failed — is recorded in the delivery log

Manage Webhooks

  • GET /api/v1/webhooks — List all webhooks
  • PATCH /api/v1/webhooks/{id} — Update URL, event types, enable/disable
  • DELETE /api/v1/webhooks/{id} — Remove
  • POST /api/v1/webhooks/{id}/test — Send a test event
  • GET /api/v1/webhooks/{id}/deliveries — View delivery log

Hook Events — Autonomous Skill Triggers

Hooks are internal event triggers that automatically execute skills when events occur — no HTTP endpoint needed. The skill runs headless via the autonomous executor with credit guards.

How Hooks Work

  1. An event is published (via POST /api/v1/events or internal platform events)
  2. The hook evaluator checks all enabled hooks for pattern matches
  3. Matching hooks load the associated skill and execute it autonomously
  4. Results are recorded in the execution log

Hook Presets

Install a Hook

Custom Event Patterns

Patterns support:
  • Exact match: share.accepted matches only share.accepted
  • Glob wildcard: order.*.completed matches order.purchase.completed, order.return.completed
  • Prefix match: share matches share.accepted, share.declined, etc.
  • Catch-all: * matches everything

Publishing Events

Use POST /api/v1/events to publish domain events that trigger hooks and webhooks:

Guard Rails

Autonomous execution runs under strict safety limits:
  • Pre-flight credit check before each run
  • Separate daily cap for autonomous actions
  • Per-run caps on tool invocations and total spend
  • Credit checkpoint between steps
  • Hooks auto-pause after repeated failures
  • Configurable cooldown between firings to prevent runaway execution

Manage Hooks

  • GET /api/v1/hooks — List hooks (includes available presets)
  • PATCH /api/v1/hooks/{id} — Update config, enable/disable
  • DELETE /api/v1/hooks/{id} — Remove
  • GET /api/v1/hooks/{id} — View execution history