v0.50.1
windmill-labs/windmillv0.50.1Aug 24, 2026by github-actions[bot]
Upgrading?
AI Summary
Fixes observability blind spots by counting trunk gate rejections and correcting metric labels for admin endpoints.
Key Highlights
- Trunk gate 403s now counted as `rejected_trunk` in metrics.
- Four admin endpoints fixed to report correct labels instead of `unknown`.
- Updated siphon-rs and forge-media dependency pins.
New Features
- Trunk rejection metric (`rejected_trunk`).
- Admin endpoint metric accuracy.
Full Release Notes
**Two observability blind-spot fixes and routine upstream pin rolls.**
Both fixes came out of validating the 0.50.0 getting-started flow: the
`[[trunk]]` gate's 403s — the exact scanner traffic the gate exists to
shed — were invisible on `/metrics`, and four 0.49.0 admin endpoints
reported as `endpoint="unknown"`. No protocol change (still `1`), CDR
still v8, no new config keys. Drop-in upgrade; alerting can now key on
`siphon_ai_invites_total{result="rejected_trunk"}`.
### Changed
- **siphon-rs pinned to `v2026.08.24`** (from `v2026.08.21`) — picks up
[sip-identity 0.3.0](https://github.com/thevoiceguy/siphon-rs/pull/124):
PASSporT **signing** behind a new `sign` feature
([siphon-rs #123](https://github.com/thevoiceguy/siphon-rs/pull/123)),
the provider-side complement to the ES256 verification SiphonAI already
uses. SiphonAI does not enable the feature, so verification behaviour is
unchanged — this makes outbound STIR/SHAKEN signing (long demand-gated)
buildable against the current pin when it's picked up.
- **forge-media pinned to `c277860cd123`** (from `1fe94a502efa`) — one
commit: aligns forge-media's own siphon-rs submodule to `v2026.08.24`,
keeping both pins on the same upstream revision (the media path sees
siphon-rs through that submodule).
### Fixed
- **`[[trunk]]`-gate 403s now count in `siphon_ai_invites_total` as
`result="rejected_trunk"`**
([#564](https://github.com/thevoiceguy/siphon-ai/issues/564)). The allowlist gate runs in the SIP
dispatch layer before the acceptor, whose paths owned every increment of
that counter — so the INVITEs the gate sheds (scanner traffic hammering
the SIP port from non-allowlisted sources) were invisible on `/metrics`
and unalertable without log-pipeline tooling. Per-peer detail stays in
the audit stream and SIP ring; the new label is alertable directly.
Digest-auth 401s are deliberately still not in this counter (a challenged
INVITE retries with credentials and is counted then) — that gate's
brute-force signal remains `siphon_ai_sip_auth_total{result="failed"}`.
- **Four admin endpoints no longer report as `endpoint="unknown"` in
`siphon_ai_admin_requests_total`**
([#565](https://github.com/thevoiceguy/siphon-ai/issues/565)):
`GET /admin/v1/status`, `GET /admin/v1/errors`,
`GET /admin/v1/cdrs/recent`, and `POST /admin/v1/drain` — the 0.49.0
sightglass endpoints — got authorization arms but no metric-label
arms, so their traffic lost per-endpoint visibility and polluted the
`unknown` probing signal dashboards key on. The static route table is
now a single shared source (`STATIC_ROUTES`) answering both
`min_role` and `route_label`, so a route can no longer be known to
authorization yet invisible to metrics.
---
**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.50.1` (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