Docs

Zed

Zed accepts OpenAI-compatible providers both for the assistant and for the predictions it makes as you type. It is the only tool in this section where inline suggestions can come out of Helmcode.

Configuration

Open ~/.config/zed/settings.json and add:

{
  "language_models": {
    "openai": {
      "api_url": "https://api.helmcode.com/v1",
      "available_models": [
        {
          "name": "glm5.3-flash",
          "display_name": "Helmcode GLM 5.3 Flash",
          "max_tokens": 1048576
        },
        {
          "name": "deepseek-v4-flash",
          "display_name": "Helmcode DeepSeek V4 Flash",
          "max_tokens": 1048576
        },
        {
          "name": "qwen3.6",
          "display_name": "Helmcode Qwen 3.6",
          "max_tokens": 262144
        }
      ]
    }
  },
  "edit_predictions": {
    "open_ai_compatible_api": {
      "api_url": "https://api.helmcode.com/v1",
      "model": "qwen3.6"
    }
  }
}

name is the id that travels in the request and has to be spelled exactly as it appears in Models. display_name is only what you see in the picker, so call it whatever you like.

The key

Zed does not keep the key in settings.json. It asks you for it through the interface: open the assistant panel, go into the OpenAI provider settings and paste your Helmcode key there.

Check that it works

Open the assistant panel, pick one of the models you declared and ask it anything.

glm5.3-flash or deepseek-v4-flash for the assistant, where the 1M context pays off. For inline predictions, qwen3.6: what matters there is latency, because the result has to appear while you type, and it is the fastest model in the catalog.

Known issues

  • Do not put a slow model in edit_predictions. Predictions are requested very often, and with a big model they arrive late and spend quota for nothing.
  • Only the models you declare show up. Zed does not ask the API what is available: it shows exactly what you wrote in available_models.
  • max_tokens here is the context window, which is what Zed uses to decide when the conversation no longer fits.