v0.23.0
thevoiceguy/siphon-aiv0.23.0Jul 8, 2026by github-actions[bot]
Upgrading?
AI Summary
Adds W3C trace-context propagation to the WebSocket server to enable distributed tracing with OpenTelemetry.
Key Highlights
- `traceparent` header propagation on WebSocket upgrade requests.
- `trace_context` field added to the `start` message.
- Fix for OTel span-context extraction to ensure propagation works.
- Continues the same trace across SIP and WebSocket spans.
New Features
- W3C trace-context propagation
- Trace context in WebSocket messages
- OTel span-context extraction fix
Full Release Notes
### Added - **W3C trace-context propagation to the WS server** (P1 "Observability completeness"; final sub-item — the theme is complete). When `[observability.otlp]` is enabled, the WS upgrade request now carries [`traceparent`](https://www.w3.org/TR/trace-context/) (+ `tracestate` when non-empty), and the `start` message carries the same values in a new additive `trace_context` field for servers whose WS library hides upgrade headers. A WS server that continues the trace from either place appears in the **same waterfall** as the daemon's SIP/media spans — one distributed trace per call across both services. The span-id propagated is the daemon's call-root span; park-retrieve and WS-reconnect sessions stay in the same trace. **The protocol stays v1**: the field is absent whenever OTLP is disabled (the default), so existing servers see an unchanged `start` shape. No new knob — OTLP on ⇒ headers + field, off ⇒ neither. The reference echo and OpenAI-Realtime example servers show the continuation pattern. See `docs/PROTOCOL.md` §3.1 and `docs/CONFIG.md` → `[observability.otlp]`. ### Fixed - **OTel span-context extraction now reaches the OTLP layer.** The 0.22.0 init installed the OTLP tracing layer behind `tracing_subscriber::reload`, whose downcast barrier made the layer invisible to `OpenTelemetrySpanExt::context()` — span *export* worked, but anything asking a live span for its trace context got nothing (this would have silently disabled 0.23.0's propagation). The layer is now installed concrete with a reloadable per-layer filter (`OFF` until `[observability.otlp]` activates it), preserving the zero-cost-when-disabled property. --- **Artifacts** - Static musl binaries for `x86_64` and `aarch64` (`.tar.gz`). - Debian packages (`.deb`) for `amd64` and `arm64` — `apt install ./siphon-ai_*_amd64.deb`. - `SHA256SUMS` — verify with `sha256sum -c SHA256SUMS`. - `*-sbom.cdx.json` — CycloneDX SBOM. - `SHA256SUMS.cosign.bundle` — cosign keyless signature over the checksums. - Container: `ghcr.io/thevoiceguy/siphon-ai:v0.23.0` (multi-arch, cosign-signed). Verify the checksums signature: ``` cosign verify-blob --bundle SHA256SUMS.cosign.bundle \ --certificate-oidc-issuer https://token.actions.githubusercontent.com \ --certificate-identity-regexp 'release.yml@' SHA256SUMS ```
Related Repositories
A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io
An open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer.
Build smaller, faster, and more secure desktop and mobile applications with a web frontend.
π RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.
Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one