# Choosing a model

Which models work with Nanobrowser, how to add a provider and its API key, what Test models checks, and how reasoning effort works.

Nanobrowser has no model of its own. Connect a cloud model with your own API key, or a model on your computer. You can pick a different model for each chat. The model you pick last in the side panel becomes the default for new chats.

## Which models work?

The model must support tool calling. Most recent models from the big cloud providers do. For a local model, see [Run a local model](https://nanobrowser.ai/docs/local-models).

## Add a provider

1. Open **Settings → Providers**.
2. Under the list of providers, pick a provider in the menu, then click the **Add a provider** button.
3. Paste your key in **API key** and press `Enter`, or click the check mark. Nanobrowser then lists the provider's models.
4. Type or pick a model in the **Model name** box, then click **Add**.
5. Choose it as the **Default model** at the top of the page, or pick it in the side panel.

Your key stays in this browser and goes only to its own provider. To change it, point at the key, click the cross (**Clear key**) and type the new one.

To remove a model, click the × on its name. To remove a whole provider, click the trash icon (**Remove provider**) next to **Test models**.

## Check a model with Test models

**Test models** sends each model of the provider a few short requests. It checks that the model calls a test tool, and whether it sees images.

- **Cloud providers:** a model is tested when you add it, and again when you change the key or the **Server address**.
- **Local servers:** adding a model doesn't test it, since a test makes the server load the model. Click **Test models** yourself.

A model that answers but doesn't call the tool is marked **No tool calling**:

`Connected, but the model did not call the test tool. It is marked "no tool calling" and cannot run the agent.`

You can't choose that model in the side panel or as the default. If you think it does support tools, check the model name and the server settings, then click **Test models** again.

## Models that see images

With a vision model, the agent can take screenshots of the page and see the images you attach. Without vision, it reads the page as text, and images you attach aren't sent.

## Set the reasoning effort

**Reasoning effort** is **None**, **Low**, **Medium** or **High**. The default is **Medium**.

- **In the side panel**, open the model menu and choose in the **Reasoning** row. It applies to that chat, from the next run.
- **In Settings → Providers**, **Reasoning effort** sits next to **Default model**. New chats start with it. Your latest choice in the side panel changes it too.

The choice is hidden for a model that can't reason. Many recent models always reason, so **None** isn't offered for them.

## Who do you pay?

Nanobrowser is free. You pay the model provider for what you use. Long tasks and pages with a lot of text cost more.

Local models cost nothing to run and keep your pages on your computer, but they do best on simple tasks. See [Run a local model](https://nanobrowser.ai/docs/local-models).

## Use Anthropic (Claude)

- **Get a key:** [console.anthropic.com](https://console.anthropic.com/settings/keys).
- **Models:** recent Claude models. They support tool calling and see images.
- Nanobrowser uses Anthropic's prompt caching, which makes long tasks cheaper.

## Use OpenAI (GPT)

- **Get a key:** [platform.openai.com](https://platform.openai.com/api-keys).
- **Models:** recent GPT models. They support tool calling and see images.
- An OpenAI key also works for [voice input](https://nanobrowser.ai/docs/side-panel#voice).

## Use Google Gemini

- **Get a key:** [Google AI Studio](https://aistudio.google.com/apikey).
- **Models:** recent Gemini Pro and Flash models. They support tool calling and see images.
- Image, speech and live models are hidden from the list. Click **Show all** to see them.
- A Gemini key also works for [voice input](https://nanobrowser.ai/docs/side-panel#voice).

## Use OpenRouter

- **Get a key:** [openrouter.ai](https://openrouter.ai/keys).
- **Models:** one key gives you models from many companies, named like `vendor/model-name`.
- **List models** hides models that OpenRouter says don't support tools. Click **Show all** to see them.
- A model can act a little differently on OpenRouter than on its maker's own service, so test it there.

## Use DeepSeek, xAI Grok or Mistral

<span id="xai"></span><span id="mistral"></span>

The **Server address** is filled in for you. Leave it as it is.

| Provider | Get a key | Server address |
| --- | --- | --- |
| DeepSeek | [platform.deepseek.com](https://platform.deepseek.com/api_keys) | `https://api.deepseek.com/v1` |
| xAI Grok | [console.x.ai](https://console.x.ai) | `https://api.x.ai/v1` |
| Mistral | [console.mistral.ai](https://console.mistral.ai/api-keys) | `https://api.mistral.ai/v1` |

## Use another cloud service

For any other service with an OpenAI-compatible API:

1. In **Add a provider**, choose **OpenAI-compatible**.
2. In **Server address**, type the full address, such as `https://api.example.com/v1`. Nanobrowser uses it exactly as you type it, so include `/v1` if the service needs it.
3. Fill in **API key (if the server needs one)**, or leave it empty.
4. Click **List models**, or type the model name, then click **Add**.

For a server on your own computer, such as llama.cpp or vLLM, see [Other local servers](https://nanobrowser.ai/docs/local-models#other-servers).
