WTmag
Reference

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.toml

Global:

~/.config/wtmag/config.toml

Project 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

  1. --agent flag on the command line
  2. agents.default.name in wtmag.toml
  3. agents.default.name in ~/.config/wtmag/config.toml

If nothing exists yet, the generated default is pi.

How placement is picked

Same order:

  1. --launch, -s, or -w on the command line
  2. [launch] in wtmag.toml
  3. [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 aider

Or 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.

  • --promptopencode --prompt "Read ./.wtmag/prompt.md and use it as the full task brief."
  • --messageaider --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"

On this page