Skip to content

Live-ingest — the in-process observe producer

Live-ingest (modules/liveingest) is one of the 30 wired modules — an in-process producer rather than a capability slot. It is not part of the historical numbered map I–XXIII. It exists for one architectural reason: an out-of-process SourceConnector can stream only the sealed observation sum (edge / cost / finding) over its gRPC contract, which has no event RPC and no text field — so it cannot publish a detective event. Only an in-process module holds the bus publish capability, so live-ingest is the “live-tap” half that emits those events for the modules that already consume them.

The control plane’s Claude telemetry connector runs out-of-process as an embedded plugin; its Gather stream carries only the frozen Observation oneof. That wire contract is deliberately frozen (breaking-change-checked; see the API stability policy) and carries no excerpt or text surface. Live-ingest is the in-process producer that supplies the two events the connector structurally cannot: guardrail.observed for module IX and voice.telemetry.observed for module XVI. It owns no entities and no REST surface; it is a publisher onto the event bus.

This is the missing producer for the security detector chain that already consumes guardrail.observed. It is deny-closed and opt-in:

  • Default (inspection off). The module subscribes to nothing, publishes nothing, and logs its empty half visibly — never a silent no-op.
  • With the operator opt-in on. It subscribes to edge.observed and, for an edge whose resource is a resolved tool reference, derives a bounded, already-redacted tool_args excerpt and publishes it as an ObservedText carrying only non-sensitive reference fields. The excerpt is the resource identifier the connector already redacted at source (a sanitized path, a host+path with no query or credentials, a Bash program name with its arguments dropped, an MCP tool reference). Live-ingest bounds it and the security chain clamps it again — triple defense. The argument’s content is discarded at the connector and never reaches the bus.

The detector chain then emits a finding per detection automatically, over real traffic.

What it produces — voice.telemetry.observed

Section titled “What it produces — voice.telemetry.observed”

A wired in-process producer for allow-listed voice/realtime turn metadata only — never audio and never transcript text. The payload is a typed value that by construction cannot carry audio, transcript or PII, and the consumer rejects any sample with a key outside the allow-list or a missing session/agent reference. With no voice realtime backend in this build, nothing calls it: the observe half is honestly dormant and fabricates no telemetry until a backend feeds it.