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.
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.
Replace YOUR_TOKEN with the key from your
key page. Tap a tool to expand.
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" } }
}
}
}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 }]
}
}
}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/
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 }
]
}
}
}
}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: 16384Minimal 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-vllmThe 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
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.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.
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.