Skip to main content

The prototype graveyard: 24 repos I started between 2025 and 2026

Share:XLinkedInHN
Cover for The prototype graveyard: 24 repos I started between 2025 and 2026

The count

I opened twenty four private repos on my GitHub between January 2025 and June 2026 that never became anything I would show a stranger. Some are one commit. Some have a README that promises more than the code delivers. A few have a working demo that I never deployed. Three are genuinely empty (obs, helix, dlm-dash, all repos I created and never pushed a file to).

The point of this post is not to defend the graveyard. It is to look at the shape of it. Most of my public writing on this site is about things that shipped. That gives a false picture. The real ratio, at least for the last eighteen months, is roughly one shipped project to five or six that died in the crib.

I went and read four or five of them properly, and glanced at the rest. Here is what was there.

koste, March 2025

The repo I spent the most abandoned effort on. The README calls it a "Media Processing Project" and lists about thirty Python scripts organised into core/anime, core/video, core/audio, core/text. The idea, I think, was a general purpose kitchen for making anime lyric videos. Extract subtitles, apply text effects, cut scenes, dub with ElevenLabs, generate replacement lines with Gemini. There was also an analyze_and_rename_mood.py that would rename music files by mood, and a heart_rate_overlay.py for putting Fitbit style overlays on top of workout footage.

The file listing is the tell. anime_subtitle_studio_fixed.py and anime_subtitle_studio_fixed (1).py sitting side by side. Two requirements.txt files, one spelled requiremnets.txt. A bruh directory next to a fonts directory. Three commit messages in a row that just say ccleanup. This is what a project looks like when I keep coming back to it, half remember where I left off, and paper over the confusion by making another copy of the file.

The real problem was that koste tried to be five different tools at once. Every time I opened it I would fix one bug in one subsystem, forget the other four exist, and close the laptop. I never actually finished a single anime lyric video with it. The good ideas leaked out into other repos later. The heart rate overlay lived on as a standalone thing I revisited. The lyric fetching logic ended up as a bar of a much simpler script that just downloaded lyrics for songs in a folder. Everything else stayed buried.

Lesson from koste: the more directories a script folder has, the fewer things the folder actually does.

NotchPrompter, February 2026

One commit, a working prototype, and then nothing.

It is a Windows teleprompter that sits at the top of the screen near the webcam, so the person on the other end of a Zoom call sees you looking at them instead of at your notes. Inspired by Notchie on the Mac. It has voice synced scrolling using a Vosk model bundled in the repo, invisible-to-screen-sharing via a Windows 10 API flag, keyboard shortcuts, and a Tauri sidecar for the actual overlay window.

Why did it die? I built it in one long evening because I was recording a demo and I hated reading off a second monitor. The next day I did not need a teleprompter. Nobody else at my company needed one either. So I closed the tab and never opened it again. It works. It just does not have a second user, and I do not need it often enough to give it one.

This is the most common death mode. The project solved a problem I had for exactly one hour.

LatentLounge, February 2026

Renamed inside as "Echo Manor Mysteries". A Flask backend and a vanilla HTML frontend that use Mistral Large to generate an infinite detective game in the style of Clue. Six suspects, a manor with rooms, free form text commands like "search under the bed", and an accusation phase at the end.

Two commits. First commit landed the whole thing in one push. Second added a Dockerfile for Coolify.

The problem with LLM detective games is a design problem, not an engineering one. If you let the model decide who did it after the fact, the clues do not add up. If you let the model decide who did it up front and then answer questions in character, every suspect starts confessing by turn three because the model is too helpful. I did not solve the design problem, so the code sat.

If I ever come back to this class of thing, the answer is probably a state machine outside the model that pins down what each suspect knows, and a much smaller prompt per turn. The model should be a costume, not a director.

improved-connect-system, October 2025

A single main.js file, one commit. An IIFE that finds every "Connect" button on a LinkedIn search results page, clicks it, dismisses the "Add a note" modal by clicking Send without note, waits three seconds, clicks "Show more results" when it appears, and loops up to a hundred iterations before it gives up.

The commit message says Implement automated connect and send loop. That is the whole story. I ran it a few times, sent enough connection requests to fill whatever LinkedIn goal I had that week, and moved on.

I include this one because it is the honest counterweight to the other three. Sometimes a repo exists to hold one hundred lines of DOM automation that I need at 11pm and never again. That is fine. It is not a failure. It just is what it is.

vai, March 2026

This one is different. vai inside is called HANA Sentinel, a voice frontend for a SAP HANA operations assistant. Next.js 15, LiveKit for WebRTC voice, edge-tts on the Python agent side, a real phone number wired through LiveKit SIP. The README has a real deploy story for both Vercel and Render, environment variables listed, an architecture diagram in ASCII.

Seven commits, all called first commit except the last one which is fix roomid. This one did not die because it did not work. It worked. It is that I stopped needing the specific thing it did, and the LiveKit trial credit ran out, and the +1 (484) number in the README stopped ringing. Real infrastructure has a cost floor. Below a certain frequency of use, the cost floor kills the project.

The rest, at one sentence each

tabtamer-quest (February 2025): a Chrome extension where a virtual pet died if you had too many tabs open, migrated off Lovable, six commits, never installed on my own machine.

studio (February 2026): a Firebase Studio scaffold for a Tinder-style swipeable recipe card app with AI generated calorie counts, nine commits of "try fixing this error" that the AI editor made on my behalf.

vick (June 2025): a Bolt-generated Vite plus Tailwind scaffold with a single commit adding postcss config, contents unknown to me now.

vite-project (2025): the most literal name in the graveyard, a npm create vite scaffold I never renamed, sitting untouched since the first commit.

Restart (February 2026): a bare React plus Vite template, one commit, no code beyond the scaffold, name suggests it was meant to be a fresh start on something the name has erased.

obs (March 2025): an empty repo, no language, no files, made and abandoned the same day.

helix (November 2025): also empty, name reserved and nothing pushed.

HROverlay (January 2025): heart rate overlay concept, split off from what became koste, one commit and no follow-up.

JFinder (October 2024): a JavaScript job listing scraper I opened during a stretch when I was looking around.

Fin-Ana (August 2024): a Python financial analysis stub from earlier, included here because it fits the arc, one commit and out.

LinuxCommand (January 2025): a JavaScript sandbox for practising shell commands in the browser, never got past scaffold.

pythonchatbot (September 2025): the name is the whole spec, two commits.

PEGASUS (September 2025): a serious sounding name, one commit and no code beyond it.

dlm-dash (September 2025): a dashboard concept for something SAP related, empty repo.

ml_model (November 2025): a Python scratchpad for a model I never trained.

BEES (December 2025): a Python script called extract_goldbees.py that pulled numbers off some financial page, one commit, .env bundled but ignored.

AITechUsecase (September 2025): a Python doc mining prototype for an internal writeup.

LLM-local-snippets (September 2025): a Jupyter notebook of one-off LLM inference experiments on my laptop.

Project-SAMgen (December 2025): the only public one in the list, a Python attempt at Segment Anything on some domain images that never got beyond a first commit.

What the shape says

Twenty of the twenty four repos have one commit or an initial import plus one bugfix. Two have five to ten commits. Only koste and vai had sustained multi week attention, and both of those ended for the same reason: I was the only user, and I stopped needing what they did.

The distribution matches something I already suspected about how I work. I open a repo the moment an idea gets past the "I could probably build this in a weekend" mental threshold. That threshold is much lower than it should be. Roughly two thirds of the time, the moment I hit a real design problem, or the moment the demo works well enough for me personally, the repo goes quiet.

That is not necessarily bad. The cost of a dead private repo is close to zero. The benefit of the two or three that stay alive, and the one or two that eventually turn into something on this site, is high. But the ratio is worth being honest about, because when I write about a project that shipped, the shipped one is the exception, not the median.

The other honest observation is that the death rate on scaffold-only repos (Restart, vick, obs, helix, PEGASUS, dlm-dash, ml_model) is close to a hundred percent. When I open a repo without writing any code first, the repo is almost never the thing that gets me to write the code. The order I actually ship things in is: write the code as a script somewhere on my desktop, get it working, then open the repo. Repos that came before the code, in my history, do not become code.

So the concrete forward step is not "start fewer projects". It is "do not open a repo until the script on my desktop already runs".

See also

Cite as: Saravanan, K. (2026). The prototype graveyard: 24 repos I started between 2025 and 2026. Kaushik Saravanan. https://www.kaushik.cv/blog/typescript-prototype-graveyard-2025-2026