What I Built
Last Witness is an interactive story about a forgotten amusement park and its failing computer, Keeper.
Keeper holds fourteen memories but has enough power for seven questions. Each answer preserves a memory in your notebook while another unheard memory disappears. After the seventh question, you write the final record from what you saved.
There is no score. You decide which pieces of the park survive.
Demo
The public demo is the Archive Edition, using keyword matching without AI inference. The local AI edition uses Qwen2.5 3B through Ollama. Both share the same story.
Code
GitHub repository and setup instructions
Application code is MIT licensed. Model weights retain their upstream license.
How I Built It
I used JavaScript, HTML, CSS, Node.js, and Ollama, with no package dependencies.
The dialogue is prewritten. The open-weight model interprets each question and selects a relevant available memory through constrained JSON. The server validates its selection before updating the game.
Each request includes only the remaining records. Saved memories, erased records, and previous dialogue are excluded from subsequent inference. Your notebook remembers what Keeper cannot.
Failed inference does not consume a turn. Eight automated tests cover memory transitions, concurrency, and HTTP behavior. Real-model checks cover relevance, paraphrases, unrelated questions, and removed records.
The interface combines dark green tones, a weathered ticket, a park map, and unfolding notes. Illustrations use CSS and SVG; optional sound is synthesized locally.
Why Does Open Innovation Matter?
After installing the software and model weights, the local AI edition works offline. Questions stay on your computer, and you can swap compatible models.
A story about preservation should itself be preservable. Keeping the source and model lets someone return to Bellwether without relying on a hosted service.
The Spirit of It
One memory concerns a lost toy fox. Each winter, a staff member knitted it a scarf, although nobody would see it inside the closed drawer.
A player might save that small kindness—or lose it before discovering it.
The final record belongs to the player. Keeper leaves them with:
“Thank you. I think I can turn the lamp off now.”
Top comments (0)