Groq()
Open-weight models at very high throughput, with your own API key. Costs go direct to the vendor at their rates — no markup, nothing on your Axon balance.
export default defineProfile({
providers: [Groq()],
})
Serves a fixed list — see below.
Credentials
Set the environment variable, or pass key on the declaration:
GROQ_API_KEY=...
providers: [Groq({ key: process.env.MY_OWN_VAR })]
Unlike OpenRouter() and
Codex(), direct providers are not vaulted yet: the
credential comes from the agent's environment. A deployed agent needs it set as a runtime
secret, or should use a vaulted route instead.
Declaring this provider without the variable set is not an error. The failure comes when something tries to use it, and names the variable you need.
Options
Groq(options?: ProviderOptions)
| Option | Default | Description |
|---|---|---|
key | GROQ_API_KEY | Your own credential, passed directly |
url | the provider's API | Endpoint override |
slots | unbounded | Ceiling on concurrent calls a fanned-out role may spend here |
An inference host, not a vendor
Groq does not publish models; it serves other vendors' open weights on its own hardware,
under names of its own choosing. OpenRouter's meta-llama/llama-3.3-70b-instruct is
llama-3.3-70b-versatile here, and nothing in the first name predicts the second.
So this provider serves an explicit list rather than deriving names. A model absent
from that list is not offered — which is deliberate: a derived name that Groq has never
heard of would resolve at boot and 404 on the first call, and the whole point of resolving
against a catalogue is to move that failure to axon prepare.
Currently mapped: the GPT-OSS models, Kimi K2, Llama 4 Maverick and Scout, Llama 3.3 70B, and Llama 3.1 8B. Others reachable on Groq's API can be added — open an issue with the canonical id and Groq's own name for it.
Model ids
Groq's own names:
export default defineAgent({ model: "groq:llama-3.3-70b-versatile" })
Why declare it
Throughput. Reach for Groq when latency matters and the workload suits open weights — compression, filtering, classification, a fanned-out percept role. Pair it with a frontier route for the roles that need one:
providers: [Groq(), Anthropic(), Axon()]