This is a submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine
What I Built
I built The Spectral Terminal & Ofrenda Chamber, a local-first web app that brings together two kinds of remembrance: a candlelit ofrenda for people and forgotten technology, and a séance terminal for conversations with digital ghosts.
In the Virtual Ofrenda, I can remember someone with their story, photo, and small details, or create an offering for a technology pioneer, programming language, or piece of software. I can leave offerings and light candles for each one. Memories and offerings stay in this browser.
In the Haunted Séance Terminal, I can summon COBOL, FORTRAN, x86 Assembly, early Unix, Netscape Navigator, Gemma, or Llama. With Ollama and a local model available, the terminal sends questions to that model on my own machine. Without Ollama, built-in persona responses keep the séance usable offline.
I interpreted “Ghost in the Machine” as a way to remember both the people behind technology and the tools that shaped how we work.
Demo
Code
The Spectral Terminal & Ofrenda Chamber
A local-first tribute to the people, machines, languages, and open-source projects that leave traces behind. The Virtual Ofrenda lets you remember loved ones, technology pioneers, and forgotten software with candlelight, offerings, photos, and stories. The Haunted Séance Terminal lets you summon COBOL, FORTRAN, x86 Assembly, early Unix, Netscape, Gemma, or Llama for eerie, technical conversation.
Run locally
Requires Python 3.9+. No packages, build step, account, or internet connection are required to run the app itself.
python server.py
Open http://127.0.0.1:8000. Keep the local server running. The altar, candle and offering interactions, memory box, and deterministic terminal oracle work without Ollama or internet access.
Summon an open-weight model
Install Ollama, then download a small local model once:
ollama pull gemma3:1b
Keep Ollama running and open Local AI & settings to confirm the connection. You can select another installed model by entering its Ollama model…
How I Built It
The app uses HTML, CSS, and vanilla JavaScript. IndexedDB stores people, photos, memories, offerings, and candle counts in the browser. A service worker caches the app shell. A small Python server serves the app and forwards AI requests only to Ollama at 127.0.0.1:11434.
The default model is gemma3:1b, and I can choose another installed Ollama model in settings. The model can write a remembrance from details I chose to save, or respond to terminal questions in character. Photos are never sent to the model. If Ollama is unavailable, the terminal uses its built-in persona responses instead.
I kept the interface free of remote fonts, icon libraries, and other external assets so the app doesn’t need an internet connection just to load.
Why Does Open Innovation Matter?
These memories are personal, so I wanted them to stay on the device where they were written. The app has no account, hosted database, analytics, or cloud AI service. When I use Ollama, the selected text goes to a model running on my own computer; photos stay in the browser.
Once a model is downloaded, local inference can work without internet access or a per-request API charge. I can also swap models and change the prompts in the source. That gives me control over the terminal’s voice and how the remembrance draft is written.
The trade-off is that local models vary in quality and require local compute. Their output is a creative draft, not a historical record or a message from a real person, so I review it before saving.
The Spirit of It
I wanted the terminal and altar to sit side by side: one lets an old language speak in a fictional voice; the other gives a person, project, or tool a place to be remembered. Both are reminders that what we build—and who built it—can outlast the system it first ran on.
Prize Categories
Best Use of Gemma — the app defaults to Gemma 3 1B through Ollama. Keep this category if you run your submission with Gemma.
Top comments (0)