Docs
Real-time capture
An n8n external hook that pushes each finished execution to the agent immediately — and catches successes n8n itself discards.
By default the agent polls n8n on an interval. You can also have n8n push each
finished execution to the agent the moment it completes, using n8n's
workflow.postExecute external hook.
Both paths feed the same pipeline and Obsevo de-duplicates on
(instance, execution_id), so running them together never double-counts. The poll
stays on as a catch-up path for anything the hook missed while the agent was down.
Why it is worth setting up
Runs appear in about a second rather than up to a poll interval later.
It captures successes n8n discards. This is the part that matters. The
postExecute hook fires on the execution lifecycle, before persistence — so it
sees executions even when n8n is configured with
EXECUTIONS_DATA_SAVE_ON_SUCCESS=none. Polling can only ever see what n8n chose
to save. On a busy install that setting is common, and without the hook those
successful runs are invisible to everything, including
green-but-broken detection, which needs successful runs to
build its baseline.
Privacy is unchanged. The hook posts the execution to the agent on the local Docker network. The agent strips payloads and forwards only signed metadata, so raw execution data still never leaves the host.
Enabling it
Set a token on the agent. Setting OBSEVO_HOOK_TOKEN is what turns the receiver
on; without it, the agent does not listen at all.
| Env var | Default | Notes |
|---|---|---|
OBSEVO_HOOK_TOKEN | — | Enables the receiver. Minimum 16 characters |
OBSEVO_HOOK_HOST | 127.0.0.1 | Bind address |
OBSEVO_HOOK_PORT | 5680 | Listen port |
OBSEVO_HOOK_MAX_BYTES | 16777216 | Largest accepted body |
Then point n8n at it with an external hook file and the same token, container to
container — for example http://obsevo-agent:5680/hook.
The full compose recipe, including the hook file itself, ships with the agent.