Groq, Baseten, Fireworks and Amazon Polly are wired

Status: scheduled.

Five upstreams the router previously had no way to call. Each was probed against its own live API before landing, not taken from vendor documentation. They become callable now and enter routing once they are measured, because the catalog is derived from benchmark evidence rather than written by hand.

Groq serves both language models and transcription, Baseten and Fireworks serve language models, and all four speak the OpenAI wire exactly, so they needed no adapter code at all.

Amazon Polly speech synthesis arrives through a native adapter that signs each request with SigV4. Polly caps PCM at 16 kHz while every other synthesis upstream is pinned to 24 kHz, so the router resamples rather than serving audio that would play half again too fast under a header declaring the wrong rate. That conversion needs the whole utterance, so Polly is buffered rather than progressive.

These five are callable, not yet routable. GET /v1/models lists what the routing snapshot measures, so an upstream with no benchmark evidence stays out of the catalog rather than appearing unranked. Wiring precedes measurement because the adapter is what lets a benchmark run through the gateway at all.

Groq transcription is batch only, and Groq accepts ISO 639-1 codes only, so it spells Norwegian differently from the tag the router routes on. Both constraints are recorded beside the upstreams they bind.

Speech-to-speech now proves an upstream is alive before routing to it. A successful socket handshake was being scored as candidate health, but a rejected session returns the same handshake and reports the failure as an in-band error frame, so one rotated credential could consume every session while the healthy provider behind it was never dialled and the breaker never opened.

Action: No migration is required. Existing keys are unaffected. Four credentials must be bound in every region before these upstreams report routable: GROQ_API_KEY, BASETEN_API_KEY, FIREWORKS_API_KEY and the Amazon credential. An unbound credential disables only its own upstream.