From Multi-Model Team
Set up multi-model-team — create your personal roster at ~/.claude/mmt-roster.json (seeded from the shipped default) so your tuning survives plugin updates, and print the next steps (roster precedence + statusline HUD).
How this command is triggered — by the user, by Claude, or both
Slash command
/multi-model-team:mmt-setup [--force]This command is limited to the following tools:
The summary Claude sees in its command listing — used to decide when to auto-load this command
# /mmt-setup — scaffold your multi-model-team config
Plugin root: `${CLAUDE_PLUGIN_ROOT}`
**Raw input:** $ARGUMENTS
Create the user's personal roster at `~/.claude/mmt-roster.json`. This is **the** place to tune
backends / routes / `team` / `reasoning` — it's read in preference to the plugin's shipped default,
so plugin updates never clobber it.
## 1 · Run the setup script
Run this with the Bash tool. It seeds `~/.claude/mmt-roster.json` from the shipped default and is
**safe to re-run** — it refuses to overwrite an existing personal roster unless `--force` is passed
(pass `--force` th...Plugin root: ${CLAUDE_PLUGIN_ROOT}
Raw input: $ARGUMENTS
Create the user's personal roster at ~/.claude/mmt-roster.json. This is the place to tune
backends / routes / team / reasoning — it's read in preference to the plugin's shipped default,
so plugin updates never clobber it.
Run this with the Bash tool. It seeds ~/.claude/mmt-roster.json from the shipped default and is
safe to re-run — it refuses to overwrite an existing personal roster unless --force is passed
(pass --force through only if the user's $ARGUMENTS contains it):
node "${CLAUDE_PLUGIN_ROOT}/src/bin/setup.mjs"
If the user asked to reset it (their input contains --force), run:
node "${CLAUDE_PLUGIN_ROOT}/src/bin/setup.mjs" --force
Relay the script's output to the user (it prints the created/left-untouched path).
Roster resolution order (highest first) — file-based, no env var:
<cwd>/.mmt/roster.json — project-local roster (per-repo tuning; check it into the project so
a team shares one routing config).~/.claude/mmt-roster.json — the personal roster you just created (applies across all projects).<plugin>/config/roster.json — the shipped default.Each file is honored only if it exists, falling through to the next tier otherwise. To tune a single
project, copy the relevant sections into <that repo>/.mmt/roster.json.
The HUD is not auto-registered. If the user wants it, they add a statusLine to their own
~/.claude/settings.json with the absolute path to this plugin's statusline:
{
"statusLine": {
"type": "command",
"command": "node \"${CLAUDE_PLUGIN_ROOT}/statusline/statusline.mjs\""
}
}
(Use the real absolute plugin path in place of ${CLAUDE_PLUGIN_ROOT} — settings.json does not
expand it.)
Briefly note what they can edit in the roster: backends (enable/disable agy/codex), routes
(where a task type goes), team (the /team pipeline roles), reasoning.panel (which models
/reasoning fans out to), defaults.preset (budget/balanced/premium). Routing changes can be
verified with /route-test.
npx claudepluginhub watchandytw/multi-model-team --plugin multi-model-team