I built a local-first hybrid router for AI Agent Skills (sub-20ms, zero tokens, runs on CPU) [P]
If you use agentic workflows with custom skills or rules (Cursor rules, Claude Code slash commands, OpenCode, etc.), you have probably run into the routing trade-off: Stuff every skill definition into the system prompt (destroys your context window and degrades instruction-following). Use an LLM router turn to classify the user prompt (costs money, wastes 1,000+ tokens, and adds 2+ seconds of network latency). To solve this, I built Routed ; an open-source, local-first hybrid router for agent skills that runs 100% offline on your CPU. GitHub: https://github.com/bshea-1/Routed License: MIT https://i.redd.it/5ca68gffgxnh1.gif How it Works Under The Hood Routed indexes your installed skill directories and evaluates prompts through a 4-part hybrid scoring pipeline: * Dense Vector Embeddings (60%): Runs quantized ONNX models (Arctic Embed S / MiniLM) locally on CPU. * Lexical BM25 (25%): Okapi BM25 for strict keyword relevance. * Exact / Alias Match (10%): Direct command and alias matching. * Metadata (5%): Recency and usage heuristics. The entire lookup completes in under 20ms without sending a single byte of prompt data over the wire. Supported Environments Routed auto-detects and injects adapters into: Cursor, Claude Code, LM Studio, Ollama, Antigravity IDE, Windsurf, OpenCode, Continue, Codex, and I just dropped support for MCP Servers!! And although v1.0 dropped last night, I just shipped v1.1.0 with two major additions based on early feedback: Model Context Protocol (MCP) Server ( routed mcp ): Instead of loading 20+ tool schemas into your GPU's context window, your local model only sees a single route_skill tool. Routed executes on CPU, selects the exact skill needed, and injects only that schema on demand. Native Multilingual Understanding: The embedding pipeline now natively understands input across 100+ languages (German, Spanish, French, Japanese, etc.) and automatically decomposes compound nouns (like German Speicherleck ), mapping prompts directly to the cor