Expand description
Telemetry event emission and tracking.
This module provides types and utilities for emitting structured telemetry events from nodes. Telemetry events are used for observability, debugging, and UI timelines.
§Design Principles
- Best-effort delivery: Telemetry never blocks audio processing
- Wire-compatible: Events wrap
CustomPacketDatafor future “telemetry as track” support - Rate-limited: Emitters automatically throttle high-frequency events
- Drop accounting: Track dropped events for health monitoring
§Event Type Convention
All telemetry uses a single envelope type_id with event_type in the payload:
type_id: core::telemetry/event@1
data: { event_type: "vad.start" | "stt.result" | "llm.response", ... }§Usage Example
ⓘ
use streamkit_core::telemetry::TelemetryEmitter;
// In node initialization
let telemetry = TelemetryEmitter::new(
"my_node".to_string(),
context.session_id.clone(),
context.telemetry_tx.clone(),
);
// Emit a simple event
telemetry.emit("processing.start", serde_json::json!({ "input_size": 1024 }));
// Emit a correlated event (for grouping in UI)
telemetry.emit_with_correlation(
"llm.response",
"turn-abc123",
serde_json::json!({ "latency_ms": 842, "output_chars": 456 })
);Modules§
- telemetry_
helpers - Helper functions for emitting telemetry events directly from a sender.
These are lower-level functions for cases where you don’t want to use
TelemetryEmitter.
Structs§
- Telemetry
Config - Configuration for telemetry behavior.
- Telemetry
Emitter - Helper for emitting telemetry events from nodes.
- Telemetry
Event - A telemetry event emitted by a node.
Constants§
- TELEMETRY_
TYPE_ ID - The standard type_id for all telemetry events.