Editors & agents

These are the tools we actually run against this fleet — the configs below are generated from what is live right now, so the model names and context sizes are current rather than something we remembered to update.

The three rules

1. One base URL per model. We route by URL path, not by the model field in the request body. A single base URL reaches exactly one model — to offer a choice, declare one provider per model.

2. No trailing slash after /v1. The catalog's own proxy_url ends in a slash; do not paste that and append v1.

3. Always allow at least 2048 output tokens. These are reasoning models. With a smaller budget the entire allowance is spent inside the hidden thinking block, the reply comes back empty, and your agent looks broken when it is not.

Configurations

Replace YOUR_TOKEN with the key from your key page. Tap a tool to expand.

opencode we run this

Terminal coding agent. A project-local opencode.json overrides the global file.

Config file: ~/.config/opencode/opencode.json · project home

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
      "catamaran-0": {
        "npm": "@ai-sdk/openai-compatible",
        "name": "Catamaran — Qwen 3.8 · 27B",
        "options": { "baseURL": "https://cremeapi.tinyhost.xyz/proxy/c1-qwen38-27b-heretic-ara-nvfp4-vllm/v1", "apiKey": "YOUR_TOKEN" },
        "models": { "c1-qwen38-27b-heretic-ara-nvfp4-vllm": { "name": "Qwen 3.8 · 27B" } }
      },
      "catamaran-1": {
        "npm": "@ai-sdk/openai-compatible",
        "name": "Catamaran — Muse Glimmer · 30B",
        "options": { "baseURL": "https://cremeapi.tinyhost.xyz/proxy/c3-muse-glimmer-30b-nvfp4-vllm/v1", "apiKey": "YOUR_TOKEN" },
        "models": { "c3-muse-glimmer-30b-nvfp4-vllm": { "name": "Muse Glimmer · 30B" } }
      },
      "catamaran-2": {
        "npm": "@ai-sdk/openai-compatible",
        "name": "Catamaran — Qwen 3.6 · 35B",
        "options": { "baseURL": "https://cremeapi.tinyhost.xyz/proxy/c3-qwen36-35b-a3b-uncensored-nvfp4-tp2-vllm/v1", "apiKey": "YOUR_TOKEN" },
        "models": { "c3-qwen36-35b-a3b-uncensored-nvfp4-tp2-vllm": { "name": "Qwen 3.6 · 35B" } }
      }
    }
}
Crush we run this

Charm's terminal agent. api_key goes through a shell eval, so $CREMEAPI_TOKEN expands from your environment.

Config file: ~/.config/crush/crush.json · project home

export CREMEAPI_TOKEN=YOUR_TOKEN   # crush resolves api_key through a shell eval

// ~/.config/crush/crush.json
{
  "$schema": "https://charm.land/crush.json",
  "providers": {
    "catamaran-0": {
      "type": "openai-compat",
      "base_url": "https://cremeapi.tinyhost.xyz/proxy/c1-qwen38-27b-heretic-ara-nvfp4-vllm/v1",
      "api_key": "$CREMEAPI_TOKEN",
      "models": [{ "id": "c1-qwen38-27b-heretic-ara-nvfp4-vllm", "name": "Qwen 3.8 · 27B",
                   "context_window": 131072, "default_max_tokens": 8192,
                   "can_reason": true }]
    },
    "catamaran-1": {
      "type": "openai-compat",
      "base_url": "https://cremeapi.tinyhost.xyz/proxy/c3-muse-glimmer-30b-nvfp4-vllm/v1",
      "api_key": "$CREMEAPI_TOKEN",
      "models": [{ "id": "c3-muse-glimmer-30b-nvfp4-vllm", "name": "Muse Glimmer · 30B",
                   "context_window": 131072, "default_max_tokens": 8192,
                   "can_reason": true }]
    },
    "catamaran-2": {
      "type": "openai-compat",
      "base_url": "https://cremeapi.tinyhost.xyz/proxy/c3-qwen36-35b-a3b-uncensored-nvfp4-tp2-vllm/v1",
      "api_key": "$CREMEAPI_TOKEN",
      "models": [{ "id": "c3-qwen36-35b-a3b-uncensored-nvfp4-tp2-vllm", "name": "Qwen 3.6 · 35B",
                   "context_window": 262144, "default_max_tokens": 8192,
                   "can_reason": true }]
    }
  }
}
Goose we run this

Block's agent. The token lives in OPENAI_API_KEY and never in the config file.

Config file: ~/.config/goose/config.yaml · project home

# Goose reads the token from the environment, never from config.yaml
export OPENAI_API_KEY=YOUR_TOKEN
export OPENAI_HOST=https://cremeapi.tinyhost.xyz/proxy/c1-qwen38-27b-heretic-ara-nvfp4-vllm

# ~/.config/goose/config.yaml
GOOSE_PROVIDER: openai
GOOSE_MODEL: c1-qwen38-27b-heretic-ara-nvfp4-vllm
# switch models by pointing OPENAI_HOST at a different /proxy/
Zed we run this

Editor with a built-in assistant. Zed deliberately has no api_key field — keys go in the OS keychain or an env var.

Config file: ~/.config/zed/settings.json · project home

# Zed never stores keys in settings.json — put it in the environment:
export CATAMARAN_API_KEY=YOUR_TOKEN

// ~/.config/zed/settings.json
{
  "language_models": {
    "openai_compatible": {
      "catamaran": {
        "api_url": "https://cremeapi.tinyhost.xyz/proxy/c1-qwen38-27b-heretic-ara-nvfp4-vllm/v1",
        "available_models": [
          { "name": "c1-qwen38-27b-heretic-ara-nvfp4-vllm", "max_tokens": 131072 },
          { "name": "c3-muse-glimmer-30b-nvfp4-vllm", "max_tokens": 131072 },
          { "name": "c3-qwen36-35b-a3b-uncensored-nvfp4-tp2-vllm", "max_tokens": 262144 }
        ]
      }
    }
  }
}
Oh My Pi (omp) we run this

Watch this one: apiKey: is the name of an environment variable, not the token. Passing the token literally fails with a bare 401 and no config error.

Config file: ~/.omp/agent/models.yml · project home

export CREMEAPI_TOKEN=YOUR_TOKEN

# ~/.omp/agent/models.yml
providers:
  catamaran-0:
    name: Qwen 3.8 · 27B
    baseUrl: https://cremeapi.tinyhost.xyz/proxy/c1-qwen38-27b-heretic-ara-nvfp4-vllm/v1
    api: openai-completions
    apiKey: CREMEAPI_TOKEN     # the NAME of an env var, not the token
    models:
      - id: c1-qwen38-27b-heretic-ara-nvfp4-vllm
        name: c1-qwen38-27b-heretic-ara-nvfp4-vllm
        reasoning: true
        contextWindow: 131072
        maxTokens: 16384
  catamaran-1:
    name: Muse Glimmer · 30B
    baseUrl: https://cremeapi.tinyhost.xyz/proxy/c3-muse-glimmer-30b-nvfp4-vllm/v1
    api: openai-completions
    apiKey: CREMEAPI_TOKEN     # the NAME of an env var, not the token
    models:
      - id: c3-muse-glimmer-30b-nvfp4-vllm
        name: c3-muse-glimmer-30b-nvfp4-vllm
        reasoning: true
        contextWindow: 131072
        maxTokens: 16384
  catamaran-2:
    name: Qwen 3.6 · 35B
    baseUrl: https://cremeapi.tinyhost.xyz/proxy/c3-qwen36-35b-a3b-uncensored-nvfp4-tp2-vllm/v1
    api: openai-completions
    apiKey: CREMEAPI_TOKEN     # the NAME of an env var, not the token
    models:
      - id: c3-qwen36-35b-a3b-uncensored-nvfp4-tp2-vllm
        name: c3-qwen36-35b-a3b-uncensored-nvfp4-tp2-vllm
        reasoning: true
        contextWindow: 262144
        maxTokens: 16384
pi we run this

Minimal terminal coding agent. Its apiKey uses shell form — $CREMEAPI_TOKEN. Note that is different from every sibling here (omp wants a bare name, opencode {env:VAR}, crush ${VAR}); the wrong form is sent verbatim as the bearer and returns a bare 401 with no config error.

Config file: ~/.pi/agent/models.json · project home

export CREMEAPI_TOKEN=YOUR_TOKEN

// ~/.pi/agent/models.json   (global only — no project-level override)
{
  "providers": {
    "cremeapi": {
      "name": "Catamaran",
      "api": "openai-completions",
      "baseUrl": "https://cremeapi.tinyhost.xyz/proxy/c1-qwen38-27b-heretic-ara-nvfp4-vllm/v1",
      "apiKey": "$CREMEAPI_TOKEN",
      "compat": { "supportsDeveloperRole": false,
                  "supportsReasoningEffort": false,
                  "supportsStore": false,
                  "maxTokensField": "max_tokens" },
      "models": [
        { "id": "c1-qwen38-27b-heretic-ara-nvfp4-vllm",
          "name": "Qwen 3.8 · 27B",
          "baseUrl": "https://cremeapi.tinyhost.xyz/proxy/c1-qwen38-27b-heretic-ara-nvfp4-vllm/v1",
          "reasoning": true,
          "contextWindow": 131072,
          "maxTokens": 8192 },
        { "id": "c3-muse-glimmer-30b-nvfp4-vllm",
          "name": "Muse Glimmer · 30B",
          "baseUrl": "https://cremeapi.tinyhost.xyz/proxy/c3-muse-glimmer-30b-nvfp4-vllm/v1",
          "reasoning": true,
          "contextWindow": 131072,
          "maxTokens": 8192 },
        { "id": "c3-qwen36-35b-a3b-uncensored-nvfp4-tp2-vllm",
          "name": "Qwen 3.6 · 35B",
          "baseUrl": "https://cremeapi.tinyhost.xyz/proxy/c3-qwen36-35b-a3b-uncensored-nvfp4-tp2-vllm/v1",
          "reasoning": true,
          "contextWindow": 262144,
          "maxTokens": 8192 }
      ]
    }
  }
}

pi --model cremeapi/c1-qwen38-27b-heretic-ara-nvfp4-vllm
Hermes we run this

The agent we run in-house. provider: custom requires api_key to be set explicitly or it silently fails to authenticate.

Config file: ~/.hermes/config.yaml · project home

# ~/.hermes/config.yaml
model:
  provider: custom
  base_url: https://cremeapi.tinyhost.xyz/proxy/c1-qwen38-27b-heretic-ara-nvfp4-vllm/v1
  name: c1-qwen38-27b-heretic-ara-nvfp4-vllm
  api_key: YOUR_TOKEN     # provider: custom REQUIRES api_key here
  max_tokens: 8192
Unsloth Desktop community

A desktop app for running and fine-tuning models locally that also works as a chat client. Listed because it connects cleanly, but chat is its secondary job — reach for it if you are already training with Unsloth.

Config file: configured in the app UI, not a file · project home

Settings -> Connections -> Add Connection -> vLLM

Add one connection per model:

  Qwen 3.8 · 27B
    Base URL   https://cremeapi.tinyhost.xyz/proxy/c1-qwen38-27b-heretic-ara-nvfp4-vllm/v1
    API key    YOUR_TOKEN
    Model IDs  c1-qwen38-27b-heretic-ara-nvfp4-vllm
    Reasoning model   ON      <- required, see below

  Muse Glimmer · 30B
    Base URL   https://cremeapi.tinyhost.xyz/proxy/c3-muse-glimmer-30b-nvfp4-vllm/v1
    API key    YOUR_TOKEN
    Model IDs  c3-muse-glimmer-30b-nvfp4-vllm
    Reasoning model   ON      <- required, see below

  Qwen 3.6 · 35B
    Base URL   https://cremeapi.tinyhost.xyz/proxy/c3-qwen36-35b-a3b-uncensored-nvfp4-tp2-vllm/v1
    API key    YOUR_TOKEN
    Model IDs  c3-qwen36-35b-a3b-uncensored-nvfp4-tp2-vllm
    Reasoning model   ON      <- required, see below

Then set max tokens to at least 2048 in the chat settings.
OpenHands community

We run OpenHands internally but have not validated this exact standalone config end to end — treat it as a starting point.

Config file: config.toml (or the web UI) · project home

# config.toml, in the directory you launch OpenHands from
[llm]
model = "openai/c1-qwen38-27b-heretic-ara-nvfp4-vllm"
base_url = "https://cremeapi.tinyhost.xyz/proxy/c1-qwen38-27b-heretic-ara-nvfp4-vllm/v1"
api_key = "YOUR_TOKEN"
max_output_tokens = 8192

# OpenHands V1 has no config file — enter the same three values under
# Settings -> LLM -> Advanced in the web UI.

We cannot support every tool in depth — but the above is how we got each one working. Anything OpenAI-compatible will work with the same base URL and Bearer token.

We like to hear from you

Tell us your thoughts — what worked, what did not, what you wish existed. Your feedback is appreciated and it genuinely shapes what we host next.