WTmag
Reference

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

AgentCommandPrompt deliveryNotes
PipiPositionalDefault in generated config
OpenCodeopencode--prompt
Claude CodeclaudePositional
CodexcodexPositional

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 --help

For 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:high

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

On this page