avatar vian's notes

Learning in public, one post at a time

  • HOME
  • CATEGORIES
  • TAGS
  • ARCHIVES
  • ABOUT
Home The Router My Colleague Showed Me
Post

The Router My Colleague Showed Me

Posted Jun 10, 2026 Updated Jul 9, 2026
By Alvian
2 min read

I first noticed it in passing. Colleagues had it open during work — a dashboard I didn’t recognize, a dropdown with more providers than I’d ever seen. I didn’t ask right away. Just filed it away as something to look into.

It was 9router.

I clicked through the GitHub repo. Readme. Screenshots. A dashboard with 40+ providers in a dropdown. Fallback chains. Format translation. Token compression.

My first thought: this is too much.

I already had OpenCode. It worked. Sure, I’d been hitting the subscription cap three weeks into every billing cycle, watching the spinner hang while the rate-limit error loaded. But that was a subscription problem, not a tooling problem. I could live with it.

I closed the tab. Went back to the auth bug.


A week later, it happened again. 1am. Deploy waiting. OpenCode Go had hit its $60 monthly cap. I was staring at a rate-limit error, thinking about how much work I still had left.

The fallback providers existed. They were right there in the account settings — a list of free tier options I’d never configured. I’d been treating them like a joke. A backup for emergencies. Something I’d get around to someday.

When you hit your paid subscription limit three weeks in, having fallback providers isn’t optional — it’s the difference between shipping a feature and waiting for the reset date.

That night I went back to the 9router repo. Read it again, slower. The 40+ providers stopped looking like noise. They started looking like redundancy. The format translation — converting between OpenAI, Anthropic, and whatever new provider dropped that week — started looking like the thing I’d been manually copy-pasting prompts to work around.

The overload I’d felt before wasn’t complexity for its own sake. It was the thing I didn’t know I needed until I needed it.


I forked it that weekend.

And then I couldn’t stop.

The monorepo was the first thing I tackled. Next.js monolith, routing engine and dashboard tangled together. I wanted to understand what I was actually running.

So the monorepo split became the first change after forking: the API server (Hono) got its own workspace, the dashboard (Next.js) another, the CLI got esbuild bundling. The best way to understand something is to take it apart.

See The Tools I Built Around OpenCode for what led here. See What I Changed in 9router for what happened next.


Sources: OpenCode Go documentation ($10/month, $60/month usage budget across three rolling windows: $12/5h, $30/week, $60/month)

Thanks to Mahardicka Nurachman and Valerian Dwi Purnomo for showing me 9router.

9router router ai provider
This post is licensed under CC BY-NC 4.0 by the author.
Share

Recently Updated

  • Headroom, Round Two: Four Walls Between Me and a Working Token Saver
  • The Server Split That Almost Didn't Happen
  • I Opened My First Open Source PRs. None of Them Are Merged Yet.
  • Checking Upstream: What v0.5.50 Gained for 9router
  • The 403 That Wasn't: How Warp, 9router, and Cloudflare Masked Two Separate Failures

Trending Tags

9router technical tooling ade ai personal postmortem warp agents orchestration

Further Reading

Aug 9, 2026

Checking Upstream: What v0.5.50 Gained for 9router

I hadn’t checked upstream in a while. My fork had accumulated enough custom code — combos, middleware, the memory layer — that pulling updates felt like asking for trouble. Easier to stay isolated....

Aug 7, 2026

Debugging 9router Headroom: The Silent 404 That Masked a Version Mismatch

I found Headroom in a random LinkedIn post. It looked great — a compression proxy that sits between your app and the LLM providers, strips redundant context, saves tokens. The pitch was compelling....

Jul 31, 2026

The 403 That Wasn't: How Warp, 9router, and Cloudflare Masked Two Separate Failures

My Warp agent stopped talking to 9router. Quick background: 9router is my AI routing layer — a Hono server that proxies LLM requests through fallback providers. It runs locally via a Cloudflare tu...

Older
The Tools I Built Around OpenCode
Newer
What I Changed in 9router

© 2026 Alvian. Some rights reserved.

This blog is open source — view on GitHub

Using the Chirpy theme for Jekyll.

Trending Tags

9router technical tooling ade ai personal postmortem warp agents orchestration