avatar vian's notes

Learning in public, one post at a time

  • HOME
  • CATEGORIES
  • TAGS
  • ARCHIVES
  • ABOUT
Home
vian's notes

PM2Bar: Get `pm2 list` Visibility Without the Terminal

You switched to pm2. Your processes crash less. But now you have a new problem. In my last post, I traced a Bad Gateway to a PID file that had been lying to me for days. The fix was pm2 — it would...

Sep 5, 2026

CC BY-NC 4.0: The License I Chose for This Blog

You know that little badge at the bottom of every post? The one that says a Creative Commons license and links somewhere? I didn’t put it there. It came with the theme. I’m using Chirpy, a Jekyll...

Aug 30, 2026

Stop Watching Five Tabs: A Terminal-First Approach to K8s Logs

The Five-Tab Problem You know the drill. A request hits five microservices. Something breaks. You open five terminal tabs — kubectl logs -f pod/foo-abc123, kubectl logs -f pod/foo-xyz789 — and sc...

Aug 25, 2026

The Server Split That Almost Didn't Happen

The first import was the first failure: ‘ERR_MODULE_NOT_FOUND’. The code wouldn’t even boot. But back up. Three months ago I wrote about the monorepo split. API server, dashboard, CLI — three work...

Aug 20, 2026

Your PID File Is a Lie: What Cloudflare Tunnel Taught Me About Process Supervision

Two ways to start the same server. One worked. The other gave me Bad Gateway. They ran the same code, listened on the same port, used the same config. The difference was invisible. Context I am ...

Aug 15, 2026

I Opened My First Open Source PRs. None of Them Are Merged Yet.

I’ve been writing software professionally for years, but somehow I had never really contributed to an open-source project. I’ve used plenty of them. Forked them. Patched them. Built things on top ...

Aug 13, 2026

Headroom, Round Two: Four Walls Between Me and a Working Token Saver

Three days ago I wrote an autopsy about ripping a dead Headroom integration out of my 9router fork. The endpoint I was calling didn’t exist in the version I was running, the failure was swallowed s...

Aug 10, 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 9, 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....

Aug 7, 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...

Jul 31, 2026
  • 1
  • 2
  • 1 / 2

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 personal tooling ade ai postmortem warp agents analytics

© 2026 Alvian. Some rights reserved.

This blog is open source — view on GitHub

Using the Chirpy theme for Jekyll.

Trending Tags

9router technical personal tooling ade ai postmortem warp agents analytics