Where the config comes from
Kapso ships a packagedconfig.yaml and uses it unless you point somewhere else:
Configuration and credentials are separate. Knobs — models, budgets, timeouts, gates — come from this file. Credentials never do: the coding-agent CLIs hold their own logins, and keys such as
OPENAI_API_KEY are read from .env by the SDKs that need them.Top-level keys
default_mode
modes used when nothing overrides it. Override per run with kapso evolve --mode MINIMAL or evolve(mode="MINIMAL").
inference
Routes model calls that are not coding-agent work: research, reranking and utilities.The packaged config’s
inference block is the base layer. An inference: block in your own config file deep-merges over it — override one key (say default.model) and the packaged roles and remaining defaults stay in force.roles overrides default for one named role. Anything a role omits falls back to default, so kg_rerank above keeps cli: codex and only lowers effort and timeout.
preflight
These are the same checks
kapso doctor reports. Leaving enabled: true is what makes a missing CLI fail in seconds instead of deep inside a run.
deployment
The agent must be able to serve the model: a Claude model name on the
codex agent is refused by a ChatGPT login. deploy(coding_agent=..., model=...) and kapso deploy --coding-agent override per call, and a deployment: block in your own config file layers over the packaged one key by key.
defaults
modes
A mode is a named bundle of settings. Two ship:GENERIC and MINIMAL. MINIMAL differs mainly by turning knowledge search off and using shorter learner timeouts.
Each mode carries six blocks.
search_strategy
See Capability-aware MCP gates.
coding_agent and feedback_generator
Both take the same shape:knowledge_search
See Search backends.
retry
learner
Two sub-blocks,ingestor and merger, controlling learn_knowledge(). Both take a model, an auth_mode and a timeout. ingestor additionally takes cleanup, cleanup_staging, fail_on_validation_errors and github_repo_visibility.
learning
Everything about trajectory learning: mining finished campaigns into an evidence-priced lesson bank.
Shipped values worth knowing:
~/.kapso, outside the project you run from, so a campaign’s --data-dir and seed copy never pick them up.
update_crew.default_version is the version learn() uses when you do not pass learner_version.
Related
CLI
Commands that accept —config
Python API
Passing config_path to Kapso()
pip install leeroo-kapso · Every page as plain text: llms.txt.