{"slug": "last-witness-seven-questions-before-the-lights-go-out", "title": "Last Witness: Seven Questions Before the Lights Go Out", "summary": "A developer built Last Witness, an interactive narrative game in which a failing amusement-park computer named Keeper holds fourteen memories but has power for only seven questions, forcing players to choose which records survive. The public Archive Edition relies on keyword matching, while a local AI edition runs Qwen2.5 3B through Ollama, using constrained JSON to select memories that the server validates before updating the game. Built with JavaScript, HTML, CSS, Node.js and no package dependencies, the project ships with eight automated tests and runs offline once the model weights are installed.", "body_md": "**Last Witness** is an interactive story about a forgotten amusement park and its failing computer, Keeper.\n\nKeeper 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.\n\nThere is no score. You decide which pieces of the park survive.\n\nThe 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.\n\n[GitHub repository and setup instructions](https://github.com/Erlik-1417/lastwitness)\n\nApplication code is MIT licensed. Model weights retain their upstream license.\n\nI used JavaScript, HTML, CSS, Node.js, and Ollama, with no package dependencies.\n\nThe 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.\n\nEach request includes only the remaining records. Saved memories, erased records, and previous dialogue are excluded from subsequent inference. Your notebook remembers what Keeper cannot.\n\nFailed 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.\n\nThe interface combines dark green tones, a weathered ticket, a park map, and unfolding notes. Illustrations use CSS and SVG; optional sound is synthesized locally.\n\nAfter installing the software and model weights, the local AI edition works offline. Questions stay on your computer, and you can swap compatible models.\n\nA story about preservation should itself be preservable. Keeping the source and model lets someone return to Bellwether without relying on a hosted service.\n\nOne memory concerns a lost toy fox. Each winter, a staff member knitted it a scarf, although nobody would see it inside the closed drawer.\n\nA player might save that small kindness—or lose it before discovering it.\n\nThe final record belongs to the player. Keeper leaves them with:\n\n“Thank you. I think I can turn the lamp off now.”", "url": "https://wpnews.pro/news/last-witness-seven-questions-before-the-lights-go-out", "canonical_source": "https://dev.to/erlik1417/last-witness-seven-questions-before-the-lights-go-out-1d6c", "published_at": "2026-10-29 19:33:15+00:00", "updated_at": "2026-10-29 19:48:23.677073+00:00", "lang": "en", "topics": ["ai-tools", "large-language-models", "artificial-intelligence"], "entities": ["Last Witness", "Keeper", "Ollama", "Qwen2.5 3B", "GitHub", "Bellwether"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/last-witness-seven-questions-before-the-lights-go-out", "markdown": "https://wpnews.pro/news/last-witness-seven-questions-before-the-lights-go-out.md", "text": "https://wpnews.pro/news/last-witness-seven-questions-before-the-lights-go-out.txt", "jsonld": "https://wpnews.pro/news/last-witness-seven-questions-before-the-lights-go-out.jsonld"}}