ClydeCLI
FEATURESWhat Clyde does beyond the basics, with real recordings and measured results.

Everything Clyde does

The home page has the idea. This page has the rest: the features, how they work, and recordings and measurements from real runs.

On this page: At a glance · Tune a local model · When a model fails mid-turn · Checking which models work · Laya · whichllm

Engraving of a hand in a tweed sleeve fanning five aces of spades; the front card's pip is Clyde's red spade with a prompt.

At a glance

Council
cardShuffle:high-roller council asks the top four models at once with tools off, and Laya rates the answers.
Scripts and CI
clyde -p runs one turn with JSON output and exit codes.
Asks first
Shell commands that are not read-only, or that reach outside the project, ask. Reading a .env or key file asks too.
MCP
Servers work over stdio, HTTP and SSE, with OAuth sign-in.
Sub-agents
Agents and teams run in parallel, in the background if you like.
Your existing setup
Reads the memory files, skills, hooks and MCP servers you set up for Claude Code, Codex, Cursor or Gemini CLI.
Saved plans
The plan you approve in plan mode survives /compact and --resume. /plan marks phases done.
Review and sessions
/review reads your changes, a commit or a branch without editing. clyde sessions searches old sessions.
The install
clyde doctor, update and uninstall. Updates follow main or tagged releases and never install by themselves.

Editor support over the Agent Client Protocol, a read-only SQL tool and the rest are in the README.

Tune a local model

A model on your own machine runs in whatever memory you have. clyde tune tests the Ollama settings that can give it a longer window, less memory or more speed, keeps only the ones that leave what the model says unchanged, and shows you how to turn them on.

clyde tune

Clyde offers it when clyde setup finds a local model, and again after you download one with /models local. It loads the model a few times, so it takes a few minutes and always asks first.

What it does

  1. Asks what you use the model for. Coding, chat, research, long documents, quick answers (any mix), what matters most, and how much RAM to keep free. The answers are saved, so it asks once.
  2. Tests each setting on a private server. Ollama reads these settings only when it starts, so Clyde starts a throwaway ollama serve on another port for each one, loads your model at the window Clyde uses for it, and measures memory and speed. Yours is never touched.
  3. Checks what the setting did to the model. The same prompts are answered again, a fact buried in a long prompt is looked for, and the model has to make a tool call. A setting that changes what the model says is dropped, however much memory it saves.
  4. Picks one, or tells you to keep what you have. It chooses by your priority among the settings that passed, and only if the gain is worth restarting Ollama.

What it asks you

Mix as many as you like. They set how strict the quality check is and what it tries to win.

Coding and agents
Tool calls must stay right. The answers have to stay 95% alike, and the lossy cache is never tried.
Research and fact-checking
Answers must hold up over many sources: the same strict bar, plus the buried-fact check at the long window.
Long documents
Room for the text matters most. It looks for the longest window your memory can carry.
Chat and quick answers
Wording is more forgiving (80% alike), so the smaller cache is also tried.
What matters most
Speed, a long window, or reliability. It picks the winner by this, after the quality bar is met.
RAM to keep free
A setting that would leave less than this free for your other apps is dropped.

What it tries

SettingOllama variablesWhat it can give youWhen
DefaultnoneThe baseline every other setting is measured against.always
Flash attentionOLLAMA_FLASH_ATTENTION=1Needed for a smaller cache; sometimes a little speed.always
Flash + q8_0 cacheOLLAMA_KV_CACHE_TYPE=q8_0About half the cache memory of the default, usually with the same answers.always
Flash + q4_0 cacheOLLAMA_KV_CACHE_TYPE=q4_0About a quarter of the cache memory, at a real quality risk.chat and quick answers only
A longer windowthe cache above, plus CLYDE_MODEL_CONTEXT_<MODEL>The room the smaller cache freed, spent on context, up to what the model was trained for.when the model was trained for more than Clyde uses

What a setting has to pass

No more memory
Never more than 2% above the default: the point is more room without more resources.
No real slowdown
Within the measurement noise (8%) of the default. Speed is the best of two runs, since one slow sample is just a busy machine.
Free RAM kept
It leaves at least what you asked to keep free, and stays inside the share of RAM a model may use.
Tool calling intact
The model still makes a correct tool call and uses the result, using Clyde's own model check.
Long-context recall
A fact buried in a long prompt (up to 24,000 tokens, at the window being tested) is still found.
Same answers
Fixed prompts answered with no randomness have to stay 95% alike (80% for chat). A cache that drifts shows up here first.
Worth a restart
It must free 5% of memory, open a 10% longer window, or run 5% faster. A smaller gain is not worth restarting Ollama for.

What it found on real runs

One Mac (M3 Pro, 18 GB), Ollama 0.35.1. The same setting helps one model and hurts another, which is why every model is tested.

ModelDefaultChosenWhat it showed
Qwen2.5-Coder 3B (Q8_0)4.69 GB
32,768 window
flash + q8_0
4.17 GB
11% less memory, answers identical, buried fact found at every depth of a 28,000-token prompt. The q4_0 cache was refused: only 32% alike, the fact lost, 12-18% slower.
Llama 3.2 3B12.07 GB
91,136 window
flash + q4_0
6.48 GB at 131,072
For a chat profile it passed every check (95% alike, same tasks, recall kept): about half the memory and 43% more window. A speed-first run chose q8_0 at 7.52 GB instead.

A single machine and a few runs each. Speed moved by several tokens per second between runs of the same setting, so read speed as "about the same", not a ranking.

Where it runs

Setup
clyde setup offers it when it finds a local model. It never runs with --yes.
After a download
/models local offers it once the model is on disk, after the usual model check.
Any time
clyde tune. Add --ask to answer the questions again, --model NAME for a specific model, --ctx TOKENS to test one window.
Your own Ollama
If it has a model loaded, Clyde says so and asks before unloading it, so the readings are fair. Ollama keeps running and loads the model again on its next request.

Turning a setting on

Clyde prints the exact commands for how you run Ollama; it does not change your Ollama itself.

Ollama from the terminal
Add the variables to ~/.zshrc, for example export OLLAMA_KV_CACHE_TYPE=q8_0, then stop Ollama and start it again with ollama serve in a new terminal.
The Ollama app on a Mac
Run launchctl setenv OLLAMA_KV_CACHE_TYPE q8_0 (and the flash attention line), then quit and reopen the app. This only reaches the app, not an ollama serve you start yourself.
Linux with systemd
sudo systemctl edit ollama, add the variables under [Service], then sudo systemctl restart ollama.
A longer window
Also set the CLYDE_MODEL_CONTEXT_... variable it prints, so Clyde asks for that window.

What it can't do

When a model fails mid-turn

With cardShuffle:house as the model, Clyde picks a real model for each turn from the ones that passed /eval. Here Google answered HTTP 503 halfway through, so the turn moved to the next model and finished.

❯ how many tests does test_dates.py have, and which one fails?


♠ dealt google:gemini-3.1-flash-lite  house · laya difficulty 1.6/3 (shadow)
• Read (test_dates.py) running...
  ↳ ./test_dates.py · lines=1-18/18 · 0.0s
♠ dealt google:gemini-3-flash-preview  google:gemini-3.1-flash-lite failed: [google] HTTP 503 — 
provider error, usually temporary: This model is currently e
• Bash (python3 test_dates.py) running...
  ↳ exit=1 · FAILED (failures=1) · 0.1s
`test_dates.py` has 3 tests. `test_february_in_a_leap_year` fails.

♠ Pondered for 14s · 10:45 AM · 18.1k in, 68 out
Recorded 2026-10-05, same project. Google returned the 503 during the recording.

Checking which models work

/eval runs a tool call, a round trip and a hand of 11 graded tasks against every model your keys reach. Broken ones disappear from /models. The red line is a model that scored lower than at its last run.

❯ /eval codestral

4 model(s) to test on your own keys: two short requests, then a hand of 11 harder tasks for each
that passes.
Run the evaluation? [y/n] (y): y
   model                             tool  trip  hand  secs  tok/s  note                 
●  mistral:codestral-latest             ✓     ✓  2/11   0.6     30                       
   mistral:codestral-2508               ✓     ✓  1/11   0.6     30                       
   openrouter:mistralai/codestral-…     ✗     ✗     -     -      -  credits or rate limit
   nvidia:mistralai/codestral-22b-…     ✗     ✗     -     -      -  not available        
↓ mistral:codestral-latest: 3/11 → 2/11 since 2026-10-02
2/4 passed  ·  1 not available  ·  1 credits or rate limits (kept, retry later)
/models now hides the 1 that don't work · /models all shows them
Recorded 2026-10-05. The OpenRouter account had run out of credits; that result is kept and retried later.

whichllm picks the best model that fits

/models local ranks models with whichllm (MIT, by Andyyyy64), bundled as our fork. It merges real benchmarks, grades the evidence behind each score and sizes memory from the model's architecture, so the top pick is the best model that fits, not the biggest. The download confirmation adds a details line with the quality, an estimated speed range and the license. Speeds are estimates.

Laya, and why it isn't steering yet

Laya is a small decision model, an optional extra for Clyde, that runs locally. It watches for a model repeating itself and hands the turn on when it is confident. It also scores each request's difficulty, but that score only starts choosing models once your own sessions show it means something. /laya shows where that stands:

❯ /laya

Laya: not started · from 42 traced session(s)

Stuck checks (re-deal at 0.80)   checks  re-dealt  turn ran out anyway
  below 0.50                           0         0                    0
  0.50 to 0.80                         0         0                    0
  0.80 and up                          0         0                    0
  Loops that ran out under the threshold argue for lowering it; re-dealt turns that ran out 
anyway, or many re-deals, argue for raising it.

Difficulty (shadow turns, split at score 1.62)   turns  avg tool rounds  ran out
  easier half                                  1              1.0        0
  harder half                                  2              3.0        0
  Difficulty stays in shadow: the harder half took 3.0 tool rounds on average, the easier half 
1.0; it needs 9 more scored turn(s) in the smaller half.
Recorded 2026-10-05 on the maintainer's machine, which so far has only a handful of scored turns.