v0.12.0
thevoiceguy/siphon-aiv0.12.0Jun 19, 2026by thevoiceguy
Upgrading?
AI Summary
Operability release introducing a config-validation CLI and `SIGHUP` hot-reload for routes, webhooks, CDR sinks, and SIP TLS certificates.
Key Highlights
- New CLI subcommands: `check`, `print-config`, and `route-test` for preflight and diagnostics.
- Full `SIGHUP` hot-reload for routes and webhook/CDR sinks.
- Fail-safe reload mechanism that retains the old config if the new one fails to compile.
- New metric `siphon_ai_config_reloads_total`.
New Features
- Config-validation CLI
- SIGHUP hot-reload for routes and sinks
- SIP TLS certificate reload via SIGHUP
Full Release Notes
Operability release: a real config-validation CLI and `SIGHUP` hot-reload. Running the daemon is unchanged — `siphon-ai --config X` with no subcommand.
## Added — config CLI subcommands
- **`siphon-ai check --config X`** — validate + compile and exit (no sockets, no runtime). Exit `0` + a one-screen summary if valid, `1` + the error on stderr otherwise. The CI / pre-deploy / pre-`systemctl reload` preflight. (Also fixes the documented-but-nonexistent `--check` flag in `contrib/README.md`.)
- **`siphon-ai print-config --config X [--show-secrets]`** — render the *effective* compiled config (post-`${VAR}`, post per-route merge); **secrets redacted by default**.
- **`siphon-ai route-test --config X --to N [...]`** — run the dialplan against a synthetic call (first-match-wins) and report the winning route (or `NO MATCH → 404`) + its effective bridge config.
## Added — `SIGHUP` config hot-reload
`systemctl reload siphon-ai` re-reads the `--config` file and hot-applies the reload-safe sections **without dropping calls**:
- **routes** — new INVITEs use the new dialplan; in-flight calls keep the route they matched;
- **`[webhooks]` / `[cdr]` sinks** — rebuilt + swapped, *unless* a durable `spool_dir` is active for that sink (its drain worker can't be hot-swapped → restart required there);
- the `[sip.tls]` cert reload (0.3.0) is folded into the same handler.
**Fail-safe:** a config that doesn't load/compile is logged + counted and the running config is kept — a bad edit can't take the daemon down. Run `check` first:
```sh
siphon-ai check --config /etc/siphon-ai/config.toml && systemctl reload siphon-ai
```
**Restart-required sections** — `[sip]` listen/transports, `[node]`, `[media]`, `[observability]`, `[admin]`, `[hep]`, `[security.stir_shaken]`, and `[[gateway]]` bind sockets / build process-wide state and need a restart. A reload that changes one applies the safe sections and logs a warning naming it.
New metric `siphon_ai_config_reloads_total{result=applied|no_change|failed}`.
> **Gateway hot-reload** (recreating UAC-backed originators) is a planned fast-follow into 0.12.x; until then `[[gateway]]` changes are restart-required.
Docs: `docs/CONFIG.md` → *Validating, inspecting & reloading config*; `docs/DEPLOY.md` → *Config file reload*.
🤖 Generated with [Claude Code](https://claude.com/claude-code)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