Expand description
Non-intrusive pipeline monitoring (PROCESSOR-DESIGN §5.1).
A FrameObserver sees every processed/pushed frame without sitting in the
chain — the seam OpenTelemetry/Sentry/Langfuse/RTVI observers plug into. The
Observer fan-out is cheaply clonable; hooks are invoked synchronously on
the hot path only when at least one observer is registered (the run loop
skips the call entirely otherwise — zero-cost-when-off).
Mirrors pipecat BaseObserver (observers/base_observer.py:70).
The rtvi sibling is a pure frame→event RTVI-protocol observer; the
network exporters (OpenTelemetry/Sentry/Langfuse) live in
flowcat-services so core stays dependency-light.
Re-exports§
pub use rtvi::FunctionCallReportLevel;pub use rtvi::RtviMessage;pub use rtvi::RtviObserver;pub use rtvi::RtviObserverParams;pub use rtvi::RtviSink;pub use rtvi::VecSink;pub use rtvi::MESSAGE_LABEL as RTVI_MESSAGE_LABEL;pub use rtvi::PROTOCOL_VERSION as RTVI_PROTOCOL_VERSION;
Modules§
- rtvi
- RTVI-protocol observer (pure frame→message mapping, no network).
Structs§
- Frame
Event - A processor is about to handle a frame.
- Frame
Push Event - A frame was pushed source→destination.
- Idle
Frame Observer - Drives idle detection (PROCESSOR-DESIGN §4.1 / pipecat
task.py:70): bumps a monotonic counter every time one of the configured “activity” frame kinds is observed. ThePipelineTaskidle watcher reads the counter and fires a timeout when it stops advancing. - Metrics
LogObserver - Collects (and
tracing-logs) everyMetricsDataflowing onFrame::Metrics— a pure, network-free metrics observer. Mirrors pipecat’sMetricsLogObserver: it watches the push hook, de-dupes by frame id, and records each metric with its timestamp so tests (and metric exporters) can read TTFB/RTF/processing/usage semantics without a live sink. - Observed
Metric - One observed metric, tagged with the pipeline-clock timestamp it was seen at.
The collected record the
MetricsLogObserverkeeps for inspection/export. - Observer
- Cheap clonable fan-out over many observers (pipecat
TaskObserverproxy,task.py:401). When empty, the run loop never calls into it. - Turn
Tracking Observer - Tracks user/bot speaking edges → turn boundaries (pipecat
TurnTrackingObserver). Records each boundary with its timestamp so tests and exporters can read the turn sequence. - User
BotLatency Observer - Measures the user-stop → first-bot-audio latency (TTFB of the bot’s reply).
Mirrors pipecat
UserBotLatencyObserver.
Enums§
- Turn
Edge - A turn boundary: who spoke and when (ns on the pipeline clock). Mirrors
pipecat’s
TurnTrackingObserveroutput.
Traits§
- Frame
Observer - Non-intrusive observer. Mirrors pipecat
BaseObserver(base_observer.py).