Which AI models work with shadow-planner
Which language models work well with shadow-planner's tool-calling agents — recommended models for Ollama, Anthropic, OpenAI and OpenRouter, and why a model must support tool calling.
shadow-planner does not talk to your plan by generating text about it. Both the chat assistant and the planning agent work through a compact set of tools — about 27 functions such as list tasks, shift dates or assign a resource — that the model calls and the app executes. That design is what keeps the AI on-task and lets every change flow through the approval gate and the audit log. It also sets one hard requirement for the model you pick.
Tool calling is required. Only language models that support tool calling (also called function calling) can be used with shadow-planner. A model without tool support can still produce plain-text answers, but it cannot read or change your plan, and the planning agent cannot materialise a draft. Small local models that do support tools but sometimes format the calls badly are covered by the built-in rescue parser — a model with no tool support at all is not.
Any current model from the four supported providers qualifies. The table below lists what we test against and what works best.
Recommended models
| Provider | Works best | Also fine | Notes |
|---|---|---|---|
| Ollama (local, free) | qwen3:8b, qwen2.5:7b (the default) |
qwen2.5:14b, llama3.1:8b, mistral-nemo, gpt-oss:20b |
Pull tool-capable tags only — ollama pull qwen2.5:7b. Larger variants draft noticeably better plans if your machine has the memory. |
| Anthropic | Claude Sonnet 5, Claude Opus 5 | Claude Haiku 4.5 (the default), Claude Sonnet 4.6, Claude Opus 4.7 | Strongest tool use in our testing. Prompt caching and strict tool schemas are switched on automatically. |
| OpenAI | GPT-5.5 (the default) | GPT-5.5 Pro, GPT-4o, GPT-4o mini | Reasoning models (GPT-5.x, o-series) run on the Responses API so their reasoning survives between tool calls. |
| OpenRouter | openai/gpt-4o (the default), anthropic/claude-sonnet-* |
meta-llama/llama-3.1-70b-instruct, google/gemini-*, mistralai/mixtral-8x7b-instruct, deepseek/* |
Filter the OpenRouter catalogue by tools support. shadow-planner asks OpenRouter to route only to hosts that honour the tool parameters. |
Rule of thumb: for everyday chat — rescheduling, questions about capacity, small edits — a 7–8B local model is enough. For drafting a whole project from a long brief, a mid-size cloud model (Claude Sonnet, GPT-5.5) is markedly better at producing consistent epics, estimates and dependencies in one pass.
How to tell if a model supports tools
- Ollama: the model library has a Tools filter, and
ollama show <model>liststoolsunder Capabilities. shadow-planner reads the same capability list the first time it talks to a model. - Anthropic and OpenAI: every current chat model supports tool calling. Legacy completion-only models do not.
- OpenRouter: the model page shows Supported parameters; look for
tools. The catalogue can also be filtered by that capability.
If a model turns out not to support tools, requests that need the plan fail or come back as plain text with nothing applied. Switch to a tool-capable model in Settings → Chat or run the LLM Setup Wizard again.
What shadow-planner adapts per model
You choose the model; the app takes care of speaking its dialect:
- Claude — thinking blocks are preserved between tool calls, tool schemas are sent in strict mode, and three prompt-cache breakpoints keep multi-step turns cheap.
- OpenAI — reasoning models use the Responses API with encrypted reasoning carried across calls; other models use Chat Completions. Automatic prompt caching applies to both.
- Ollama — the model's capabilities are probed once and cached. Qwen models get a low temperature floor for reliable tool output, and the rescue parser recovers tool calls that a small model wrote as Markdown or XML instead of a proper call.
- OpenRouter — routing is restricted to hosts that support the requested parameters, the history budget follows the model's real context length, and Claude models via OpenRouter still get prompt caching.
Tuning for your model
- Reasoning effort — available per provider in the chat settings, from off to max. Models that don't support it simply ignore the setting.
- Critique pass — a second AI pass checks each reply. Worth keeping on for small local models; turn it off for lower latency on strong cloud models.
- Token budget — if a large AI-drafted plan hits the output limit, raise the budget in Settings or shorten the brief.
See Connect an AI provider for the setup steps, and Planning a project with a local LLM for a full walkthrough on Ollama.