BetaReady for early users who want a local agent board with real human gates. Agents run with your local permissions.

Settings reference

Coppice keeps its settings in one file, config.toml:

OSPath
Linux~/.config/Coppice/config.toml
macOS~/Library/Application Support/Coppice/config.toml

On Linux, if XDG_CONFIG_HOME is set, the file is at $XDG_CONFIG_HOME/Coppice/config.toml.

Edit it in the app

Open Settings in the sidebar. The page shows the file as text, and your comments are kept.

  • Save checks the file before writing it. A bad value isn’t saved.
  • Restore last good version undoes a bad change.

Some changes apply right away. Others show “Saved. Restart Coppice to apply.”

You can also edit the file in any text editor. Your edits survive upgrades.

Updates

Open Settings → Updates to see your version and choose Check for updates. Automatic updates is on by default. Turn it off, and Coppice stops checking for new versions in the background.

This switch isn’t in config.toml. Coppice saves it as automaticUpdates in update-settings.json, in the same folder.

Replace keys

If you shared a backup, make new keys and a new admin password. Saved tokens keep working, and everyone is signed out.

Open Tools → Backup → Replace keys, enter the new admin password, and confirm.

Logs

Admins can open Logs beside Settings to filter and live-tail server, request, agent run and database logs. Each run has a View logs link.

Export logs saves the lines that match your current filters as coppice-logs.zip. Coppice removes the tokens and keys it knows about, but check the file before you share it.

Report a problem opens a new GitHub issue with your Coppice version filled in. Say what happened and what you expected, then attach the zip from Export logs.

[logs]

FieldTypeDefaultWhat it does
retention_daysinteger14How many days of logs to keep, including today: 3, 7, 14, or 30. The default is 14. Coppice deletes older logs every hour, and changes apply without a restart. If logs pass 256 MiB, Coppice deletes the oldest first, even before retention_days is up.

Coppice never deletes today’s log or the database log it’s writing, even past the limit. Database logs count toward the 256 MiB limit, and Coppice deletes them once they pass retention_days.

FieldTypeDefaultWhat it does
dirstring./data/logsFolder for logs. The desktop app uses its own folder and ignores this. Changing it needs a restart.

Connectors

Signed-in CLIs are on by default. You only need a line to turn one off:

[agent.connectors.claude-code]
enabled = false

The switch in Tools → Connectors writes the same line.

Kilo Code stays off until you turn it on. Coppice can’t check its sign-in for free.

[agent]

FieldTypeDefaultWhat it does
worktrees_pathstring<data-dir>/worktreesFolder where each ticket gets its own git worktree.
worker_countinteger2How many agent jobs run at once. Below 1 runs as 1.
health_check_interval_secsinteger60Seconds between agent health checks. Below 10 runs as 10.

<data-dir> is the folder that holds config.toml: ~/.config/Coppice on Linux and WSL, and ~/Library/Application Support/Coppice on macOS.

[agent.connectors.<id>]

Ids: claude-code, codex, cursor, opencode, kilo-code. Each table is optional.

FieldTypeDefaultWhat it does
enabledboolnot set: on if the CLI is signed inTurns the connector on or off.
model_providerslist of strings[]Model providers for this connector. Filled in when you turn it on.
run_timeout_secsinteger1800 for OpenCode, 600 for othersSeconds before a run on this connector fails.
commandstringagent (Cursor), codex, opencode, kiloThe CLI binary to run. Claude Code always runs claude and has no command.

OpenCode only:

FieldTypeDefaultWhat it does
serve_hostnamestring127.0.0.1Hostname for OpenCode’s helper during a run. Needs a restart.

Changing OpenCode’s command also needs a restart.

[workflow]

FieldTypeDefaultWhat it does
auto_start_runsboolfalseWhen true, assigning an agent to a ticket with a repository starts a run. When false, you click Run agent.
auto_assign.defaultbooltrueTurns auto-assign on for every status without its own setting.
auto_assign.<status>boolbacklog: false. Others: uses defaultTurns auto-assign on or off for one status.
auto_split.defaultboolfalseTurns auto-split on for every status without its own setting.
auto_split.<status>booluses defaultTurns auto-split on or off for one status.

Status keys: backlog, ready, in_progress, in_review, in_qa, wait_for_final_review (Wait for Human Review), blocked, done.

When auto-assign is on for that status, Coppice assigns the agent named by the run. When it’s off, the ticket shows Recommends: instead.

When auto-split is on for that status, Coppice creates the child tickets the run proposes. When it’s off, it saves a Pending split recommendation until you click Approve splits.

[knowledge]

FieldTypeDefaultWhat it does
enabledbooltrueTurns knowledge compaction on or off.
poll_interval_msinteger500How often the compaction scheduler wakes. Below 100 runs as 100.
compaction.interval_secsinteger1800Seconds between compaction cycles.
compaction.batch_max_ticketsinteger10Most tickets in one batch.
compaction.batch_max_source_bytesinteger200000Most source bytes in one batch.
compaction.max_candidates_per_batchinteger20Most candidates one batch can propose.
compaction.max_attemptsinteger3Most tries for one batch.
auto_save.enabledboolfalseSaves low-risk candidates without asking you.
auto_save.allowed_typeslist of strings[]Types auto-save may save: bug_pattern, coding_convention, dependency_note, performance_note, review_feedback, test_command.
auto_save.minimum_confidencestringhighMust stay high.
retrieval.top_kinteger8How many entries one lookup returns. 1 to 20.
retrieval.allowed_typeslist of strings[] (all types)Only return these types: coding_convention, architecture_rule, bug_pattern, test_command, review_feedback, dependency_note, api_contract, workflow_rule, human_preference, operational_runbook, security_rule, performance_note.
retrieval.minimum_confidencestringmediumlow, medium or high.
retrieval.default_page_sizeinteger25Default page size.
retrieval.max_page_sizeinteger100Largest page size. 100 at most.
retrieval.max_active_per_boardinteger1000The most Knowledge items, pending or approved, that one board can hold. Items for agents on that board count too.
retrieval.max_active_workspaceinteger10000The most Knowledge items, pending or approved, that apply to the whole workspace.

Every count and interval above must be greater than 0.

[git]

FieldTypeDefaultWhat it does
author_namestringCoppiceAuthor name on commits Coppice makes.
author_emailstringcoppice@localhostAuthor email on those commits.
push_enabledboolfalseLets Coppice push branches and open pull requests.

[plugins]

FieldTypeDefaultWhat it does
dirstring<data-dir>/pluginsYour default plugin folder. Add more folders on the Plugins page.
allow_file_git_urlsboolfalseLets plugin installs use file: git URLs.
git_timeout_secsinteger300Seconds before a plugin clone or update fails.
mcp_start_timeout_secsinteger20Seconds to wait for a plugin’s MCP server to start.
mcp_list_timeout_secsinteger10Seconds to wait for a plugin to list its tools.
mcp_idle_shutdown_secsinteger600Seconds an idle plugin MCP server stays up.

[mcp]

FieldTypeDefaultWhat it does
builtin_plugins_dirstring<data-dir>/builtin-pluginsWhere Coppice writes its built-in skills on every start. Edits there are lost.
call_timeout_secsinteger60Seconds before one tool call fails.
max_output_bytesinteger32768Largest tool result, in bytes.
comment_post_limitinteger5Most comments one run can post.
token_ttl_secsinteger14400How long a run’s tool token lasts, in seconds.

[keybindings]

Each key is a command id from Keyboard shortcuts. Your keys replace that command’s defaults, and an empty value turns the shortcut off.

FieldTypeDefaultWhat it does
"<command id>"string or list of stringsthe built-in shortcutReplaces that command’s keys. "" removes them.
[keybindings]
"palette.open" = "P"
"ticket.create" = ""
"board.nextCard" = ["J", "Down"]

Mod is Cmd on macOS and Ctrl on Linux and WSL. A sequence is written G then B. Several keys for one command are separated with or, or written as a list. Save applies the change without a restart. A shortcut Coppice can’t read, an unknown command id, a key another command already has, or a key that belongs to the browser or the system is skipped. That command keeps its default, and Settings explains why.