Connect a tool
Quail's server speaks the OpenAI and Anthropic APIs, so most tools that let you change their endpoint work with it.
The Connect page
Choose Connect a Tool… in the menu, or Connect in the Quail window. Pick a tool and a model, and Quail fills in its setup with your address, API key and model:
- Copy the snippet into the place it says (“Goes in: …”).
- Click Test: it sends one tiny request exactly as that tool would, and says whether it worked.
Using the tool on another computer? Choose Used from: Another device for your Mac's network address, and set Reachable from to Local network.
Quail never edits another app's settings. It gives you the snippet, and a link to the tool's own setup docs.
Or let Quail start the tool
For coding agents, quail launch starts the tool pointed at Quail, for that run only — the tool's own settings are untouched. Its context is set to what the model runs at.
quail launch claude # Claude Code, with the default model
quail launch codex -m qwen3-8b # a particular model
quail launch opencode -- run "fix the tests" # arguments after -- go to the tool
Supported: claude, codex, opencode, qwen, aider, goose.
Tools with a ready-made setup
| Tool | Speaks | Needs |
|---|---|---|
| Claude Code | Anthropic Messages | 32K context |
| OpenAI Codex CLI | OpenAI Responses | 16K context |
| opencode | OpenAI Chat Completions | 16K context |
| Cline, Roo Code | OpenAI Chat Completions | 32K context |
| aider, Goose, Qwen Code | OpenAI Chat Completions | |
| Continue, Zed | OpenAI Chat Completions | |
| Open WebUI, LibreChat | OpenAI Chat Completions | |
| curl, Python, JavaScript | OpenAI Chat Completions | |
| Embeddings, Reranking | OpenAI Embeddings, Rerank | An embedding or reranking model |
If a model's context is smaller than a tool needs, the Connect page says so; raise it in the model's settings (see Models) and restart the server.
Any other client
| OpenAI base URL | http://127.0.0.1:8080/v1 |
|---|---|
| Anthropic base URL | http://127.0.0.1:8080 (clients add /v1/messages) |
| API key | Sent as Authorization: Bearer <key> or x-api-key: <key> |
| Model | The model's id from the Models page |
curl http://127.0.0.1:8080/v1/chat/completions \
-H "Authorization: Bearer $QUAIL_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "Qwen3-8B-Q4_K_M", "messages": [{"role": "user", "content": "Hello"}]}'
The address and key are on the Server page, and quail config --show-key prints them.
Embeddings and reranking
For search and retrieval (RAG), editors that index your code, and memory tools, Quail serves embedding and reranking models too, GGUF and MLX alike. Add one from the "For Search" section of Add Model: Qwen3 Embedding, EmbeddingGemma or Nomic Embed, and Qwen3 Reranker or BGE Reranker. They don't chat, so they're never the default model.
curl http://127.0.0.1:8080/v1/embeddings \
-H "Authorization: Bearer $QUAIL_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "Qwen3-Embedding-0.6B-Q8_0", "input": ["The first text", "The second"]}'
/v1/embeddingsis OpenAI's:inputis a string, a list of strings, or token ids. Vectors come back normalized.dimensionsshortens them for models trained for it, andencoding_format: "base64"sends them as bytes./v1/reranktakes aqueryanddocumentsand lists them best first byrelevance_score, as Jina's and llama-server's do; sendtextsfor TEI's shape.top_nkeeps the best few.- Several models ask for a prefix on queries and documents, such as Nomic's
search_query:. Add Model shows each one's.