{"slug": "campfire-after-dark-a-local-ai-that-tells-stories-in-the-dark", "title": "Campfire After Dark — A Local AI That Tells Stories in the Dark", "summary": "A developer built Campfire After Dark, a local-first AI horror storytelling app that turns user prompts into narrated, chapter-based horror experiences. The app runs the Qwen3 4B Instruct model via Ollama for story generation and Kokoro ONNX behind a local FastAPI server for text-to-speech, with a React and Vite frontend and IndexedDB for saving stories in the browser. The developer says keeping inference local preserves prompt privacy, avoids per-request API fees, and allows free experimentation with models, at the cost of requiring users to download models and have capable hardware.", "body_md": "*This is a submission for the [Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine](https://dev.to/challenges/hacktoberfest-week4-2026-10-26).*\n\n**Campfire After Dark** is a local-first AI horror storytelling app that transforms simple prompts into immersive, narrated horror experiences.\n\nI wanted to recreate the feeling of sitting around a campfire at night, listening to a story that gets more unsettling with every passing minute.\n\nWith Campfire After Dark, you can:\n\nThe goal was to build more than a basic story generator. I wanted to create an interactive horror experience powered by local AI.\n\n**🏠 Home Page**\n\n**📖 Story Player**\n\n**💾 Saved Stories**\n\n**Watch Campfire After Dark in action:**\n\n👉 [INSERT YOUR DEMO VIDEO LINK HERE]\n\nThe application currently runs locally on the user's machine. The demo video will walk through story generation, narration, the story player, and saved stories.\n\n🔥 **GitHub Repository:**\n\nThe repository contains the frontend, local AI integration, narration server, and setup instructions.\n\nThe most important part of this project is that its AI capabilities run locally.\n\nI used **Ollama** to run the **Qwen3 4B Instruct** model locally.\n\nThe model generates horror stories based on the user's choices. The app creates the full story first and then organizes it into chapters, helping avoid generation pauses between chapters during playback.\n\nFor narration, I integrated **Kokoro ONNX** through a local **FastAPI** server.\n\nIt converts story text into speech, giving the stories a narrated experience without relying on an external cloud text-to-speech API.\n\nThe user interface is built with **React and Vite**. It handles story creation, chapter navigation, visuals, audio playback, ambient sound, and jump-scare timing.\n\nGenerated stories are saved in the browser using **IndexedDB**, allowing users to revisit their stories without needing a hosted database.\n\nFor Campfire After Dark, open innovation is not just a technology choice. It is part of the project's identity.\n\nI wanted to build an AI experience where users do not have to send their story prompts to an external AI service.\n\nBy running the models locally:\n\n**Privacy:** Story prompts and generation requests stay on the user's machine rather than being sent to a hosted AI inference API.\n\n**No per-request API fees:** Once the models are installed, local inference does not require paying an external provider for each generated story or narration request.\n\n**Freedom to experiment:** I can experiment with local models and change the way the storytelling experience works without being tied to a single closed AI API.\n\n**Local control:** The core AI generation and narration services run on the user's own machine.\n\nThere are trade-offs. Users need to download the models, install the required dependencies, and have hardware capable of running them.\n\nBut for this project, that trade-off is worthwhile. It gives me greater control over the experience and keeps the core AI workflow local.\n\n**I believe open innovation makes AI more accessible to experiment with, customize, and build upon.**\n\nEvery good horror story begins with a little imagination.\n\nA strange noise outside the window. Footsteps in an empty hallway. A voice coming from somewhere it should not be.\n\nI wanted Campfire After Dark to capture that feeling.\n\nThe idea was to combine local AI storytelling with narration, visuals, atmospheric audio, and unexpected scares to create something that feels closer to an interactive campfire story than a traditional chatbot.\n\nAnd perhaps the best part is this:\n\n**The next scary story does not have to come from the internet. It can come from the machine sitting right in front of you.**\n\n🌙 Keep the lights on. You might need them.\n\n*Built with curiosity, open AI, and a little bit of fear. 🔥*", "url": "https://wpnews.pro/news/campfire-after-dark-a-local-ai-that-tells-stories-in-the-dark", "canonical_source": "https://dev.to/aayush_sharma_2604/campfire-after-dark-a-local-ai-that-tells-stories-in-the-dark-2a94", "published_at": "2026-10-31 19:40:34+00:00", "updated_at": "2026-10-31 19:52:08.525017+00:00", "lang": "en", "topics": ["artificial-intelligence", "large-language-models", "generative-ai", "ai-tools"], "entities": ["Ollama", "Qwen3 4B Instruct", "Kokoro ONNX", "FastAPI", "React", "Vite", "IndexedDB", "Hacktoberfest"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/campfire-after-dark-a-local-ai-that-tells-stories-in-the-dark", "markdown": "https://wpnews.pro/news/campfire-after-dark-a-local-ai-that-tells-stories-in-the-dark.md", "text": "https://wpnews.pro/news/campfire-after-dark-a-local-ai-that-tells-stories-in-the-dark.txt", "jsonld": "https://wpnews.pro/news/campfire-after-dark-a-local-ai-that-tells-stories-in-the-dark.jsonld"}}