Module telemetry

Module telemetry 

Source
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 CustomPacketData for 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§

TelemetryConfig
Configuration for telemetry behavior.
TelemetryEmitter
Helper for emitting telemetry events from nodes.
TelemetryEvent
A telemetry event emitted by a node.

Constants§

TELEMETRY_TYPE_ID
The standard type_id for all telemetry events.