This is a submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine
What I Built
The Haunted Museum of Dead Tech đź‘» is a museum where the technologies we buried come back as ghosts, and they still have a lot to say.
You walk through the halls, pick an exhibit and talk to its ghost. Each one tells you its story, defends itself from its critics and tries to convince you that it deserves to come back from the dead.
The collection has eight ghosts born between 1971 and 1999: the Floppy Disk, VHS, the Walkman, the Game Boy, Encarta, Internet Explorer, Clippy and MSN Messenger. The Floppy Disk is grumpy because it's still the Save icon and nobody thanks it, VHS gets upset if you didn't rewind, and MSN sends you a nudge if you take too long to answer.
Every ghost is shaped like its object (a floppy disk, a cassette, a little console, an open book, a chat bubble...), with a pastel color, a soft halo and a face that moves its mouth while it talks.
I read the theme in two ways at once. Halloween gave me the ghosts and the sĂ©ances. DĂa de los Muertos gave me the idea of honoring what is gone: remembering these technologies with love, leaving them offerings and letting them tell their own story. So the museum also has:
- 🕯️ Ofrendas. Leave a candle, a marigold, pan de muerto or the ghost's special gift on its altar (a rewound rental tape for VHS, fresh AA batteries for the Game Boy...). The ghost reacts, and the most loved ghost gets a badge in the hall.
- đź“– Guestbook. Sign an exhibit's guestbook and the ghost writes you a dedication back, like signing a yearbook.
- ⚔️ Debate Hall. Pick two ghosts and a topic, and they argue live, turn by turn, answering each other. When the candles burn out, you vote the winner.
- 🪦 Repo Graveyard. The personal wing. Write your GitHub username and every repo you stopped committing to gets a tombstone with an epitaph. Then you can summon the ghost of any repo: it remembers its README and last commits, knows you created it, and asks you why you left.
The inspiration was simple: I'm a web development student, I got into programming through an HTML game, and I still remember the floppy disks and MSN nudges. I wanted a place where those memories could talk back.
Demo
The museum runs locally with Ollama, so the best way to see it is the video. To run it yourself, the instructions are in the repo.
Code
đź‘» Haunted Museum of Dead Tech
A haunted museum where dead (or almost dead) technologies come back as ghosts.
Built for the Hacktoberfest open-source AI challenge, week "Ghost in the Machine" Every ghost runs on Gemma 3 (4B) through Ollama, locally. No API keys, no cloud.
What you can do
- Historical wing · Eight ghosts born between 1971 and 1999: the Floppy Disk, VHS, the Walkman the Game Boy, Encarta, Internet Explorer, Clippy and MSN Messenger. Each one is shaped like its object. Talk to any of them: each ghost tells its story, answers its critics and argues why it should come back.
- Ofrenda · For DĂa de los Muertos, leave a candle, a marigold, pan de muerto or the ghost's special gift on its altar. The ghost reacts, and the most loved ghost gets a badge in the hall.
- Guestbook · Sign each exhibit's guestbook and the ghost…
How I Built It
Open-source AI used:
- Gemma 3 (4B), an open-weight model, running locally with Ollama. Every ghost, epitaph, offering reaction and debate turn is generated on my own machine.
- Any other model in Ollama works too: the museum detects what you have installed and lets you switch the "medium" from the header.
The rest of the stack:
- Fastify (Node) for the museum server: it builds each ghost's prompt and streams the answers.
- Astro with plain CSS for the museum, and SVG for the ghosts.
- pnpm workspaces to keep the server and the web in one repo.
One Markdown file per ghost. Each exhibit is a .md file. The frontmatter is the ghost's soul (personality, catchphrase, what its critics say, its color, shape and special offering) and the body is its historical archive: life, death, defense and why it should come back. The same file is used twice: Astro renders it as the exhibit plaque, and the server puts it in the model's system prompt as the only thing the ghost remembers. The ghost is told to say its memory is "foggy" instead of inventing dates. A 4B model can make things up easily, so I checked every archive myself. Adding a new ghost means adding one file.
Making a small model behave:
- Language. The prompt is in English, so Gemma kept answering in English even when I wrote in Spanish. A rule at the end of a long prompt wasn't enough. What worked was detecting the visitor's language and adding a short reminder right before the ghost answers. Small models pay much more attention to the end of the conversation.
- Debates. Each turn is a separate request. The ghost on stage sees its own lines as its messages and the opponent's lines as the other person, so they really answer each other instead of giving two monologues.
- GitHub limits. My first graveyard downloaded the README and commits of every repo just to write the epitaphs, and I hit GitHub's hourly limit fast. Now the epitaphs only need the repo list (one request for the whole graveyard), and the README and commits are downloaded only when you summon a ghost. No token needed.
Why Does Open Innovation Matter?
Your memories stay home. The guestbook, the offerings and your repo history are saved in small JSON files on your own machine. Talking to your old projects never sends your code or your messages to someone else's server.
It works with the lights off. The museum runs fully offline. The graveyard needs the internet only the first time: after that, repos, epitaphs and memories are cached locally. A museum of technologies that disappeared because a company switched them off shouldn't depend on a service that can be switched off too.
I could compare and choose. I tried the same ghosts with Gemma 3 and Qwen 2.5. Gemma kept the characters much better, so it's the default. With a closed API I would have used whatever model I was given. Here I compared them myself, and anyone who prefers another model can switch it from the header.
It costs nothing to haunt. No API keys, no tokens, no bills. You can debate with ghosts all night.
And there's an irony I love: many of the ghosts in this museum died because someone else decided for them. Microsoft retired MSN Messenger and replaced it with Skype, and Encarta was shut down along with all its websites. Building their museum with open tools felt like the right way to honor them.
My Agent Session
I built the museum with an AI coding assistant, in one long conversation. It wrote much of the code, but the direction was mine: I turned a repo graveyard idea into a museum of dead tech, chose the ghosts my generation grew up with, asked for each one to have the shape of its object, and decided what stayed and what went.
My other job was testing everything on my laptop and reporting what broke: ghosts answering only in English, GitHub's rate limit, duplicated offerings, a repo ghost claiming it created itself... Each one became a fix. Learning to explain clearly what was wrong and decide when something was finished was the most interesting part for me.
The Spirit of It
As a kid, floppy disks were how I first got close to a computer. They were my way in, and everything that came after started there. So "talking" to the Floppy Disk ghost felt special: like saying thank you to the thing that opened the door for me.
But the moment that really landed was in the graveyard. I summoned the ghost of one of my own abandoned repos, asked it who created it, and it answered with my name and asked me why I left. It's a strange feeling to be questioned by your past self's code. I didn't have a good answer. đź‘»
Prize Categories
- Best Use of Gemma: every ghost, epitaph, offering reaction and debate turn is generated by Gemma 3 (4B) running locally with Ollama. After comparing it with other open models, Gemma kept the characters best, so it's the default medium of the museum.
Top comments (1)
This is such a cool idea! I love the concept of bringing old repositories back to life and letting them talk back. Such a fun and creative way to revisit old projects! đź‘»
