yash@jain:~$

../ yash@jain:~$ cat /archive/the-graveyard.md

buildThe plumbing

The list of tools I run is short. The list of tools I killed is the honest one.

Twenty-one open-source tools went through my servers in four months. What survived is a short list. This is the whole graveyard, with a one-line verdict on each — including the ones I killed twice.

Everybody posts the stack. The tidy diagram with arrows pointing at the happy path. Nobody posts the graveyard — the tools that got installed, fought back, and got taken out.

I’ve been running my own AI infrastructure for four months now. Two rented servers, a laptop, and a browser full of tabs. In that time I’ve put more than twenty open-source tools through it. The ones still running fit in one small table. The ones that didn’t would fill a page.

So here’s the page. One honest line each — still running at the top, never-installed at the bottom.

Tool What it was for Verdict
Bifrost The one door every AI request goes through Running — replaced three gateways
Open WebUI The chat window I actually open Running — my front door, and a client’s
SearXNG Free search for my agents Running — ended per-query search bills
Glance One screen of everything at a glance Running — rebuilt twice, still on
Tuxedo My task list, as plain text Running — boring, and it reports the truth
Agent Zero Always-on research agents in Docker Running — one profile live
Qdrant Vector database for search Retired — a question I’d stopped asking
Syncthing File sync between machines Retired — then killed again by my own cleanup script
LibreChat A second chat console Retired — five containers to say hello
AnythingLLM Document question-and-answer Retired — never missed it
SilverBullet Notes vault for job output Retired — output moved to Notion
Nexterm Server management in a browser Deployed, audited, torn down — the file manager never appeared
CLIProxyAPI A thin proxy in front of providers Shut down June 18 — one gateway was enough
OmniRoute Gateway plus a metrics dashboard Shut down June 18 — 483MB for a 107MB job
Pipecat Voice agent, built from scratch Paused — browser and server never agreed on audio
browser-use An AI that clicks around a browser Killed — hung on my server’s chip
LiteLLM The gateway everyone recommends Rejected — a poisoned update shipped in March
OpenHands Autonomous coding agent Rejected — 2GB of Docker per task, for cheap jobs at least
AppFlowy An open Notion-style workspace Never installed — one workspace is enough
Incognide Desktop AI workspace Never installed — single-user only
9Router An earlier multi-provider router Never installed — its own fork beat it

Twenty-one tools went in. Six are still running.

The deployed list is the small one, and it got smaller by subtraction, not by shopping. Three gateways became one. Two chat consoles became one. A vector database turned out to be answering a question I’d stopped asking — I search my notes with plain keyword matching, which is boring, works offline, and can’t invent a match that isn’t in the file.

Some of these are genuinely good software. Nexterm passed a full security audit — no telemetry, clean licence, proper two-factor support. Then I spent an evening looking for a file manager that the documentation promised and the interface didn’t have. Deployed, audited, removed, all in one sitting. Good tool, wrong evening.

Some of them I killed twice. Syncthing got retired when I moved servers. Weeks later I wrote a cleanup script that identified it as junk and removed it again — right before a later plan called for exactly that tool. The lesson wasn’t about Syncthing. It was that I was deleting things before asking what owned them.

The most important group is the last one: the tools that never got installed at all. The gateway everyone recommends lost that race in March, when attackers slipped poisoned versions onto the public package registry and harvested environment variables, SSH keys, and cloud credentials from anyone who installed during the window. I wasn’t in that window. That decision took ten minutes and cost me nothing. The coding agent that wanted two gigabytes of Docker per small task didn’t get that job either — I read how it worked before I read its feature list, which is a habit I’d recommend to anyone who owns a server.

Every tool I rejected saved me a weekend. Every tool I removed handed back memory on a server I pay for by the month. A graveyard isn’t a list of failures — it’s what judgement looks like after the fact. And the reason the running list stays short is that the graveyard keeps getting longer.

The stack is the highlight reel. The graveyard is the résumé.

Related reading

← cd /archive