sunny-dispatch
Routes tasks to local Ollama models as a free tier, enabling mechanical work like summarizing, translating, formatting, and extracting text without cloud token costs.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@sunny-dispatchSummarize this build log using the cheapest suitable model."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
sunny-dispatch
Zero-dependency semantic task router. Send grunt work to free/local models, keep premium tokens for judgement.
Most LLM routers (LiteLLM, OpenRouter's own routing, gateway proxies) pick a model by name, price, or latency. None of them look at what the task is. sunny-dispatch classifies the task itself with deterministic, user-editable rules (zero tokens spent deciding) and routes it to the cheapest tier that can do it: summarizing a log goes to your local Ollama model for free; a security review goes to a strong model; everything routes BYO-key, so this project never touches your spend.
sunny "summarize this build log: <paste>"
[routed: local | qwen2.5-coder:7b | FREE/local | 2841ms]Install
npm i -g sunny-dispatch # or: npx sunny-dispatch --helpRequirements: Node 18+. For the free tier: Ollama with a
model pulled (default qwen2.5-coder:7b). For cloud tiers: OPENROUTER_API_KEY
(or point any tier at any OpenAI-compatible endpoint).
Related MCP server: ai-workers-mcp
Use as a CLI
sunny "<task>" # dispatch, auto-routed
sunny --tier strong "<task>" # force a tier
sunny route "<task>" # preview where it would go, spend nothing
sunny doctor # check ollama, keys, configResult goes to stdout, routing info to stderr, so it pipes cleanly.
Use from Claude Code (MCP)
claude mcp add sunny -- npx -y sunny-dispatch mcpClaude gets two tools: dispatch (offload a self-contained sub-task, get the
result back as text) and route_preview (see the routing decision for free).
Tiers and cost
tier | default model | $/1M in | $/1M out |
local | qwen2.5-coder:7b (Ollama) | 0 | 0 |
cheap | deepseek/deepseek-v4-flash | 0.14 | 0.28 |
strong | deepseek/deepseek-v4-pro | 0.435 | 0.87 |
quality | anthropic/claude-haiku-4.5 | 1.00 | 5.00 |
Every model, endpoint, and price is a default, not a decision: override any of it in config. Prices drift; edit yours to match reality.
Configure
sunny.config.json in the working directory (or point SUNNY_CONFIG at a
path). Everything is optional; user rules replace the default rules.
{
"rules": [
{ "tier": "quality", "pattern": "\\b(flashcard|anki)", "reason": "study content, never downgrade" },
{ "tier": "strong", "pattern": "\\b(architect|security|debug)", "reason": "needs reasoning" },
{ "tier": "local", "pattern": "\\b(summar|translat|format|extract)", "reason": "mechanical" }
],
"routes": {
"local": { "model": "llama3.2:3b" },
"strong": { "provider": "openai", "baseUrl": "https://api.deepseek.com/chat/completions", "keyEnv": "DEEPSEEK_API_KEY", "model": "deepseek-chat", "inUsd": 0.27, "outUsd": 1.1 }
},
"shortTaskChars": 240,
"shortTaskTier": "local",
"defaultTier": "cheap"
}Rules run in order, first match wins; unmatched short tasks go local,
everything else to defaultTier. sunny route "<task>" is the fast way to
check what your rules do.
Why zero dependencies
The whole thing is three small files on Node builtins: the router core, a CLI,
and a hand-rolled MCP stdio server. Nothing phones home, nothing to audit
beyond what fits in one sitting, npm i installs nothing else.
License
MIT © Wukoric LLC
This server cannot be deployed
Maintenance
Related MCP Connectors
AI routing, memory, guardrails, and governance. Routes across Claude, GPT, Gemini.
AI model routing on your own vendor keys: pick the best model per prompt, or route and run it.
Cost-optimized LLM model routing recommendations for autonomous AI agents
Enterprise AI Control Plane: governance, guardrails, spend tracking, compliance & smart routing.
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceEnables intelligent LLM optimization and routing for Claude Desktop and HTTP clients, reducing token usage and automatically selecting the best model for each query.4MIT- FlicenseAqualityDmaintenanceRoutes commodity NLP tasks like summarization and translation to free-tier LLMs, saving Claude tokens for complex work.12-
- FlicenseAqualityDmaintenanceRoutes narrow text-processing tools (classification, extraction, summarization, etc.) to budget models to reduce token consumption on the main model.7-
- AlicenseBqualityDmaintenanceRoute prompts intelligently across Claude, Gemini, and GPT-4o, automatically picking the best model for every task while minimizing token cost.59 npmMIT