raunen

Configuration

~/.config/raunen/config.json, written on first run. XDG rather than ~/Library/Application Support, which is not where terminal tools are usually configured.

~/.config/raunen/config.json
{
  "default": "",
  "providers": {
    "ollama":       { "base_url": "http://localhost:11434/v1" },
    "lmstudio":     { "base_url": "http://localhost:1234/v1" },
    "llamacpp":     { "base_url": "http://localhost:8080/v1" },
    "openrouter":   { "base_url": "https://openrouter.ai/api/v1",
                    "api_key_env": "OPENROUTER_API_KEY" }
  },
  "models": {}
}

Adding a provider is a base URL โ€” no adapter code, because they all speak the same wire format. Models are provider/model, split on the first / so names containing slashes (hf.co/user/repo) still work.

default may be left empty, in which case the first run asks the configured endpoints what they serve and picks one, preferring anything local.

Providers added to the defaults in later versions are merged into an existing config on load, so new endpoints appear without a rewrite. Anything you have edited is left alone.

Context windows

There is no way to ask an OpenAI-compatible endpoint how big a model's window is, so it has to be declared. Per-model wins over the provider default.

config.json
  "models": {
    "ollama/qwen3.5-8k:latest": { "context": 8192 }
  }

Getting this wrong is the most common cause of a bad answer. See local models for why Ollama in particular reports a window it is not serving.

API keys

api_key_env reads the key from the environment, which is the better place for a secret. A key can also be stored in the config, which is written 0600.

Choosing a model whose provider has no key would otherwise fail with a 401 a few seconds later, by which time the moment has passed. Instead a masked prompt opens โ€” /key <provider> opens it directly.

/key groq
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ api key for groq โ€” paste it and press enter    โ”‚
โ”‚ saved to the config, written 0600 โ€” or set     โ”‚
โ”‚ GROQ_API_KEY instead                           โ”‚
โ”‚ โ€บ *********                                    โ”‚
โ”‚ enter to save  ยท  esc to cancel                โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

Other files

  • ~/.config/raunen/mcp.json โ€” MCP servers, kept apart so a definition carrying a token is not next to the model defaults. See MCP.
  • ~/.local/share/raunen/ โ€” sessions and the companion's state.

raunen -config prints the config path.