Models
Any model. One harness.
Bring your own keys, run a model on your own machine, or use the Dulus-hosted lineup on Fuel. Switch with /model mid-conversation — and one reasoning dial works for all of them.
Illustration: the /model picker. Typing filters one list of Dulus-hosted models, models on your own keys and local models, and Enter switches the conversation to the highlighted one.
Dulus-hosted
Twelve models. One meter.
Hosted models are paid per token in Fuel, at a relative rate: a 2× model costs twice as much Fuel per token as a 1× model. Cached tokens are free, a failed call is refunded in full, and every response carries its exact charge in X-Dulus-Fuel-Charged.
| Model | Fuel rate | Good for |
|---|---|---|
dulus-a-9b |
1× | Fast & cheap |
dulus-mistral-7b |
1× | Fast & cheap |
dulus-mistral-nemo |
1× | Fast & cheap |
dulus-gpt-oss-20b |
1× | Open-weights generalist |
dulus-b-27b |
2× | Balanced |
dulus-mistral-small-24b |
2× | Balanced |
dulus-qwen-32b |
2× | Balanced |
dulus-coder-30b |
2× | Coding |
dulus-llama-70b |
3× | Large generalist |
dulus-vl-72b |
3× | Vision |
dulus-gpt-oss-120b |
3× | Open-weights generalist |
dulus-x-397b |
4× | The big one |
dulus-free-9b |
0× | Holder free tier |
dulus-free-7b |
0× | Holder free tier |
dulus-free-20b |
0× | Holder free tier |
Holder free tier
Keep at least 1,000,000 $DULUS as Fuel in your Dulus balance and get 40 free messages every 24 hours on dulus-free-9b, dulus-free-7b and dulus-free-20b, up to 2,048 output tokens each. The balance is held, never spent — and it has to be deposited Fuel, not tokens sitting in your own wallet.
$DULUS is a utility and community token used to pay for Fuel on Dulus. Nothing on this site is financial advice.
Bring your own keys
Your keys. Zero Fuel.
Add a provider key and pick a model with /model provider/model. Models on your own keys cost nothing from Dulus — you pay your provider directly. Provider keys in your config are encrypted at rest.
Model makers 12
- Anthropic
anthropic/… - OpenAI
openai/… - Google Gemini
gemini/… - DeepSeek
deepseek/… - Moonshot Kimi
kimi/… - Alibaba Qwen
qwen/…modelstudio/… - Z.ai GLM
zhipu/… - Perplexity
perplexity/… - MiniMax
minimax/… - Xiaomi
xiaomi/… - Sakana
sakana/… - Meta
meta/…
Clouds & gateways 6
- Vertex AIYour gcloud login, no key
gcloud/… - Azure OpenAIBy deployment name
azure/… - Amazon Bedrock
bedrock/… - Cloudflare Workers AI
@cf/… - NVIDIA NIMYour API key
- AMDYour vLLM server
amd/…
Local
Your hardware. Same agent.
Point /model at a runtime on your own machine and Dulus drives it like any other model. Local models cost nothing from Dulus.
32k
A window your RAM can hold
Local servers reserve memory for the whole context window up front, so Dulus starts Ollama and LM Studio at a 32k window instead of the biggest one a model advertises. Raise it with /tokens context_limit when your machine can hold more.
-
Ollama
localhost:11434Pull a model with Ollama, then switch to it.
/model ollama/qwen2.5-coder -
LM Studio
localhost:1234Load a model and start LM Studio’s local server, then pick it.
/model lmstudio/… -
llama.cpp & friends
OpenAI-compatiblellama.cpp’s server, or any other server on your machine that speaks the OpenAI API.
llama-server -m model.gguf
Reasoning
One dial. Every model.
/thinking 0–4 sets how hard the model thinks before it answers. Dulus translates the level into whatever each provider understands, so you learn one dial instead of a dozen.
[my-app] » /thinking 0
Thinking OFF ──────────────────────────── 0%
Extended thinking: OFF (level=0)
[my-app] » /thinking 1
Thinking MIN ━━━━━━━───────────────────── 25%
Extended thinking: MIN (level=1)
[my-app] » /thinking 2
Thinking MED ━━━━━━━━━━━━━━────────────── 50%
Extended thinking: MED (level=2)
[my-app] » /thinking 3
Thinking HIGH ━━━━━━━━━━━━━━━━━━━━━─────── 75%
Extended thinking: HIGH (level=3)
[my-app] » /thinking 4
Thinking MAX ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100%
Extended thinking: MAX (level=4)
[my-app] » /thinking debug
Thinking matrix for dulus-b-27b:
▶ 0 OFF → off
▶ 1 MIN → low
▶ 2 MED → medium
▶ 3 HIGH → high
▶ 4 MAX → max
One level, translated
-
Budget-style models
get a thinking budget that grows with the level.
-
Effort-style models
get the matching effort setting.
-
Switch-style models
turn reasoning on or off.
If a model tops out below the level you asked for, Dulus clamps it and tells you. /thinking debug prints the whole 0–4 ladder for the model you are on.
Mesa Redonda
Many models. One table.
Seat 2 to 26 agents in one conversation, each a full agent with its own model, history and mailbox. They talk to each other mid-turn, and Dulus chairs — it never takes a seat.
From code
Same lineup. Your code.
The hosted models speak the OpenAI API. Mint a dulus_sk_live_… key in the desktop app, point any OpenAI-compatible client at the base URL, and keep the code you have.
POST /chat/completionsGET /modelsAuthorization: Bearer dulus_sk_live_…Your key, shown once.X-Dulus-Fuel-ChargedThe exact charge, on every response.402Out of Fuel. The balance never goes negative.
from openai import OpenAI
client = OpenAI(
base_url="https://control.dulus.ai/v1",
api_key="dulus_sk_live_…",
)
reply = client.chat.completions.create(
model="dulus-b-27b",
messages=[{"role": "user", "content": "Hola, Dulus"}],
)
print(reply.choices[0].message.content)
Pick a model. Then pick another.
The Dulus app is free. Bring your keys, run a local model, or fuel the hosted lineup — and switch whenever the work changes.