Agents
Built-in agents, auth, model overrides, and custom agent config.
WTmag launches agent CLIs inside tmux. It doesn't replace them and doesn't handle their auth. Each agent authenticates through its own native flow.
See agents concept for the bigger picture — TUI mode, extensibility, why WTmag stays out of credential management.
Built-in agents
| Agent | Command | Prompt delivery | Notes |
|---|---|---|---|
| Pi | pi | Positional | Default in generated config |
| OpenCode | opencode | --prompt | |
| Claude Code | claude | Positional | |
| Codex | codex | Positional |
Default is Pi. Change it in config or pass --agent.
Auth
Each agent handles its own credentials. WTmag doesn't pass provider env vars through. Make sure the agent works from a normal shell first:
pi --help
opencode --help
claude --help
codex --helpFor Pi, configure providers in ~/.pi/agent/models.json. Pi supports literal API keys, env var names, and ! shell commands (useful with 1Password, Infisical, etc.):
{
"providers": {
"openai": {
"apiKey": "!infisical secrets get OPENAI_API_KEY --projectId=... --env=prod --plain --silent"
},
"anthropic": {
"apiKey": "!op read 'op://vault/anthropic/credential'"
}
}
}The ! shell-command form lets Pi fetch the key itself at request time instead of relying on WTmag to inject provider env vars. WTmag intentionally stays out of this — there is nothing extra to configure on WTmag's side.
Model overrides
Format:
--model provider/model[:thinking]Thinking levels: off, none, minimal, low, medium, high, xhigh, max.
Works with Pi and OpenCode:
wtmag create --github 456 -t issue --agent pi --model anthropic/claude-sonnet-4.5:high
wtmag create --github 456 -t issue --agent opencode --model openai/gpt-5.2:highPi gets the model string as-is. OpenCode gets --model provider/model with :thinking mapped to --variant.
Other agents will fail. WTmag won't guess flags. Configure the model in the agent's own config instead.
Custom agent config
Define a custom agent in ~/.config/wtmag/config.toml or project wtmag.toml:
[agents.aider]
command = "aider"
prompt_flag = "--message"With fixed args:
[agents.my-agent]
command = "my-agent"
args = ["run", "--profile", "coding"]
prompt_flag = "--prompt"prompt_flag is optional. If you omit it, WTmag uses positional prompt delivery.
See configuration for the full config schema.
