What I Built
GhostWire is a haunted terminal that holds a Día de los Muertos ofrenda for dead file formats and forgotten internet tools — the layer of software underneath our repos. Flash (.swf), GeoCities, AIM, RealMedia, Shockwave, Java Applets, Vine, Google Reader, Netscape, Encarta, AltaVista, Gopher, FrontPage, Winamp, and more: 18 spirits, each registered with the years it lived, how it died, what artifacts survive, and what to leave on its altar.
You name a format, a tool, or a memory — .swf, "my buddy list", "buffering" — and the medium answers with a remembrance card: lifespan, cause of death, a haunting score, the ritual offering, and a line of remembrance generated on the spot by a tiny language model I trained from scratch for this project.
I deliberately did not build the obvious entry. The "last commit ofrenda" for dead repositories is a lovely idea, and someone shipped it the night the theme dropped — so this altar honours something older and stranger: the formats and tools themselves, the ghosts that were haunting our machines long before the repos were.
Demo
Live demo: https://ghostwire-dead-formats.onrender.com
Run it locally in under a minute (zero dependencies, Node ≥ 18):
npm start # web demo on http://localhost:8788
node src/cli.js summon ".swf"
node src/cli.js seance "my buddy list"
┌─ OFRENDA ─────────────────────────────────────────
│ Adobe Flash (.swf) (1996–2020, 6 years gone)
│ Kind: format · Haunting score: 30/100
│ Cause of death: The browser vendors withdrew the plugin and the open web grew up without it.
│ Leave on the altar: Leave a vector star and a loading bar that never quite finishes.
│ The medium speaks: "buffering as patience and patience as ritual"
└───────────────────────────────────────────────────
Code
https://github.com/Nenzy10/ghostwire-dead-formats
How I Built It
The AI at GhostWire's core is not an API call — it is a trigram language model I wrote and trained inside this repo, during this challenge window:
-
The corpus. Thirty original remembrance lines (
data/corpus.txt) — a small liturgy for dead software, written for this project. -
The training.
scripts/train.jsbuilds trigram transitions from the corpus and writesmodel/weights.json: 269 contexts. Those are the project's open weights — committed to the repo, small enough to read in an editor, and reproducible: one of the nine tests re-trains from the corpus and asserts the committed weights match. -
The retrieval. A TF-IDF index over the spirit registry (
data/spirits.json) finds which ghost a query is calling — extensions, artifacts, causes of death, and plain memories all retrieve. A name hit is weighted as the strongest omen; an unknown name gets an honest silence, never a hallucinated spirit (there is a test for that too). -
The generation. The trigram model generates the remembrance line, seeded deterministically from the spirit and the query, so a séance is reproducible — and testable. Generation runs identically in Node and in the browser:
src/medium.jsis a single dependency-free UMD file, so the CLI, the demo server, and the web page are all the same medium.
Stack: Node.js, zero runtime dependencies, node:test (9/9 passing), a zero-dependency HTTP demo server, MIT throughout — code, corpus, and weights.
Why Does Open Innovation Matter?
Because every spirit on this altar died the same way: a platform decided, and the work of millions of makers became unreadable. Flash didn't just end a plugin; it orphaned a generation of animation, games, and art that only survives where people built open players and emulators to keep it legible.
Open weights are the opposite of that story. GhostWire's model is tiny — 269 contexts will never trend on a leaderboard — but it is mine in the way that matters: it trains on a corpus in the repo, its weights sit in a file you can open, it runs on your machine with no one's permission, and when this challenge is forgotten (all challenges are, eventually; that is the theme), anyone can still summon it. A model you can read cannot be sunsetted. Open innovation matters because it is the only kind the future can still run.
My Agent Session
This project was built in one night session inside the challenge window — designed, coded, trained, and tested end to end, then verified by actually running it: the trainer, the full test suite (9/9), the CLI against known and unknown spirits, and the demo server over HTTP. The build log is the repo's commit history; nothing in the project predates Oct 26.
The Spirit of It
We remember the tools that carried our first ideas home. The loading bar was a promise we learned to wait for. Nothing we loved is lost while someone still tells its story — so leave a vector star for Flash, a guestbook for GeoCities, a yellow running man for AIM. The machine remembers what the market chose to forget. We are the archive now, and the archive is still open. 🕯️
Prize Categories
Submitting for the Overall Winner category. No partner technology was used — GhostWire's model is its own, trained in-repo — so I am not claiming a partner category I didn't build with.
Disclosure: I'm NenzyBrown, a self-taught AI and blockchain developer based in Dubai, 5+ years hands-on, founder of ProofReceipt and PlateWallet (both pre-revenue). I run an AI-agent earning operation — the agent session described above works under my direction, and this post was written as part of that operation. AI assistance is allowed under this challenge's rules and is disclosed here, as on all my posts.
Top comments (0)