v0.26.0
thevoiceguy/siphon-aiv0.26.0Jul 9, 2026by github-actions[bot]
Upgrading?
AI Summary
Adds recording consent announcement features and audit trails, enabling compliant recording prompts and supporting recording for outbound calls.
Key Highlights
- Recording consent announcement feature with `[recording.announcement]` config.
- Consent audit trail added to CDR (`consent.announced`, `announcement_ms`).
- Outbound leg recording support added.
- Recording capture starts only after prompt completion.
New Features
- Recording consent announcement
- Consent audit trail in CDR
- Outbound call recording support
Full Release Notes
### Added
- **Recording consent announcement — `[recording.announcement]`** (P1
"Recording compliance & storage", final release — the theme is
complete). Point `file` at a "this call may be recorded" WAV and the
daemon plays it to the caller right after answer; **capture starts only
when the prompt finishes**. The WS session connects in parallel
(announce-then-bridge); the bot can't talk over the prompt, and nothing
the caller says during it reaches the recording *or* the server. With
`mode = "on_demand"`, a `start_recording` arriving mid-prompt is
deferred to prompt completion. **Fail-closed**: if the prompt can't play
(missing file, wrong sample rate), the call is *not* recorded — and the
CDR shows `consent.announced = false`. Applies to inbound and outbound
legs. **Off by default.**
- **Consent audit trail on the CDR** — additive
`consent { announced, announcement_ms, server }` object (schema version
unchanged). `announced`/`announcement_ms` come from the daemon-played
prompt; `server` from the new **`set_recording_consent`** WS control
message (`{ "type": "set_recording_consent", "call_id", "note"? }`) —
a stamp for consent your server captured itself (DTMF press-1, verbal
yes). A stamp, not a gate: capture gating stays `on_demand` +
`start_recording`. Protocol stays **v1**.
- **Outbound-leg recording.** Originated calls (`POST /admin/v1/calls`)
can record exactly like inbound ones — same `[recording]`
dir/encryption/format, same on-demand WS controls, same object-storage
upload spool. Per-gateway default (`[[gateway]].recording = "off"
(default) | "always" | "on_demand"`, validated at load) plus a
per-originate `"recording"` override (`400` for bad values, rejected
before a toll-fraud concurrency permit is consumed). Recording an
outbound leg is config/API opt-in, never implied. **Off by default.**
---
**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.26.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