# WAVE Dispatch > Local-first AI dispatch — routes each LLM request to the cheapest capable model. Bring your own > infra and API keys (BYOK); the service only ever returns a routing decision, never your data. ## What it does Classifies a prompt at the edge and returns which model tier should handle it (local_code, local_search, local_summarize, direct, reason — or escalate to your frontier model on low confidence). Cuts your LLM bill by keeping work on the cheapest capable tier. Multimodal: image/audio turns are reduced to text (caption/transcript) and routed on that. Transparent offload: point Claude Code at the local proxy (ANTHROPIC_BASE_URL) and trivial turns are served locally while agentic turns escalate — no code change. ## API - POST / body {"prompt":"..."} header Authorization: Bearer -> {route, probability, margin, decided_at, forward} - Sovereign: add {"profile":"Fast|Expert|Heavy|Code"} to pick a named chain (local→heavy→frontier) that runs on YOUR infra; the response adds {profile, chain, params}. See GET /profiles + /sovereign. - POST / body {"prompts":[...]} batch classify (one embed for up to 32) · or {"vector":[768 floats]} matmul-only - GET /transparency data & privacy policy (append ?format=json for machine-readable) - GET /health -> ok - Pay-per-use agents: a request without payment returns HTTP 402 (x402) with payment requirements. ## Agent discovery (machine-readable, self-describing) - GET /openapi.json formal OpenAPI 3.1 contract (payment posture is live + honest) - GET /.well-known/x402 x402 payment-terms discovery (→ /payments capability doc) - GET /.well-known/ai-plugin.json ai-plugin-style manifest (→ /openapi.json) - GET /v1/mpp/discovery MPP machine-discovery — service info + surfaces + live paid endpoints (mppVersion 1.0-draft) - GET /skill.md agent skill with activation heuristics - GET /profiles Sovereign routing profiles (Fast|Expert|Heavy|Code) + the profile param contract - GET /payments accepted protocols + rails + x402 terms - GET /proofs public settlement-proof feed (verified-settled rows only, anonymised) - GET /showcase WAVE-on-WAVE first-party composability (dispatch × WSC × …) ## Stateful sidecar (https://dispatch-agents.wave.online/health; license bearer = own data only) - GET /ledger/summary?license=... your savings: decisions, local_handled, escalated, saved_usd, saved_pct - GET /subscription/status?license=... programmatic agent subscription (plan, quota, used, remaining, renews_at) - POST /subscription/create {license,plan} agent_starter | agent_pro | agent_scale (no human checkout) - POST /mcp remote MCP (Streamable-HTTP): tools wave_route, wave_savings, wave_subscription ## SDKs (5 languages, all stdlib-thin; savings()/subscription()/subscribe() on each) Python (pip wave-dispatch) · JS (npm @wave-av/dispatch) · Go · Rust (crates wave-dispatch) · Ruby (gem wave-dispatch) ## Pricing (card required, 7-day trial; no anonymous free tier) - Starter $9/mo (15k decisions/day) · Pro $29/mo (50k/day) · Scale $99/mo (200k/day) - Pay-per-use: $0.0001/decision (raw) or $0.0005 (Dispatch+) via x402 or card - WAVE customers: 30% off (code WAVE). Machine-readable: /pricing.json ## Data policy Private by default for everyone. Your API keys, data, and inference stay on YOUR infrastructure. We never log prompt content, your data, your keys, or model outputs. ## Links - Home: https://wave.online - GitHub (open-core edge worker): https://github.com/wave-av/dispatch-edge - npm SDK: https://www.npmjs.com/package/@wave-av/dispatch - Full agent context pack: /integrate - Transparency (JSON): /transparency?format=json