Zed
Use Zed's agent panel with Nebul models through the OpenAI-compatible provider.
Zed is a fast editor with a built-in agent panel, inline assistant, and commit generation. Models for these features come from configured providers, and any OpenAI-compatible endpoint can be added, including Nebul.
Prerequisites
- Zed
- A Nebul AI Studio account with API access
- An API key for your active project
- A model ID from the Model Catalog
Connect it to Nebul
1. Add the provider
Open the agent panel settings with agent: open settings (the command palette), find Add Provider in the LLM Providers section, and fill in the provider name nebul, the API URL, and a model ID.
2. Or edit settings.json
For full control over models and limits, add the provider to your settings.json instead:
{
"language_models": {
"openai_compatible": {
"nebul": {
"api_url": "https://api.inference.nebul.io/v1",
"available_models": [
{
"name": "zai-org/GLM-5.3",
"display_name": "GLM 5.3",
"max_tokens": 1048576,
"max_output_tokens": 16384,
"reasoning_effort": "high",
"capabilities": {
"tools": true,
"images": false,
"chat_completions": true
}
}
]
}
}
}
}Zed requires max_tokens (the context window) on every model entry, so take it from /v1/model/info instead of estimating; a conservative max_output_tokens like the one above is fine. For reasoning models, reasoning_effort enables thinking in the agent panel and sets the effort Zed sends; valid values are none, minimal, low, medium, high, xhigh, and max.
The capabilities block matters more than it looks. Zed's defaults for OpenAI-compatible models assume a plain endpoint, so set what the model actually supports:
tools: truefor models withsupports_function_callingin the catalog.images: trueonly for vision models;zai-org/GLM-5.3is text-only.chat_completions: trueis the default and correct for Nebul. Set it tofalseonly if you want Zed to use the Responses API for that model.- If your model returns thinking as
reasoning_content, also setinterleaved_reasoning: true. See Reasoning Models.
3. Add the API key
Enter the key in the provider settings UI, stored in the system keychain, or set the generated environment variable before starting Zed. The provider ID nebul becomes NEBUL_API_KEY:
export NEBUL_API_KEY=sk-your-api-key-hereDon't put API keys in settings.json.
Run it
Open the agent panel, pick the Nebul model from the dropdown, and start a thread. The inline assistant and commit generation use the same model when selected as default.
Troubleshooting
- Model missing from the dropdown: the
available_modelsentry must sit underlanguage_models.openai_compatible.nebulexactly as shown; check the provider ID for typos. - 401 errors: the key is missing from both keychain and environment. Environment variables win, so unset a stale one and restart Zed.
- Reasoning not offered: add
reasoning_effortto the model entry with a non-nonevalue your model supports, from/v1/model/info. - Remote projects: providers are initialized in the local Zed app. Keys come from your local keychain and the local process environment, not the remote machine.
Data and telemetry
Zed sends diagnostics and usage metrics to its servers unless disabled. In settings.json:
{
"telemetry": {
"diagnostics": false,
"metrics": false
}
}Model requests go only to the provider endpoints you configure. Inference-side handling is described in Privacy & Security.