v0.25.0
thevoiceguy/siphon-aiv0.25.0Jul 8, 2026by github-actions[bot]
Upgrading?
AI Summary
Adds object storage upload (S3-compatible), AWS KMS integration for encryption keys, and Ogg-Opus recording format support.
Key Highlights
- S3-compatible object storage upload with spooling and retry logic.
- AWS KMS integration for envelope encryption keys (no AWS SDK).
- Ogg-Opus recording format added (~10x smaller than WAV).
- New lifecycle webhook `recording_uploaded`.
New Features
- S3-compatible object storage upload
- AWS KMS encryption integration
- Ogg-Opus recording format
Full Release Notes
### Added
- **Object-storage upload — `[recording.storage]`** (P1 "Recording
compliance & storage", second release). Finalized recordings upload to
any S3-compatible bucket (AWS, MinIO, Cloudflare R2, Backblaze B2 —
path-style, hand-rolled SigV4, **no AWS SDK**). Durable by design: a
small job file lands in `spool_dir` at call teardown (atomic, survives
restarts) and a background worker uploads with retries; a job that keeps
failing is dropped with a metric rather than wedging the spool, and the
local file is deleted only after a durable upload (opt-in
`delete_local_after_upload`). `key_template` names objects with
`{call_id}` / `{date}` / `{route}` / `{direction}`. The CDR gains an
additive `recording_url` (`s3://bucket/key`, stamped at enqueue) and a
new **`recording_uploaded`** lifecycle webhook (after `call_end`)
confirms arrival with `size_bytes`. New metrics:
`siphon_ai_recording_uploads_total{result}`,
`siphon_ai_recording_upload_spool_depth`,
`siphon_ai_recording_upload_seconds`. Retention/TTL stays the bucket
lifecycle policy's job (worked recipe in `docs/RECORDING.md` §9). Pair
with `[recording.encryption]` so the bucket only ever holds ciphertext.
**Off by default.**
- **AWS KMS as the recording KEK — `[recording.encryption.kms]`**. The KMS
hook the 0.24.0 envelope design reserved: each recording's data key is
wrapped by KMS `Encrypt` (the KEK never exists outside KMS; every unwrap
is IAM-auditable), on the same SigV4 client — still no AWS SDK. Exactly
one of `kek` / `kms`; `endpoint` override supports KMS-compatible
emulators. `siphon-ai decrypt-recording` gains `--kms-region` /
`--kms-endpoint` (credentials via `AWS_ACCESS_KEY_ID` /
`AWS_SECRET_ACCESS_KEY`); symmetric-KMS blobs name their own key, so no
key ARN is needed to decrypt. **Off by default.**
- **Ogg-Opus recording format — `[recording].format = "opus"`**. ~10×
smaller than WAV for voice, encoded with the same libopus the media path
already uses and playable by ffmpeg/VLC/browsers. Streaming-native
(RFC 7845), so nothing needs a finalize back-patch — including inside an
encrypted envelope. Extensions: `.opus` plaintext, `.opusa` sealed.
Adds the `ogg` crate (the theme's one new small dependency). **Default
stays WAV.**
---
**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.25.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