frugal

Frugal is the open routing layer for AI tools

Frugal started with one observation: the same web search costs $0 on Wikipedia or Marginalia, $0.001 on Serper, $0.005 on You.com โ€” and agents pick providers by what got wired in, not by price. So we built a router that walks every tool call down the price ladder and prints the cost on the result. That observation hasn't changed. It's still true, and cost is still the policy most Frugal calls run under.

But cost is a policy, not an identity. The moment routing exists, the questions stop being only about price: route by my observed latency, not yours. Never send this workload to a paid API. Always try our compliance-approved provider first. Use the premium provider for the requests that matter. Those are all the same mechanism โ€” an ordered provider chain with failover โ€” under a different rule.

So that's what Frugal is now: the open routing layer for AI tools. Describe the job; Frugal decides how to complete it, and shows its work.

What ships today

Routing policies. One optional YAML block, per capability:

routing:
  search:
    strategy: fast            # cheap (default) | fast | premium
    deny: [youcom]            # never called โ€” not even when pinned
  extract:
    order: [firecrawl, goreadability]

cheap is the default you already know โ€” effective cost ascending, quota-aware, automatic failover. fast orders by your machine's own observed latency, from the local usage ledger (successful calls only, cost order until enough history exists โ€” it's your data, not a live probe). premium prefers your premium-priced providers. order is an explicit preference prefix; unlisted providers still serve as fallback. deny means never โ€” it's enforced even on pinned calls, which makes it the honest privacy knob: deny every paid provider and nothing leaves your free and local rungs.

Intent routing. The new frugal__execute tool takes a job description instead of a capability choice. Classification is deterministic โ€” URL and keyword cues, no model call โ€” and the response says exactly what was decided. Captured from a live zero-key run:

frugal__execute {"intent": "search for MCP server security best practices"}

  stderr โ€บ search zero hits; falling back  provider=marginalia latency_ms=273
  result โ€บ {
    "capability": "search",
    "provider_used": "wikipedia",
    "cost_usd": 0,
    "latency_ms": 650,
    "reason": "routed to a web search; policy=cheap: effective cost
               ascending; provider=wikipedia won on attempt 2"
  }

The reason field is the point. A router you can't audit is a black box with a bill; every Frugal response carries the provider, the cost, and โ€” through execute โ€” the why.

A priority argument (cheap | balanced | premium) maps onto the policies above per call, and a URL intent runs an extract that falls forward to a headless render when the page turns out to need JS, costs summed. The direct tools โ€” frugal__search, frugal__extract, frugal__browse โ€” are still there for agents that already know the capability.

What didn't change

Everything that made Frugal trustable is intact. One Go binary. Your keys, your machine, no account, no data retention by architecture. The local ledger and the frugal stats receipt โ€” cost is the flagship policy, and the receipt is its proof. And the license: source-available under BUSL 1.1, converting to Apache 2.0 four years after each release. We're deliberately not calling that "open source" โ€” it isn't, by the OSI definition โ€” but you can read every line, self-host everything, and never be locked in.

What's next: Frugal Cloud

The routing layer runs on your machine and always will. What teams have asked for is the layer above it: edit policies in a dashboard and deploy them to every app, share templates across a workspace, see usage and spend org-wide, watch provider health, search routing traces.

That's Frugal Cloud, and it is roadmap, not product โ€” nothing there ships today. If you want it when it exists: join the waitlist.

Five minutes

curl -fsSL https://frugal.sh/install | bash
frugal mcp install

Restart your agent, and the next tool call it makes is an intelligently routed one โ€” with the decision printed on the result.

The open routing layer for AI tools.

Frugal is one Go binary: every tool call routed per policy โ€” cheapest by default โ€” with the decision and cost_usd on every result. BYOK, no account.