v1.1.10
[1.1.10] — 2026-07-03
Proxy & governance hardening release. Corrects the /v1/* pass-through proxy so it no longer doubles the /v1 path segment and no longer forwards OpenAI-shaped requests to providers whose upstream API is not OpenAI-compatible, and extends per-key budget governance to the embeddings and image-generation endpoints. Adds an optional provider request-signing hook and a shared base-URL validator. No breaking API changes relative to v1.1.9 — the Provider, ProxiableProvider, and plugin contracts are unchanged.
Fixed
- Pass-through proxy path doubling: the
/v1/*pass-through no longer duplicates the/v1segment for providers whose configured base URL already ends in/v1(e.g.https://api.x.ai/v1), which previously produced a/v1/v1/...upstream path and a 404. Both base-URL conventions now forward correctly.
Changed
- Pass-through proxy scope (operator-visible): the
/v1/*pass-through now returns HTTP 501 for providers whose upstream API is not OpenAI-wire-compatible — Anthropic, Google Gemini, AWS Bedrock, Cohere, Vertex AI, and Azure OpenAI/Foundry — instead of forwarding an OpenAI-shaped request their API cannot process (which failed upstream, and for AWS Bedrock under SigV4 was sent unauthenticated). These providers remain fully available through their translatedchat/completions,embeddings, andimages/generationsendpoints. - Per-key budget on embeddings and images (operator-visible): per-key budget limits now apply to
/v1/embeddingsand/v1/images/generations, not only chat. Embedding requests are gated and their spend recorded; image generation is gated (it reports no token usage). Per-IP rate limiting, authentication, and the request body-size limit already applied to every endpoint.
Added
- Provider request-signing hook: an optional
RequestSignerprovider interface lets a provider sign each outbound pass-through request (e.g. AWS SigV4); the proxy invokes it when a provider implements it. No in-tree provider signs yet — this is the seam for future signed pass-through. - Shared base-URL validation: a shared
core.ValidateBaseURLhelper validates that a provider base URL is anhttp(s)URL with a host, adopted by the Anthropic provider. Remaining providers migrate to it in subsequent releases.
Contributors
Thanks to everyone who shipped this release:
- v1.1.10 - Proxy & Governance Hardening (#319) — @MitulShah1
Full changelog: https://github.com/ferro-labs/ai-gateway/blob/v1.1.10/CHANGELOG.md