Changelog
What's new in Halyard
Every release of the gateway, keys, limits and usage, newest first. Breaking changes are always announced one minor version ahead.
Shadow mode for rate limits
Set any limit to shadow and Halyard evaluates it on live traffic without rejecting a request. Would-be 429s show up in logs and in a new panel on the limit page, grouped by key, so you can see who a limit would hit before you enforce it.
limit: 100 / min · mode: shadow - Switch a limit between shadow and enforce without a deploy
- Would-be rejections are tagged shadow_limited in log drains
- The SDKs gained limits.update({ mode })
Key expiry and revoke-when-idle
Keys can now carry an expiry, and rotation can revoke the old key automatically once it has been idle for a period you choose. The key page shows last-used time and region for both keys during the overlap.
rotate · overlap 24h · revoke when idle 1h - expiresAt on key create and update
- expireOldWhenIdle option on keys.rotate
- Expiring-soon warnings by email and webhook
Data residency in the EU and APAC
Enterprise projects can be pinned to eu-central or ap-southeast. Logs, usage records and key metadata for a pinned project are stored and processed only in that region.
data residency · pin a project to a region - Region selector on project create
- Residency shown on every log line
- Cross-region failover stays inside the pinned region pair
Log drains
Stream request logs to your own object storage, an HTTPS endpoint or a stream topic. Drains batch, retry with backoff and keep ordering per key, so downstream jobs can rely on sequence.
log drains · batched, retried, ordered per key - Up to five drains per project
- Field filters to drop request bodies or headers
- Drain health and lag on the project overview
Usage export for invoicing
Usage export now groups by key, by customer metadata or by both, and closes each billing period at the boundary you configure. The totals match the counters the limiter enforces, to the request.
usage.csv · per key, per billing period - CSV and JSON exports, or a scheduled push to your drain
- Custom billing period boundaries per project
- Rejected requests are excluded from billable counts
Spend caps per key
Attach a monthly spend cap to any key, priced from your own per-request rates. Halyard alerts at a threshold you set and returns a 429 with reason spend_cap_reached when the cap is hit.
spend cap · $500 per key per month - Caps in requests or in currency
- Alert thresholds by email and webhook
- Cap state exposed on the key in the API
Audit log
Every change to keys, limits, members and project settings is now recorded with who made it, from where and what changed. Enterprise plans keep the audit log without a retention limit.
audit log · every change, who made it - Filter by actor, resource or action
- Export to your drain alongside request logs
- Before-and-after values on every update
Faster config propagation
We rebuilt how limit and key changes reach the edge. In our own measurements across every region, p95 propagation dropped from 9 seconds to 1.6 seconds, which also shortens how long a revoked key can still be used.
config propagation to every region · p95 - Revocations jump the queue ahead of other changes
- Propagation status shown on every config change
- Fixed a case where a renamed limit kept its old counters