---
title: Models and providers
description: Which model APIs Lampson works with, how to switch, and how to point it at any compatible endpoint including Ollama on your own machine.
---
# Models and providers

Lampson talks to models over plain HTTP, in the two formats everyone supports. It has no server of its own: your key is only ever sent to the provider you chose.

| provider | format | notes |
|---|---|---|
| `deepseek` | OpenAI | inexpensive, strong at code |
| `anthropic` | Anthropic | Claude models |
| `openai` | OpenAI | GPT models |
| `kimi` | OpenAI | Moonshot |
| `glm` | OpenAI | GLM 5.3 / 5.3 Flash, by Z.ai |
| `groq` | OpenAI | very fast |
| `grok` | OpenAI | xAI |
| `openrouter` | OpenAI | one key, many models |
| `minimax` | Anthropic | |
| `ollama` | OpenAI | runs on your machine, no key |

## Switching

- **Terminal**: `/model` opens one arrow-key flow — provider → model (listed live from the provider's API) → key, only if it is missing. `/model glm glm-5.3-flash` applies directly; `/model glm` asks only for the model. `/provider` and `/setup` are the same command.
- **Web**: click the `provider · model` pill in the header.
- The model list comes from the API (`GET /models`), so you never type a name blind; if the list is long you filter it first, and there is always an "other…" option to type one.

One key per provider is kept, so switching back and forth is instant. Settings live in `~/lampson/.lampson/config.json`, on your machine, and are shared by the terminal and the web UI.

## Any compatible endpoint

Set `LAMPSON_BASE_URL` in `~/lampson/.env` (and `LAMPSON_WIRE=openai|anthropic` if the preset cannot guess):

```sh
LAMPSON_PROVIDER=ollama
LAMPSON_BASE_URL=http://127.0.0.1:11434/v1
LAMPSON_MODEL=qwen2.5-coder:14b
```

## Images

Paste a screenshot into the web composer, or `/image file.png` in the terminal. If the model you picked does not accept images, Lampson warns you before sending and the model gets a text note instead of an error. Force it either way with `"vision": true|false` in `config.json`.

## Your key is a secret

The key is stored as a Synsema `secret`: the program can send it as a header but can never read, print or log it. `.env` is ignored by git.
