Configuration
cheaphelp is configured through ~/.cheaphelp/config.json. The defaults are
shown below. Two tiers: a cheap conversational model for the responder, a
stronger model for the engineering roles. variants maps a role to an opencode
--variant (provider reasoning effort, e.g. max); "" means the provider
default. Use cheaphelp config show|get|set to inspect or edit it without
hand-editing JSON.
{
"models": {
"responder": "openrouter/deepseek/deepseek-v4-flash",
"planner": "openrouter/minimax/minimax-m3",
"worker": "openrouter/deepseek/deepseek-v4-flash",
"reviewer": "openrouter/minimax/minimax-m3",
"rework": "openrouter/deepseek/deepseek-v4-flash",
"fixer": "openrouter/deepseek/deepseek-v4-flash"
},
"variants": { "responder": "max", "planner": "", "worker": "max", "reviewer": "", "rework": "max", "fixer": "max" },
"sandbox": {
"confine_to_workdir": true,
"restrict_bash": true,
"no_network_tools": true
},
"pr_reviewers": [],
"poll_interval": "10m",
"agent_timeout": 600,
"daily_budget_usd": 0,
"budget_warn_at": 0.80,
"quality_gate_fix_attempts": 1,
"opencode_bin": "opencode"
}
pr_reviewersis a list of GitHub usernames to request as reviewers on PRs the reviewer role opens (empty = no reviewer request).agent_timeoutis the per-agent subprocess timeout in seconds.sandboxcontrols agent permissions; see Sandboxing.daily_budget_usdandbudget_warn_atgovern daily spend; see Cost tracking.quality_gate_fix_attemptsis how many times the fixer role attempts to repair a failing quality gate (re-running the gate after each attempt) before the issue is sent back to the planner;0skips the fixer entirely. See Pipeline.
After editing models, prompts, variants, or sandbox settings, run
cheaphelp agents sync to regenerate the opencode config.