Configuration¶
Ito configuration is JSON-based and merges multiple sources (defaults, global config, and project config).
When in doubt, treat schemas/ito-config.schema.json as the source of truth for available keys and types.
Configuration Files¶
Global config (config.json)¶
This is per-user and applies to all projects.
- Path: run
ito config path - Default locations:
$XDG_CONFIG_HOME/ito/config.json(ifXDG_CONFIG_HOMEis set)~/.config/ito/config.json(macOS/Linux)%APPDATA%\ito\config.json(Windows)
You can manage this file via the CLI:
ito config list
ito config get worktrees.enabled
ito config set worktrees.enabled true
ito config unset worktrees.enabled
ito config schema
Notes:
- Values passed to
ito config setare parsed as JSON by default. Use--stringto force a string value. - If the file is missing, Ito falls back to defaults.
Repo root config (ito.json and .ito.json)¶
Optional project config files at the repository root:
ito.json.ito.json(higher precedence; useful for repo-local overrides)
These files participate in project-level config merging.
Ito directory config (.ito/config.json)¶
This is the team/shared project configuration file and is intended to be committed.
- Path:
.ito/config.json - Use
$schemafor editor completion:
Merge Order and Semantics¶
Ito loads defaults (built into the binary) and then merges config files.
At a high level:
- Built-in defaults
- Global config (
~/.config/ito/config.json) - Project config cascade:
ito.json.ito.json.ito/config.json$PROJECT_DIR/config.json(ifPROJECT_DIRis set)
Merge semantics:
- objects: recursively merged
- scalars: later source overrides earlier
- arrays: later source replaces earlier
Common Settings¶
Worktrees¶
Worktree behavior is controlled by the worktrees object.
Common keys:
worktrees.enabledworktrees.strategy(checkout_subdir,checkout_siblings,bare_control_siblings)worktrees.layout.base_dirworktrees.layout.dir_nameworktrees.apply.enabledworktrees.apply.integration_mode(commit_prormerge_parent)worktrees.apply.copy_from_main(array of glob strings)worktrees.apply.setup_commands(array of shell strings)worktrees.default_branch
Example (global config):
{
"worktrees": {
"enabled": true,
"strategy": "bare_control_siblings",
"layout": { "dir_name": "ito-worktrees" },
"apply": {
"enabled": true,
"integration_mode": "commit_pr",
"copy_from_main": [".env", ".envrc", ".mise.local.toml"],
"setup_commands": []
},
"default_branch": "main"
}
}
Harness and agent model selection¶
Agent harness preferences live under harnesses.<harness-id>. Supported harness IDs include:
opencodeclaude-codecodexgithub-copilot
Each harness can set:
provider(optional constraint)agentsmapping forito-quick,ito-general,ito-thinking
Example:
{
"harnesses": {
"opencode": {
"agents": {
"ito-quick": "anthropic/claude-haiku-4-5",
"ito-general": { "model": "openai/gpt-5.2-codex", "variant": "high", "temperature": 0.3 },
"ito-thinking": { "model": "openai/gpt-5.2-codex", "variant": "xhigh", "temperature": 0.5 }
}
}
}
}
Testing defaults¶
Project-wide testing defaults live under defaults.testing.
Keys include:
defaults.testing.coverage.target_percentdefaults.testing.tdd.workflow
Cache¶
Cache settings live under cache:
cache.ttl_hours
Change coordination¶
Change coordination settings live under changes.coordination_branch:
changes.coordination_branch.enabledchanges.coordination_branch.name
Ito Directory Name (projectPath)¶
projectPath controls the Ito working directory name (defaults to .ito).
Resolution precedence (highest first):
.ito.jsonprojectPathito.jsonprojectPath- global config
config.jsonprojectPath - default:
.ito
Note: projectPath is intentionally not read from .ito/config.json to avoid a resolution cycle.
Per-change metadata (.ito.yaml)¶
Each change has a small metadata file:
- Path:
.ito/changes/<change-id>/.ito.yaml - Common fields:
schema(string)created(YYYY-MM-DD)ignore_warnings(array of validator warning IDs)
Example:
Avoiding template overwrites¶
Some files are installed/updated by ito init / ito update and may be overwritten.
For project-specific guidance, prefer:
.ito/user-prompts/guidance.md.ito/user-prompts/<artifact-id>.mdAGENTS.md(repo)