Subagent Extension - Multi-Model Provider Support
Delegate tasks to specialized subagents with isolated context windows and intelligent multi-provider model resolution.
Features
- Isolated context: Each subagent runs in a separate
piprocess - Multi-model support: Each agent can use a different model
- Intelligent provider resolution: Automatically finds models across providers
- Provider preference: Configure which providers to prefer for model lookup
- Streaming output: See tool calls and progress as they happen
- Parallel execution: Run multiple agents concurrently
- Chain workflows: Sequential execution with output passing
Model Resolution
When an agent specifies a model ID (e.g., claude-sonnet-4-5), the extension:
- First tries preferred providers with API keys (in order)
- Then tries other providers with API keys
- Falls back to any provider (will fail if no API key configured)
This allows you to:
- Use
google-vertex-claudefor Claude models (if configured) - Fall back to
anthropicif vertex isn’t available - Use local models via
llama-cpp - Configure provider preferences globally or per-session
Configuration
Provider Preference
Configure provider preference in three ways (priority order):
1. Command-line flag (highest priority)
pi --subagent-providers google-vertex-claude,google,llama-cpp
2. Settings file (~/.pi/agent/settings.json)
{
"subagentProviderPreference": [
"google-vertex-claude",
"google",
"llama-cpp",
"anthropic",
"openai"
]
}
3. Default behavior (lowest priority)
If not configured, the extension tries all providers, preferring those with API keys.
View Current Configuration
pi
> /subagent-config
Agent Definitions
Create agents in ~/.pi/agent/agents/*.md:
---
name: scout
description: Fast reconnaissance
tools: read, grep, find, ls
model: claude-haiku-4-5
---
You are a scout. Quickly investigate a codebase...
The model: field is just the model ID - the provider is resolved automatically.
Available Models by Provider
Anthropic Claude via Google Vertex:
claude-opus-4-6claude-sonnet-4-5@20250929claude-haiku-4-5@20251001
Google Gemini:
gemini-2.5-flashgemini-2.5-pro
Local (llama-cpp):
Qwen/Qwen3-8B-GGUF:Q4_K_Mbartowski/DeepSeek-R1-Distill-Qwen-7B-GGUF:Q4_K_M
Usage Examples
Simple Usage
Use scout to find all Tekton tasks
Chain Workflow
Chain: scout finds auth code, planner creates refactor plan, worker implements it
This might use:
- scout →
claude-haiku-4-5viagoogle-vertex-claude - planner →
claude-sonnet-4-5@20250929viagoogle-vertex-claude - worker →
claude-sonnet-4-5@20250929viagoogle-vertex-claude
Slash Commands
The subagent-commands.ts extension provides shortcuts:
/scout find all authentication code
/implement add caching to session store
/scout-and-plan refactor database layer
/review-code check security in API handlers
Example Agents
Scout (Fast, Cheap)
---
name: scout
description: Fast reconnaissance
tools: read, grep, find, ls, bash
model: claude-haiku-4-5
---
Quickly investigate and return compressed findings.
Planner (Detailed Analysis)
---
name: planner
description: Creates implementation plans
tools: read, grep, find, ls
model: claude-sonnet-4-5@20250929
---
Receive context and create detailed implementation plans.
Local Researcher
---
name: local-researcher
description: Research using local model
tools: web_search, github_search, stack_overflow_search
model: Qwen/Qwen3-8B-GGUF:Q4_K_M
---
Research using a local model to save API costs.
Cost Optimization
Configure provider preference to optimize costs:
{
"subagentProviderPreference": [
"llama-cpp", // Free (local)
"google-vertex-claude", // Discounted Claude via Vertex
"google", // Gemini
"anthropic" // Full-price Claude (fallback)
]
}
Now agents requesting claude-haiku-4-5 will:
- Try
llama-cppfirst (no claude there, skip) - Try
google-vertex-claude(found! use it) - Skip remaining providers
Troubleshooting
“No API key configured for provider”
Problem: Agent fails because the subagent process doesn’t have an API key.
Solution: Add provider preference to route to a configured provider:
{
"subagentProviderPreference": ["google-vertex-claude"]
}
Model not found
Problem: Agent specifies a model that doesn’t exist on any provider.
Solution: Check available models:
pi --list-models | grep claude-haiku
Update agent definition with correct model ID.
Wrong provider being used
Problem: Agent uses an unexpected provider.
Solution:
- Check current config:
/subagent-config - Add explicit preference in settings
- Or use flag:
pi --subagent-providers google-vertex-claude
API Reference
Tool Parameters
{
agent: "scout", // Single mode
task: "find auth code",
// OR parallel mode:
tasks: [
{ agent: "scout", task: "..." },
{ agent: "planner", task: "..." }
],
// OR chain mode:
chain: [
{ agent: "scout", task: "find auth" },
{ agent: "planner", task: "plan using {previous}" }
],
agentScope: "user" | "project" | "both", // Default: "user"
confirmProjectAgents: true, // Default: true
cwd: "/path/to/working/dir" // Optional
}
Settings Schema
{
"subagentProviderPreference": ["provider1", "provider2", "..."]
}
Command-line Flag
--subagent-providers <comma-separated-list>
Security
Project-local agents (.pi/agents/*.md) can execute arbitrary code. Only use agentScope: "both" or agentScope: "project" for repositories you trust.
By default, only user-level agents (~/.pi/agent/agents/) are loaded.