Configuration
Config files, defaults, precedence, and custom agent definitions.
WTmag reads config from two places. Project first, then global. Anything you set in project config layers on top of global.
The two files
Project-level (in your repo root):
wtmag.tomlGlobal:
~/.config/wtmag/config.tomlProject config overrides global. If you redefine an agent block, include the whole thing — partial overrides aren't supported.
Generated defaults
First run creates the global file with this content:
[agents.default]
name = "pi"
[launch]
implementation = "window"
review = "window"
[agents.pi]
command = "pi"
prompt_flag = ""
[agents.opencode]
command = "opencode"
prompt_flag = "--prompt"
[agents.claude]
command = "claude"
prompt_flag = ""
[agents.codex]
command = "codex"
prompt_flag = ""The shipped template is config.example.toml in the WTmag repo. WTmag copies it to ~/.config/wtmag/config.toml on first run when that file is missing.
How the default agent is picked
--agentflag on the command lineagents.default.nameinwtmag.tomlagents.default.namein~/.config/wtmag/config.toml
If nothing exists yet, the generated default is pi.
How placement is picked
Same order:
--launch,-s, or-won the command line[launch]inwtmag.toml[launch]in~/.config/wtmag/config.toml
implementation is for issue and custom prompt workers. review is for PR review workers. Each can default to window or session independently.
Adding a custom agent
[agents.aider]
command = "aider"
prompt_flag = "--message"With fixed args:
[agents.my-agent]
command = "my-agent"
args = ["run", "--profile", "coding"]
prompt_flag = "--prompt"Use it:
wtmag create --github 456 -t issue --agent aiderOr make it the default:
[agents.default]
name = "aider"See agents for the concept behind custom agents, and agents reference for auth and model overrides.
prompt_flag
This tells WTmag how to pass the bootstrap prompt to the agent. WTmag writes the full brief to .wtmag/prompt.md, then sends a bootstrap instruction that tells the agent to read that file.
--prompt→opencode --prompt "Read ./.wtmag/prompt.md and use it as the full task brief."--message→aider --message "Read ./.wtmag/prompt.md and use it as the full task brief."- empty →
pi "Read ./.wtmag/prompt.md and use it as the full task brief."(positional)
Leave it empty or omit it if the agent takes the prompt as a positional argument.
Per-project overrides
Add a wtmag.toml at your repo root using the same schema. You only need to include the tables you want to change. Common overrides:
# Use a different default agent for this project
[agents.default]
name = "claude"
# Open implementation workers as sessions, reviews as windows
[launch]
implementation = "session"
review = "window"