> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.jambonz.org/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.jambonz.org/_mcp/server.

# Bring Your Own LLM

The [agent verb](/verbs/verbs/agent) wires together STT, LLM, and TTS into a complete voice agent. The `llm` block selects which LLM vendor jambonz talks to. Credentials live in the **LLM Services** section of the jambonz portal — once added there, you reference them from any agent verb by `vendor`.

This section walks through configuring each supported vendor, including known issues and gotchas we've hit in production.

## Supported vendors

| Vendor                                                                          | `llm.vendor`    | Auth            | Tool calling | Strengths                                                                         |
| ------------------------------------------------------------------------------- | --------------- | --------------- | ------------ | --------------------------------------------------------------------------------- |
| [Anthropic](/guides/features/bring-your-own-llm/anthropic)                      | `anthropic`     | API key         | ✓            | Best-in-class instruction following (Claude)                                      |
| [AWS Bedrock](/guides/features/bring-your-own-llm/bedrock)                      | `bedrock`       | API key or IAM  | ✓            | Claude, Llama, Mistral, Nova on AWS infra                                         |
| [Azure OpenAI](/guides/features/bring-your-own-llm/azure-openai)                | `azure-openai`  | API key         | ✓            | OpenAI models inside Azure (data residency, BAA)                                  |
| [Baseten](/guides/features/bring-your-own-llm/baseten)                          | `baseten`       | API key         | ✓            | Hosted open-weight catalog (DeepSeek, GLM, Kimi, GPT-OSS) + dedicated deployments |
| [DeepSeek](/guides/features/bring-your-own-llm/deepseek)                        | `deepseek`      | API key         | ✓            | Strong reasoning at low cost                                                      |
| [Google AI Studio](/guides/features/bring-your-own-llm/google)                  | `google`        | API key         | ✓            | Gemini family, generous free tier                                                 |
| [Groq](/guides/features/bring-your-own-llm/groq)                                | `groq`          | API key         | ✓            | Sub-100ms TTFT — Llama on LPU silicon                                             |
| [HuggingFace](/guides/features/bring-your-own-llm/huggingface)                  | `huggingface`   | HF token        | ✓            | Multi-provider broker (Inference Providers) — one token, many backends            |
| [Moonshot (Kimi)](/guides/features/bring-your-own-llm/moonshot)                 | `moonshot`      | API key         | ✓            | Kimi K2 MoE family over an OpenAI-compatible API                                  |
| [OpenAI](/guides/features/bring-your-own-llm/openai)                            | `openai`        | API key         | ✓            | Industry standard, broadest model catalog                                         |
| [Vertex AI — Gemini](/guides/features/bring-your-own-llm/vertex-gemini)         | `vertex-gemini` | Service account | ✓            | Gemini on GCP infrastructure with enterprise data controls                        |
| [Vertex AI — Partner Models](/guides/features/bring-your-own-llm/vertex-openai) | `vertex-openai` | Service account | ✓            | Llama, Mistral, AI21 hosted on Vertex                                             |
| [xAI (Grok)](/guides/features/bring-your-own-llm/xai)                           | `xai`           | API key         | ✓            | Grok family (grok-4.3, grok-4.20) — reasoning + vision                            |
| [Z.ai (GLM)](/guides/features/bring-your-own-llm/zai)                           | `zai`           | API key         | ✓            | GLM family over an OpenAI-compatible API                                          |

> **Note**
>
> This page covers the **agent verb's** `llm` block (cascaded STT → LLM → TTS pipelines). For speech-to-speech vendors that handle audio in and audio out directly (OpenAI Realtime, Ultravox, Google Gemini Live, ElevenLabs, xAI Voice Agent), see the [llm verb](/verbs/verbs/llm).

## Common patterns

### Adding a credential

In the jambonz portal, navigate to **Account → LLM Services → + Add LLM Service**. Pick a vendor from the dropdown, fill in the fields the form requests, and click **Test** to verify before saving. The Test button issues a cheap authenticated probe against the vendor — green means the credential works.

### Picking a credential at call time

In the typical case — one LLM credential per vendor on your account — jambonz resolves the credential automatically from the `vendor` field. No `label` is needed:

```js
session.agent({
  llm: {
    vendor: 'openai',
    model: 'gpt-4o-mini',
  },
  // ...
}).send();
```

This is the recommended setup for nearly all customers. **Don't set a label when creating the credential, and don't pass one in the agent verb.**

### Multiple credentials for the same vendor (rare)

The only reason to use a label is if you've added two or more credentials for the **same** vendor on the same account — e.g., separate dev and production OpenAI keys you want both available. In that case, give each credential a distinct label in the portal at create time, then reference it from the agent verb:

```js
session.agent({
  llm: {
    vendor: 'openai',
    label: 'production',
    model: 'gpt-4o-mini',
  },
  // ...
}).send();
```

If you only ever have one credential per vendor (the common case), skip the label entirely.

### Inline `auth` (rare)

For one-off testing or when you don't want to store credentials in the portal, you can pass `auth` inline in the verb payload:

```js
session.agent({
  llm: {
    vendor: 'openai',
    model: 'gpt-4o-mini',
    auth: { apiKey: process.env.OPENAI_API_KEY },
  },
  // ...
}).send();
```

The fields in `auth` match the vendor's credential form. Per-vendor pages document the exact field names.

## Where to next

* New to voice agents? Start with [Voice Agents](/guides/features/voice-agents) for the end-to-end concept.
* Already comfortable? Pick your vendor from the table above for setup specifics.
* Looking for the verb reference? See [the agent verb](/verbs/verbs/agent).