Set Up ASI:One in Zed

Overview

ASI:One is OpenAI-compatible, so Zed can use it through its OpenAI-compatible provider settings. You declare the provider and its models in settings.json, pick a model in the agent panel, and Zed stores your key in the system keychain.

Prerequisites

  • Zed installed.
  • An ASI:One API key. Create one at asi1.ai/developer. Keys start with sk_.
  • An ASI:One plan that includes asi1-ultra. The same key also works for asi1 and asi1-mini.

Add the provider

Open your Zed settings with zed: open settings in the command palette. Zed keeps them at ~/.config/zed/settings.json on macOS and Linux, and %APPDATA%\Zed\settings.json on Windows. On macOS, that is ~/.config/zed, not ~/Library/Application Support like most Mac apps. Add the provider under language_models:

{
"language_models": {
"openai_compatible": {
"asi:one": {
"api_url": "https://api.asi1.ai/v1",
"available_models": [
{
"name": "asi1-ultra",
"max_tokens": 202752,
"max_output_tokens": 40000,
"capabilities": {
"tools": true,
"images": false,
"parallel_tool_calls": true,
"chat_completions": true,
"interleaved_reasoning": false,
"max_tokens_parameter": true,
"prompt_cache_key": false
}
},
{
"name": "asi1",
"max_tokens": 196608,
"max_output_tokens": 40000,
"capabilities": {
"tools": true,
"images": true,
"parallel_tool_calls": true,
"chat_completions": true,
"interleaved_reasoning": false,
"max_tokens_parameter": true,
"prompt_cache_key": false
}
},
{
"name": "asi1-mini",
"max_tokens": 262144,
"max_output_tokens": 40000,
"capabilities": {
"tools": true,
"images": false,
"parallel_tool_calls": true,
"chat_completions": true,
"interleaved_reasoning": false,
"max_tokens_parameter": true,
"prompt_cache_key": false
}
}
]
}
}
}
}

What the fields do:

  • max_tokens is the model’s context window. Zed uses it to decide when a thread is full and needs compacting.
  • max_output_tokens is the room reserved for the reply. Zed sends it as max_tokens on each request.
  • prompt_cache_key stays false. ASI:One answers 400 to request parameters it doesn’t support, and false is what keeps Zed from sending this one.
  • images is true on asi1 alone. Only asi1 accepts image input, so the other models refuse the button instead of erroring later.

Sign in

Zed asks for the API key the first time you use the provider. Open the agent panel, pick an ASI:One model in the model picker, and paste your sk_ key into the prompt. Zed stores it in your system keychain, keyed by the API URL, and reuses it from then on.

Choose the model

To make asi1-ultra the default for new threads, add:

{
"agent": {
"default_model": {
"provider": "asi:one",
"model": "asi1-ultra"
}
}
}

Use asi1-ultra for deep refactors, debugging and reviews, and switch to asi1 or asi1-mini for routine edits where speed matters more. See ASI:One Models for the tradeoffs. When thinking is enabled, the model streams its reasoning alongside the answer and Zed renders it as a collapsible thinking block.

Things to know

  • Concurrency. Zed allows 4 concurrent in-flight requests per provider and model; requests past that queue silently, which looks like a spinner with no thinking output. If you run many agent threads in parallel, copy the whole asi:one block under a second id such as asi:one-2 and point the extra threads at it. Because the keychain entry is keyed by API URL, the clone picks up your stored key with no re-entry.
  • Compaction. When a thread approaches the model’s max_tokens, Zed summarizes the conversation and continues in a fresh context. The threshold is agent.auto_compact and defaults to 50%.
  • Images. Only asi1 accepts image input, which the capabilities block already reflects.

Troubleshooting

SymptomCause and fix
401The key is wrong or has been revoked. Create a new one at asi1.ai/developer and re-enter it when Zed prompts.
404 model not foundThe model name in the config or picker is misspelled. Use asi1, asi1-ultra or asi1-mini.
400 on an unknown parameterZed sent a parameter ASI:One doesn’t support. Make sure prompt_cache_key is false in that model’s capabilities.
A thread spins with no thinking outputMore than 4 requests are already in flight for that provider and model, and this one is queued. Wait for a slot, or move threads onto a cloned provider entry (see Things to know).
Rate limit errorsSee Errors and Rate Limits.

Next steps

  1. Cursor: the same models in the Cursor editor
  2. OpenCode: the same models in OpenCode
  3. ASI:One Models: choosing between asi1, asi1-ultra and asi1-mini
  4. OpenAI Compatibility: which parameters each endpoint supports