/model-config
Configure AI provider models for Claude Octopus workflows
> /plugin marketplace add nyldn/claude-octopus
Command definition
model-config.mdcommand: model-config
disable-model-invocation: true
description: Configure AI provider models for Claude Octopus workflows
version: 4.0.1
category: configuration
tags: [config, models, providers, codex, antigravity, kimi, spark, routing, trace, interactive]
created: 2025-01-21
updated: 2026-04-21
Model Configuration
**Your first output line MUST be:** `🐙 Octopus Model Config`
STEP 0: Emit Banner (MANDATORY — run before AskUserQuestion or any other step)
echo "🐙 Octopus Model Config"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "provider | model | config | routing | cost"
**Preflight — Ensure plugin root is resolvable (run via Bash tool):**
OCTO_ROOT="${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${HOME}/.claude-octopus/plugin}}"
if [[ ! -x "$OCTO_ROOT/scripts/orchestrate.sh" ]]; then
helper="$OCTO_ROOT/scripts/helpers/ensure-plugin-root.sh"
if [[ ! -x "$helper" ]]; then
helper="$(find "${HOME}/.claude/plugins/cache" "${HOME}/Library/Application Support/Claude" "${LOCALAPPDATA:-/dev/null}/Claude" "${XDG_DATA_HOME:-${HOME}/.local/share}/Claude" -maxdepth 8 -path "*/nyldn-plugins/octo/*/scripts/helpers/ensure-plugin-root.sh" -print -quit 2>/dev/null)"
fi
[[ -x "$helper" ]] && bash "$helper" >/dev/null 2>&1 || true
fi
test -x "$OCTO_ROOT/scripts/orchestrate.sh" && echo "plugin-root:ok" || echo "plugin-root:missing"If the output is `plugin-root:missing`, stop and ask the user to run `/octo:setup`.
Run this unconditionally — even when arguments are provided or when going to interactive wizard. The explicit bash block ensures the banner emits even when the command routes straight to `AskUserQuestion` (which historically skipped the inline-prose instruction and broke E2E pattern matching — see #301).
Interactive model configuration wizard. Detects installed providers, shows current settings, and guides users through configuration with AskUserQuestion.
STEP 1: Detect & Display
Run a SINGLE comprehensive detection command:
echo "=== Provider Detection ==="
printf "codex:%s\n" "$(command -v codex >/dev/null 2>&1 && echo installed || echo missing)"
printf "perplexity:%s\n" "$([ -n "${PERPLEXITY_API_KEY:-}" ] && echo configured || echo missing)"
printf "openrouter:%s\n" "$([ -n "${OPENROUTER_API_KEY:-}" ] && echo configured || echo missing)"
printf "copilot:%s\n" "$(command -v copilot >/dev/null 2>&1 && echo installed || echo missing)"
printf "qwen:%s\n" "$(command -v qwen >/dev/null 2>&1 && echo installed || echo missing)"
printf "kimi:%s\n" "$(command -v kimi >/dev/null 2>&1 && echo installed || echo missing)"
printf "ollama:%s\n" "$(command -v ollama >/dev/null 2>&1 && curl -sf --connect-timeout 1 --max-time 3 http://localhost:11434/api/tags >/dev/null 2>&1 && echo running || command -v ollama >/dev/null 2>&1 && echo installed || echo missing)"
printf "opencode:%s\n" "$(command -v opencode >/dev/null 2>&1 && echo installed || echo missing)"
echo "=== Config ==="
if [[ -f ~/.claude-octopus/config/providers.json ]]; then
cat ~/.claude-octopus/config/providers.json
else
echo "NO_CONFIG"
fi
echo "=== Env ==="
env | grep -E '^OCTOPUS_|^CLAUDE_MODEL=' 2>/dev/null || echo "none"Then display a compact dashboard:
🐙 Octopus Model Config
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Providers Status
🔵 Claude (Sonnet/Opus) Built-in ✓
🔴 Codex (GPT-5.6 Sol) [Installed ✓ / Missing ✗] → current: <model>
🧭 Antigravity (`agy`) [Installed ✓ / Missing ✗] → current: <model>
🌙 Kimi Code [Installed ✓ / Missing ✗] → current: <model alias>
🟣 Perplexity [Configured ✓ / Not set]
🟠 OpenRouter [Configured ✓ / Not set]
...other installed providers...
Phase Routing
discover → <model> define → <model>
develop → <model> deliver → <model>
review → <model> security → <model>
debate → <model> research → <model>
Cost Mode: <standard/budget/premium>
Only show providers that are installed or configured. Don't show rows for providers the user doesn't have.
STEP 2: Route by Arguments
**If arguments were provided** (e.g., `/octo:model-config codex gpt-5.6-sol`), skip the interactive flow and execute the CLI-style command directly per the EXECUTION CONTRACT at the bottom.
**If no arguments**, proceed to the interactive wizard:
STEP 3: Interactive Menu
AskUserQuestion({
questions: [{
question: "What would you like to configure?",
header: "Model Config",
multiSelect: false,
options: [
{label: "Provider defaults", description: "Set default models for Codex, Antigravity, OpenRouter, etc."},
{label: "Phase routing", description: "Choose which model handles each workflow phase (discover, develop, review, etc.)"},
{label: "Role routing overrides", description: "Route specific roles/personas such as researcher, logic-reviewer, or qa-reviewer"},
{label: "Debate & multi-LLM", description: "Configure which providers participate in debates, parallel execution, and reviews"},
{label: "Session provider availability", description: "Temporarily enable or disable providers for this Claude Code session"},
{label: "Cost mode", description: "Switch between budget, standard, and premium model tiers"},
{label: "Reset to defaults", description: "Reset all or specific provider configuration"}
]
}]
})Route: Provider Defaults
Build options dynamically from detected providers. Only show providers that are installed/configured:
For Claude, fill the resolved default from the active cost mode and installed CLI, preserving configured pins. Sonnet 5.5 requires Claude Code 2.1.284+ and Opus 5.5 requires 2.1.280+. Older clients use their supported fallback.
AskUserQuestion({
questions: [{
question: "Which provider do you want to configure?",
header: "Provider",
multiSelect: false,
options: [Read more
command: model-config disable-model-invocation: true description: Configure AI provider models for Claude Octopus workflows version: 4.0.1 category: configuration tags: [config, models, providers, codex, antigravity, kimi, spark, routing, trace, interactive] created: 2025-01-21 updated: 2026-04-21
Model Configuration
**Your first output line MUST be:** `🐙 Octopus Model Config`
STEP 0: Emit Banner (MANDATORY — run before AskUserQuestion or any other step)
echo "🐙 Octopus Model Config" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "provider | model | config | routing | cost"
**Preflight — Ensure plugin root is resolvable (run via Bash tool):**
OCTO_ROOT="${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${HOME}/.claude-octopus/plugin}}"
if [[ ! -x "$OCTO_ROOT/scripts/orchestrate.sh" ]]; then
helper="$OCTO_ROOT/scripts/helpers/ensure-plugin-root.sh"
if [[ ! -x "$helper" ]]; then
helper="$(find "${HOME}/.claude/plugins/cache" "${HOME}/Library/Application Support/Claude" "${LOCALAPPDATA:-/dev/null}/Claude" "${XDG_DATA_HOME:-${HOME}/.local/share}/Claude" -maxdepth 8 -path "*/nyldn-plugins/octo/*/scripts/helpers/ensure-plugin-root.sh" -print -quit 2>/dev/null)"
fi
[[ -x "$helper" ]] && bash "$helper" >/dev/null 2>&1 || true
fi
test -x "$OCTO_ROOT/scripts/orchestrate.sh" && echo "plugin-root:ok" || echo "plugin-root:missing"If the output is `plugin-root:missing`, stop and ask the user to run `/octo:setup`.
Run this unconditionally — even when arguments are provided or when going to interactive wizard. The explicit bash block ensures the banner emits even when the command routes straight to `AskUserQuestion` (which historically skipped the inline-prose instruction and broke E2E pattern matching — see #301).
Interactive model configuration wizard. Detects installed providers, shows current settings, and guides users through configuration with AskUserQuestion.
STEP 1: Detect & Display
Run a SINGLE comprehensive detection command:
echo "=== Provider Detection ==="
printf "codex:%s\n" "$(command -v codex >/dev/null 2>&1 && echo installed || echo missing)"
printf "perplexity:%s\n" "$([ -n "${PERPLEXITY_API_KEY:-}" ] && echo configured || echo missing)"
printf "openrouter:%s\n" "$([ -n "${OPENROUTER_API_KEY:-}" ] && echo configured || echo missing)"
printf "copilot:%s\n" "$(command -v copilot >/dev/null 2>&1 && echo installed || echo missing)"
printf "qwen:%s\n" "$(command -v qwen >/dev/null 2>&1 && echo installed || echo missing)"
printf "kimi:%s\n" "$(command -v kimi >/dev/null 2>&1 && echo installed || echo missing)"
printf "ollama:%s\n" "$(command -v ollama >/dev/null 2>&1 && curl -sf --connect-timeout 1 --max-time 3 http://localhost:11434/api/tags >/dev/null 2>&1 && echo running || command -v ollama >/dev/null 2>&1 && echo installed || echo missing)"
printf "opencode:%s\n" "$(command -v opencode >/dev/null 2>&1 && echo installed || echo missing)"
echo "=== Config ==="
if [[ -f ~/.claude-octopus/config/providers.json ]]; then
cat ~/.claude-octopus/config/providers.json
else
echo "NO_CONFIG"
fi
echo "=== Env ==="
env | grep -E '^OCTOPUS_|^CLAUDE_MODEL=' 2>/dev/null || echo "none"Then display a compact dashboard:
🐙 Octopus Model Config ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Providers Status 🔵 Claude (Sonnet/Opus) Built-in ✓ 🔴 Codex (GPT-5.6 Sol) [Installed ✓ / Missing ✗] → current: <model> 🧭 Antigravity (`agy`) [Installed ✓ / Missing ✗] → current: <model> 🌙 Kimi Code [Installed ✓ / Missing ✗] → current: <model alias> 🟣 Perplexity [Configured ✓ / Not set] 🟠 OpenRouter [Configured ✓ / Not set] ...other installed providers... Phase Routing discover → <model> define → <model> develop → <model> deliver → <model> review → <model> security → <model> debate → <model> research → <model> Cost Mode: <standard/budget/premium>
Only show providers that are installed or configured. Don't show rows for providers the user doesn't have.
STEP 2: Route by Arguments
**If arguments were provided** (e.g., `/octo:model-config codex gpt-5.6-sol`), skip the interactive flow and execute the CLI-style command directly per the EXECUTION CONTRACT at the bottom.
**If no arguments**, proceed to the interactive wizard:
STEP 3: Interactive Menu
AskUserQuestion({
questions: [{
question: "What would you like to configure?",
header: "Model Config",
multiSelect: false,
options: [
{label: "Provider defaults", description: "Set default models for Codex, Antigravity, OpenRouter, etc."},
{label: "Phase routing", description: "Choose which model handles each workflow phase (discover, develop, review, etc.)"},
{label: "Role routing overrides", description: "Route specific roles/personas such as researcher, logic-reviewer, or qa-reviewer"},
{label: "Debate & multi-LLM", description: "Configure which providers participate in debates, parallel execution, and reviews"},
{label: "Session provider availability", description: "Temporarily enable or disable providers for this Claude Code session"},
{label: "Cost mode", description: "Switch between budget, standard, and premium model tiers"},
{label: "Reset to defaults", description: "Reset all or specific provider configuration"}
]
}]
})Route: Provider Defaults
Build options dynamically from detected providers. Only show providers that are installed/configured:
For Claude, fill the resolved default from the active cost mode and installed CLI, preserving configured pins. Sonnet 5.5 requires Claude Code 2.1.284+ and Opus 5.5 requires 2.1.280+. Older clients use their supported fallback.
AskUserQuestion({
questions: [{
question: "Which provider do you want to configure?",
header: "Provider",
multiSelect: false,
options: [Every AI model has blind spots. Claude Octopus supports twelve external provider integrations — Codex, Antigravity CLI, Copilot, Qwen, Ollama, Perplexity, OpenRouter, OrcaRouter, OpenCode, Cursor CLI, Grok, and Kimi Code — alongside the built-in Claude Code
Other commands on octo.
More commands from other plugins.
setup
CommandOne-time setup after installing ARIS as a Claude Code plugin — registers the Codex reviewer MCP server from the plugin directory…
autoresearch
CommandAutonomous iteration loop: modify, verify, keep/discard against any metric
agent
Commandname: sc:agent description: SC Agent — session controller that orchestrates investigation, implementation, and review category:…

