PVYai Agent supports 28+ model providers and a curated model registry. This chapter explains how to choose, switch, and manage models — and why some models don’t appear in the picker.
PVYai ships with 28+ built-in providers. Each has a descriptor defining its transport, default model, auth method, and whether it’s local or cloud.
| Provider | ID | Default Model | Auth | Notes |
|---|---|---|---|---|
| ★ PVY.ai Platform | pvyai |
PVY Coder:35b | API key | PVY Swiss sovereign AI, has Full Catalog |
| OpenAI | openai |
gpt-4.1 | API key | Full model catalog |
| Anthropic | anthropic |
claude-sonnet-4.5 | API key | Reasoning, vision, prompt cache |
google |
gemini-2.5-pro | API key | 1M context, vision | |
| OpenRouter | openrouter |
openai/gpt-4.1 | API key or OAuth | Multi-provider gateway |
| Ollama Local | ollama |
llama3.1 | None | Local models (requires Ollama running) |
| Provider | ID | Transport | Default Model | Auth |
|---|---|---|---|---|
| PVY.ai Platform ★ | pvyai |
openai-compatible | PVY Coder:35b | PVYAI_API_KEY |
| OpenAI | openai |
openai | gpt-4.1 | OPENAI_API_KEY |
| Anthropic | anthropic |
anthropic | claude-sonnet-4.5 | ANTHROPIC_API_KEY |
google |
gemini-2.5-pro | GEMINI_API_KEY |
||
| Ollama Cloud | ollama-cloud |
openai-compatible | qwen3-coder:480b | OLLAMA_API_KEY |
| Ollama Local | ollama |
openai-compatible | llama3.1 | None (local) |
| LM Studio | lmstudio |
openai-compatible | local-model | None (local) |
| OpenRouter | openrouter |
openai-compatible | openai/gpt-4.1 | OPENROUTER_API_KEY / OAuth |
| Hugging Face | huggingface |
openai-compatible | meta-llama/Llama-3.3-70B | HUGGINGFACE_API_KEY / OAuth |
| ChatGPT | chatgpt |
openai-compatible | gpt-5.5 | OAuth (Codex) |
| Groq | groq |
openai-compatible | llama-3.3-70b-versatile | GROQ_API_KEY |
| DeepSeek | deepseek |
openai-compatible | deepseek-chat | DEEPSEEK_API_KEY |
| Together AI | together |
openai-compatible | meta-llama/Llama-3.3-70B-Instruct-Turbo | TOGETHER_API_KEY |
| DashScope | dashscope |
openai-compatible | qwen-plus | DASHSCOPE_API_KEY |
| Moonshot AI | moonshot |
openai-compatible | kimi-k2-0905-preview | MOONSHOT_API_KEY |
| LongCat | longcat |
openai-compatible | LongCat-2.0 | LONGCAT_API_KEY |
| NVIDIA NIM | nvidia-nim |
openai-compatible | nvidia/llama-3.1-nemotron-70b-instruct | NVIDIA_API_KEY |
| MiniMax | minimax |
anthropic-compatible | MiniMax-M3 | MINIMAX_API_KEY |
| MiniMax CN | minimaxi-cn |
anthropic-compatible | MiniMax-M3 | MINIMAXI_API_KEY |
| Mistral | mistral |
openai-compatible | mistral-large-latest | MISTRAL_API_KEY |
| GitHub Models | github |
openai-compatible | openai/gpt-4.1 | GITHUB_TOKEN |
| Amazon Bedrock | bedrock |
bedrock | anthropic.claude-3-5-sonnet | AWS credentials |
| Vertex AI | vertex |
vertex | gemini-2.5-pro | Google credentials |
| xAI | xai |
openai-compatible | grok-4 | XAI_API_KEY / OAuth |
| Venice AI | venice |
openai-compatible | qwen-2.5-qwq-32b | VENICE_API_KEY |
| Xiaomi MiMo | xiaomi-mimo |
openai-compatible | mimo-vl | MIMO_API_KEY |
| Bankr | bankr |
openai-compatible | bankr-large | BANKR_API_KEY |
| Z.ai | zai |
openai-compatible | glm-4.5 | ZAI_API_KEY |
| Z.ai CN | zai-cn |
openai-compatible | glm-4.5 | ZHIPU_API_KEY |
| Atomic Chat | atomic-chat |
openai-compatible | gpt-4.1 | ATOMIC_CHAT_API_KEY |
| Custom (OpenAI-compatible) | custom-openai-compatible |
openai-compatible | custom-model | OPENAI_API_KEY |
| Custom (Anthropic-compatible) | custom-anthropic-compatible |
anthropic-compatible | custom-model | ANTHROPIC_API_KEY |
PVYai maintains a curated model registry with 13+ entries:
| Model ID | Provider | Context Window | Max Output | Capabilities |
|---|---|---|---|---|
| gpt-4.1 | OpenAI | 1,047,576 | 32,768 | vision, json, long-context |
| gpt-4.1-mini | OpenAI | 1,047,576 | 32,768 | vision, json, long-context |
| gpt-4.1-nano | OpenAI | 1,047,576 | 32,768 | vision, json, long-context |
| gpt-4o | OpenAI | 128,000 | 16,384 | vision, json |
| gpt-4o-mini | OpenAI | 128,000 | 16,384 | vision, json |
| gpt-4-turbo | OpenAI (deprecated) | 128,000 | 4,096 | vision, json |
| claude-opus-4.1 | Anthropic | 200,000 | 32,000 | vision, reasoning, prompt-cache |
| claude-sonnet-4.5 | Anthropic | 200,000 | 64,000 | vision, reasoning, prompt-cache |
| claude-haiku-4.5 | Anthropic | 200,000 | 64,000 | vision, reasoning, prompt-cache |
| claude-haiku-3.5 | Anthropic (deprecated) | 200,000 | 8,192 | prompt-cache |
| gemini-2.5-pro | 1,048,576 | 65,536 | vision, json, reasoning, long-context | |
| gemini-2.5-flash | 1,048,576 | 65,536 | vision, json, reasoning, long-context | |
| gemini-2.5-flash-lite | 1,048,576 | 65,536 | vision, json, reasoning, long-context |
Deprecated models redirect to a fallback:
gpt-4-turbo → gpt-4.1claude-haiku-3.5 → claude-haiku-4.5Each model has an UpgradeTargetID for mid-run escalation:
claude-haiku-4.5 → claude-sonnet-4.5 → claude-opus-4.1gpt-4.1-nano → gpt-4.1-mini → gpt-4.1gemini-2.5-flash-lite → gemini-2.5-flash → gemini-2.5-proType /model in the TUI to open the model picker:
┌────────────────────────────────────────────────────┐
│ Model │
├────────────────────────────────────────────────────┤
│ ★ Favorites │
│ claude-sonnet-4.5 Anthropic · 200k ctx │
│ gemini-2.5-pro Google · 1M ctx │
│ │
│ Recent │
│ PVY Coder:35b PVY.ai Platform │
│ │
│ PVY.ai Platform │
│ PVY Coder:35b 110 tok/s · 128k ctx │
│ │
│ Anthropic │
│ claude-opus-4.1 Anthropic · 200k ctx │
│ claude-sonnet-4.5 Anthropic · 200k ctx │
│ claude-haiku-4.5 Anthropic · 200k ctx │
│ │
│ OpenAI │
│ gpt-4.1 OpenAI · 1M ctx │
│ gpt-4.1-mini OpenAI · 1M ctx │
│ gpt-4.1-nano OpenAI · 1M ctx │
│ gpt-4o OpenAI · 128k ctx │
│ gpt-4o-mini OpenAI · 128k ctx │
└────────────────────────────────────────────────────┘
Please note - All PVY Coders, Code Reviewer, Reasoning including PVY Architects and PVY Lead Developer are in the Model-Picker
When the picker opens, PVYai dispatches live discovery requests to each configured provider:
<baseURL>/models (or <baseURL>/v1/models for Anthropic)Live-discovered models are merged with the static catalog, deduplicated, and filtered.
For Ollama models, the /v1/models endpoint doesn’t return context length. PVYai makes an additional POST to /api/show to discover the model’s context window — this is used for context budget calculation and compaction thresholds.
Not all models from a provider are shown in the picker. PVYai applies a coding-model filter to ensure only relevant models appear:
IsKnownNonCodingModelIDModels with these substrings in their ID are always filtered out:
audio, dall-e, deep-research, embedding, image, moderation, realtime, rerank, sora, speech, transcribe, translate, tts, whisper
LooksLikeCodingModelIDA model is considered a coding model if its ID contains any of these terms:
gpt, claude, sonnet, opus, haiku, gemini, gemma, llama, qwen, deepseek, kimi, moonshot, minimax, mistral, codestral, devstral, magistral, ministral, grok, glm, command, nemotron, mixtral, coder, code, chat, instruct, reasoner, reasoning, mimo, maverick, scout, bankr
Or if it starts with o1-, o3-, o4-, o5- (OpenAI o-series).
IsCodingModel (the full gate)A model passes the filter if ALL of these are true:
IsKnownNonCodingModelIDtext (or are empty)LooksLikeCodingModelID matches its ID or descriptionIf you’re using the PVY.ai Platform provider and notice that some Open WebUI model presets (like pvy-architect-3, pvy-researcher, pvy-devops, pvy-translate-*) don’t appear in the picker:
| Preset | Appears? | Why |
|---|---|---|
pvy-coder-qw36 |
✓ | Contains “coder” |
pvy-coder-qw3-30b |
✓ | Contains “coder” |
pvy-coder-ds2-16b |
✓ | Contains “coder” |
pvy-architect-3 |
✗ | No recognized coding term in ID |
pvy-researcher |
✗ | No recognized coding term |
pvy-devops |
✗ | No recognized coding term |
pvy-translate-chat |
✗ | Contains “translate” (explicitly filtered) |
pvy-translate-docs |
✗ | Contains “translate” |
pvy-visual |
✗ | No recognized coding term |
pvy-art-director |
✗ | No recognized coding term |
pvy-office-text |
✗ | No recognized coding term |
Solution: To see all presets, use the /model <id> command directly instead of the picker. The filter only applies to live discovery, not to direct model ID entry.
If you’re running the agent on your Mac but Ollama is on a remote server:
http://localhost:11434/v1Solution: Configure the Ollama provider with the correct remote URL:
{
"name": "ollama-remote",
"provider": "ollama",
"catalogID": "ollama",
"baseURL": "http://192.168.188.30:11434/v1",
"model": "qwen2.5-coder:32b"
}
Or set the env var:
export OPENAI_BASE_URL="http://192.168.188.30:11434/v1"
Modes bundle model + reasoning effort + turn limits:
| Mode | Model | Effort | Max Turns | Use case |
|---|---|---|---|---|
smart |
claude-sonnet-4.5 | medium | 50 | General-purpose coding |
deep |
claude-opus-4.1 | high | 50 | Complex reasoning, architecture |
fast |
claude-haiku-4.5 | low | 15 | Quick edits, autocomplete |
large |
gemini-2.5-pro | medium | 50 | Long-context tasks (1M ctx) |
precise |
claude-sonnet-4.5 | high | 50 | Careful, thorough work |
# Use a mode
pvyai --mode deep "Design the authentication system"
# Switch at runtime
/model deep
Some models support reasoning effort levels that control how much the model “thinks” before responding:
| Level | Description |
|---|---|
none |
No reasoning (fastest) |
minimal |
Minimal reasoning |
low |
Low reasoning effort |
medium |
Balanced |
high |
Thorough reasoning |
xhigh |
Extra-thorough |
max |
Maximum reasoning (slowest) |
# In the TUI
/effort # Open the effort picker
/effort high # Set directly
# Keyboard shortcut
Ctrl+T # Cycle: auto → low → medium → high → auto
# CLI
pvyai exec --effort high "Design the API"
If a model has an UpgradeTargetID, the agent can escalate mid-run when the task is harder than expected:
{
"name": "escalate_model",
"arguments": {}
}
This switches the model to its upgrade target for the rest of the run. The escalation chain:
claude-haiku-4.5 → claude-sonnet-4.5 → claude-opus-4.1
gpt-4.1-nano → gpt-4.1-mini → gpt-4.1
gemini-2.5-flash-lite → gemini-2.5-flash → gemini-2.5-pro
The escalate_model tool is only available when the --allow-escalation flag is set (it’s not registered by default).
# Open the model picker (shows models from all providers)
/model
# Switch to a specific model (auto-resolves the provider)
/model claude-sonnet-4.5
# Open the provider wizard
/provider
# Set the active provider
export PVYAI_PROVIDER=anthropic
# Or specify the model directly
pvyai exec --model claude-sonnet-4.5 "fix the bug"
# Use a mode
pvyai exec --mode deep "design the system"
When you select a model from a different provider in the picker, PVYai:
{
"activeProvider": "pvyai",
"providers": [
{
"name": "pvyai",
"provider": "pvyai",
"catalogID": "pvyai",
"baseURL": "https://ai-api.pvy.swiss/api",
"model": "qwen3.6:35b"
},
{
"name": "anthropic-cloud",
"provider": "anthropic",
"catalogID": "anthropic",
"model": "claude-sonnet-4.5"
},
{
"name": "ollama-h200",
"provider": "ollama",
"catalogID": "ollama",
"baseURL": "http://31.22.104.180:11434/v1",
"model": "qwen2.5-coder:32b"
}
]
}
Star models in the picker to add them to Favorites. Favorites appear at the top of the picker regardless of provider.
{
"preferences": {
"favoriteModels": ["claude-sonnet-4.5", "gemini-2.5-pro"]
}
}
PVYai tracks token usage per run and shows it in the sidebar and status bar:
9.4k/200k (4.7%) · $0.03
Some models have tiered pricing (e.g. Gemini 2.5 Pro has different rates above 200K tokens). The model registry stores per-model cost data with tiers:
type Cost struct {
Tiers []CostTier
CacheWritePerMillion float64
Source string
SourceLastVerified time.Time
}
/context command/context
Shows a detailed context budget breakdown:
PVYai context report
root: /path/to/project
provider: anthropic
model: claude-sonnet-4.5
api_model: claude-sonnet-4.5
usage: 9.4k/200k tokens (4.7%)
tools: 28
Categories:
System prompt: 3.4k tokens (1.7%)
Workspace map: 20 tokens (0.0%)
Tools: 6k tokens (3.0%)
Free: 190k tokens (95.3%)
| Practice | Why |
|---|---|
| Use PVY.ai Platform as default | Sovereign, fast, no external dependency |
| Configure Ollama with the correct remote URL | Otherwise no models appear in the picker |
Use smart mode for general work |
Balanced model + effort + turns |
Use deep for architecture |
Opus 4.1 with high reasoning |
Use fast for quick edits |
Haiku 4.5 with low effort, 15 turn cap |
| Star your favorites | Quick access at the top of the picker |
Monitor /context |
Don’t waste context on unnecessary tools |
Use --mode in CLI one-shots |
Reproducible model+effort combos |
Set PVYAI_MAX_TURNS for long tasks |
Prevents runaway costs |
Please note, this is an example only, and not an internal refernce card from pvy.swiss, since when we allow other Providers and Models being used locally, the responsibility and knowledge from the executing developer counts.