# Pi

> Add NotHoly as a custom provider in the Pi coding agent.


Add a provider to `~/.pi/agent/models.json`:

```json
{
  "providers": {
    "notholy": {
      "baseUrl": "https://api.notholy.com/v1",
      "api": "openai-completions",
      "apiKey": "NOTHOLY_API_KEY",
      "models": [
        { "id": "notholy-specter", "name": "NotHoly Specter", "reasoning": true, "contextWindow": 1048576 },
        { "id": "notholy-pulse", "name": "NotHoly Pulse Flash", "reasoning": true, "contextWindow": 1048576 },
        { "id": "notholy-vector", "name": "NotHoly Vector Flash 1017", "reasoning": true, "contextWindow": 1048576 },
        { "id": "notholy-wisp", "name": "NotHoly Wisp Flash", "reasoning": true, "contextWindow": 1048576 }
      ]
    }
  }
}
```

`apiKey` names the environment variable that holds the key. Pick the model with `/model`.

This guide follows the tool's documented OpenAI-compatible setup. Claude Code, Codex and OpenCode are the tools we run in our own connector tests.

Tool settings change between versions. If a field here is gone, look for the tool's OpenAI-compatible provider option and use the same base URL, key and model ID.

## Next

- [Models](/en/getting-started/models)
