Provider recipes
This page explains provider recipes in sMind by Spacing Mind: built-in templates that create a provider instance for a vendor such as Z.AI, DeepSeek, OpenRouter or a local model server, and how to use Add from recipe in Settings. It is for people who want to run an agent against an endpoint other than the first-party ones.
sMind by Spacing Mind, version 0.17.0. This page describes the 0.17.0 release.
A recipe is a built-in template for one provider instance: it points Claude Code (or Codex) at another vendor's API, with the vendor's base URL, model ids and caveats already filled in. You paste a key and, for a few recipes, an endpoint or a model id. The catalog ships inside the daemon: there is no remote catalog, and it changes only with a release.
Add from recipe
- Open Settings → Providers and choose Add from recipe.
- The catalog opens as a list. Each row shows the recipe's name, a one-line description, the wire protocol it speaks and an Unverified badge when it was never run against a live endpoint. Pick a row.
- Read the caveats; the form links the vendor's docs.
- Set an id and label. Both are optional; the id defaults to the recipe id.
- If the recipe needs one, type the endpoint URL.
- Edit the model list. It starts with the recipe's models: remove one with its ✕, or type an id and press Enter. A recipe that needs a model id (Ollama, LM Studio, LiteLLM) will not submit with an empty list.
- Paste the key into the password field and press Add provider.
The key leaves the field as soon as you submit, whether or not the daemon accepts it. If the daemon refuses (for example the id belongs to another entry), its message appears under the form and you enter the key again. The new instance appears in the provider list with a recipe badge, plus unverified when the row is unverified.
Adding is for people only: agents and plugins are refused. Adding the same recipe with the same id again changes nothing; an id used by another entry is refused.
The recipes
| Recipe id | Runs on | You provide | Source | Verified |
|---|---|---|---|---|
zai-glm | Claude Code | key | vendor docs | no |
qwen-dashscope | Claude Code | key | Paseo docs | no |
deepseek | Claude Code | key | vendor docs | no |
kimi-moonshot | Claude Code | key | inferred | no: the Claude Code base URL is a guess |
minimax | Claude Code | key | vendor docs | no |
openrouter | Claude Code | key | vendor docs | no |
ollama | Claude Code | a model id (local, no key) | vendor docs | no |
lm-studio | Claude Code | a model id (local, no key) | vendor docs | no |
litellm | Claude Code | URL, key, model ids | vendor docs | no |
anthropic-compatible | Claude Code | URL, key, model ids | Paseo docs | no |
openai-responses-compatible | Codex | URL, key, model ids | Paseo docs | no |
chat-completions-via-opencode | OpenCode | URL, key, model ids | vendor docs | no |
"Verified: no" means no row has been run against a live endpoint yet. Treat base URLs and model ids as what the vendor's documentation said on 2026-10-30, and try the inferred rows with care. The openai-responses-compatible row speaks only the OpenAI Responses API; Codex has no chat-completions mode. For a vendor that offers only a chat-completions endpoint, use chat-completions-via-opencode: it runs an OpenCode instance configured for that endpoint (checked against OpenCode itself and a local fake endpoint, never a real vendor). The base URL must be https, or a loopback address for a local server.
What a recipe instance does differently
- Its own config directory. A Claude Code recipe runs with its own
CLAUDE_CONFIG_DIRunder<SMIND_HOME>/providers/<id>/claude, so its files never mix with~/.claude. SetinheritClaudeConfig: trueon the entry to use~/.claudeinstead. - No web search. Every Claude Code recipe disallows
WebSearch: third-party endpoints have no hosted search tool. - No thinking picker where it cannot work. A recipe whose endpoint cannot turn thinking off is marked
thinking: hidden: the run ignores a requested thinking level and the picker is hidden for that provider. - Vendor-shaped rate limits. An instance has a vendor profile (
zai,anthropic,openaiorgeneric). A GLM-worded rate limit on a Z.AI instance puts that instance on cooldown until its reset (UTC+8) and leavesclaude-nativerunning. Other vendors' limits are recognised by generic patterns, without a reset time. - Keys you cannot read back. The instance's detail page lists each key as Set · ••••abcd or Not set; Replace key and Clear key manage it. See Write-only secrets.
On a phone, the new-task form shows a read-only note under the provider picker (for example "Recipe zai-glm · Unverified · Key set (…ab12)"). Keys are never entered or shown on mobile.
For GLM, the default way to add a new login is the zai-glm recipe. If you add it you can also see the plan's usage windows: see Z.AI usage meter.
Related
- Providers: accounts, instances, and the
providers.customconfig for an endpoint no recipe covers. - Write-only secrets: where the key goes.