v0.35.0

thevoiceguy/siphon-aiv0.35.0Jul 16, 2026by github-actions[bot]

Upgrading?

AI Summary

Security hardening is added via an optional bearer token authentication mechanism for the `/metrics` endpoint, allowing deployments to restrict access when the port is exposed externally.

Key Highlights

  • Optional bearer token authentication for the `/metrics` endpoint.
  • New configuration option `[observability].metrics_token`.
  • Unset token defaults to an open endpoint, ensuring backward compatibility.

New Features

  • Optional bearer auth for metrics endpoint.

Full Release Notes

### Added

- **Optional `/metrics` bearer auth** —
  `[observability].metrics_token`
  (`docs/design/DESIGN_METRICS_AUTH.md`; #294). Recon-hardening for
  deployments that expose the observability port beyond loopback:
  when set, `GET /metrics` requires `Authorization: Bearer <token>`
  (SHA-256 + constant-time compare, the admin listener's scheme; only
  the hash is retained in memory). Failures answer `401` +
  `WWW-Authenticate: Bearer`. **Unset = open**, the default —
  existing deployments are unchanged. `/health` and `/ready` are
  never gated (probes must not need secrets). Empty-after-expansion
  tokens fail at load; use `${file:…}` / `${cred:…}`.
  Prometheus-side `authorization.credentials_file` snippet documented
  in `docs/DEPLOY.md` and `examples/observability/prometheus.yml`.
- **Metric**: `siphon_ai_metrics_requests_total{result=ok|unauthenticated}`
  — emitted only when the gate is configured (an open endpoint counts
  nothing); rejected scrapes also log a rate-limited warning.

This closes the last locally-buildable P2 roadmap item. No WS-protocol,
CDR, or webhook changes.

---

**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.35.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