CLI models
Summarize can use installed CLIs (Claude, Codex, Gemini) as local model backends.
Model ids
cli/claude/<model>(e.g.cli/claude/sonnet)cli/codex/<model>(e.g.cli/codex/gpt-5.2)cli/gemini/<model>(e.g.cli/gemini/gemini-3-flash-preview)
Use --cli [provider] (case-insensitive) for the provider default, or --model cli/<provider>/<model> to pin a model.
If --cli is provided without a provider, auto selection is used with CLI enabled.
Auto mode
Auto mode does not use CLIs unless you set cli.enabled in config.
Why: CLI adds ~4s latency per attempt and higher variance. Recommendation: enable only Gemini unless you have a reason to add others.
Gemini CLI performance: summarize sets GEMINI_CLI_NO_RELAUNCH=true for Gemini CLI runs to avoid a costly self-relaunch (can be overridden by setting it yourself).
When enabled, auto prepends CLI attempts in the order listed in cli.enabled
(recommended: ["gemini"]).
Enable CLI attempts:
{
"cli": { "enabled": ["gemini"] }
}
Disable CLI attempts:
{
"cli": { "enabled": [] }
}
Note: when cli.enabled is set, it also acts as an allowlist for explicit --cli / --model cli/....
CLI discovery
Binary lookup:
CLAUDE_PATH,CODEX_PATH,GEMINI_PATH(optional overrides)- Otherwise uses
PATH
Attachments (images/files)
When a CLI attempt is used for an image or non-text file, Summarize switches to a path-based prompt and enables the required tool flags:
- Claude:
--tools Read --dangerously-skip-permissions - Gemini:
--yoloand--include-directories <dir> - Codex:
codex exec --output-last-message ...and-i <image>for images
Config
{
"cli": {
"enabled": ["claude", "gemini", "codex"],
"codex": { "model": "gpt-5.2" },
"gemini": { "model": "gemini-3-flash-preview", "extraArgs": ["--verbose"] },
"claude": {
"model": "sonnet",
"binary": "/usr/local/bin/claude",
"extraArgs": ["--verbose"]
}
}
}
Notes:
- CLI output is treated as text only (no token accounting).
- If a CLI call fails, auto mode falls back to the next candidate.
Generate free preset (OpenRouter)
summarize ships with a built-in preset free, backed by OpenRouter :free models.
To regenerate the candidate list (and persist it in your config):
summarize refresh-free
Options:
--runs 2(default): extra timing runs per selected model (total runs = 1 + runs)--smart 3(default): number of “smart-first” picks (rest filled by fastest)--set-default: also sets"model": "free"in~/.summarize/config.json