AI Gateway Source
The AI Gateway source reads this org's own daily Insights digests and feeds them into the same graph your connected tools build. It is a registered source type (aigateway) — create it once — not a synthetic row. The push-only AI Chat capture (ai_chat) is the one that is auto-provisioned; this one is not.
What it ingests
Each daily Insights digest (ws_summaries, summary_type='daily') becomes one sensor.Event. The ontology AI Gateway mapper then derives entities from the digest text: a container entity for the digest itself (default CreativeWork) plus the owner's Person, and — after the LLM extraction pass — Topic, Decision, ActionItem, Project, Organization, and Technology.
The digest has to exist first. Insights summaries are generated from gateway AI traffic; until there is traffic to summarize, a poll of this source is empty.
Credential
None. There is no vault entry and no credentials object. Reads go through the injected org-scoped DB handle (InternalSourceSensor) — the same RLS-scoped transaction the rest of the poll uses. The source is this org's own ws_summaries table.
Config fields
None. ConfigFields on the registered spec is empty. The display name is the create-form's top-level name field (not a config key).
Provider-side setup
None. This is not an external connector. The only prerequisite is that daily Insights summaries exist for the org — which means gateway AI traffic has already been summarized. Until then, Poll now succeeds with zero events.
Wire-up
Dashboard: Corvus → Sources → Add sensor → AI Gateway, name it, save, then Confirm bindings & start processing. The row sits in bindings required until that confirm click, same as every other registered source.
API (POST /api/sensors — plumbing noun unchanged):
{
"sensor_type": "aigateway",
"name": "AI Gateway",
"config": {},
"credentials": {}
}Verify
The row goes active after confirm. Use Poll now (or wait for the schedule). Events appear on the source row first; graph entities land after the ~30 minute extraction cycle.
Ingestion is forward-only by default: a fresh source pins its watermark to enable-time so existing history is not replayed. History is opt-in via the framework's first-run backfill window (SENSOR_BACKFILL_SINCE).