Nebul Docs

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

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: true for models with supports_function_calling in the catalog.
  • images: true only for vision models; zai-org/GLM-5.3 is text-only.
  • chat_completions: true is the default and correct for Nebul. Set it to false only if you want Zed to use the Responses API for that model.
  • If your model returns thinking as reasoning_content, also set interleaved_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-here

Don'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_models entry must sit under language_models.openai_compatible.nebul exactly 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_effort to the model entry with a non-none value 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.

On this page