DEV Community

Aayush Sharma
Aayush Sharma

Posted on Edited on

🔥 Campfire After Dark — A Local AI That Tells Stories in the Dark

Hacktoberfest Open-Source AI Challenge: Ghost in the Machine Submission 👻🌼

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine.


🏕️ What I Built

Campfire After Dark is a local-first AI horror storytelling app that transforms simple prompts into immersive, narrated horror experiences.

I wanted to recreate the feeling of sitting around a campfire at night, listening to a story that gets more unsettling with every passing minute.

With Campfire After Dark, you can:

  • Generate short or long AI-powered horror stories.
  • Choose different fear levels and story endings.
  • Experience stories organized into chapters.
  • View visuals that accompany the story scenes.
  • Listen to AI-generated voice narration.
  • Experience ambient soundscapes that build the atmosphere.
  • Encounter timed audio and visual jump scares.
  • Replay individual chapters or the complete story.
  • Save and revisit your favorite stories.

The goal was to build more than a basic story generator. I wanted to create an interactive horror experience powered by local AI.

🖥️ A Look Inside the Campfire

🏠 Home Page

Campfire After Dark Home Page

📖 Story Player

Campfire After Dark Story Player

💾 Saved Stories

Campfire After Dark Saved Stories


🎬 Demo

Watch Campfire After Dark in action:

👉 https://vimeo.com/1241814042?share=copy&fl=sv&fe=ci

The application currently runs locally on the user's machine. The demo video will walk through story generation, narration, the story player, and saved stories.(The demo video also contains a demo story).


💻 Code

🔥 GitHub Repository:

Campfire After Dark — GitHub

The repository contains the frontend, local AI integration, narration server, and setup instructions.


🛠️ How I Built It

The most important part of this project is that its AI capabilities run locally.

AI Story Generation — Ollama + Qwen3

I used Ollama to run the Qwen3 4B Instruct model locally.

The 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.

AI Voice Narration — Kokoro ONNX

For narration, I integrated Kokoro ONNX through a local FastAPI server.

It converts story text into speech, giving the stories a narrated experience without relying on an external cloud text-to-speech API.

Frontend — React + Vite

The user interface is built with React and Vite. It handles story creation, chapter navigation, visuals, audio playback, ambient sound, and jump-scare timing.

Local Story Storage — IndexedDB

Generated stories are saved in the browser using IndexedDB, allowing users to revisit their stories without needing a hosted database.

Technology Stack

  • AI model: Qwen3 4B Instruct
  • Local model runtime: Ollama
  • Voice generation: Kokoro ONNX
  • Backend: Python + FastAPI
  • Frontend: React + Vite
  • Storage: IndexedDB
  • Audio experience: Browser audio playback and ambient sound

Why Does Open Innovation Matter?

For Campfire After Dark, open innovation is not just a technology choice. It is part of the project's identity.

I wanted to build an AI experience where users do not have to send their story prompts to an external AI service.

By running the models locally:

Privacy: Story prompts and generation requests stay on the user's machine rather than being sent to a hosted AI inference API.

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.

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.

Local control: The core AI generation and narration services run on the user's own machine.

There are trade-offs. Users need to download the models, install the required dependencies, and have hardware capable of running them.

But for this project, that trade-off is worthwhile. It gives me greater control over the experience and keeps the core AI workflow local.

I believe open innovation makes AI more accessible to experiment with, customize, and build upon.


🔥 The Spirit of It

Every good horror story begins with a little imagination.

A strange noise outside the window. Footsteps in an empty hallway. A voice coming from somewhere it should not be.

I wanted Campfire After Dark to capture that feeling.

The 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.

And perhaps the best part is this:

The next scary story does not have to come from the internet. It can come from the machine sitting right in front of you.

🌙 Keep the lights on. You might need them.


Built with curiosity, open AI, and a little bit of fear. 🔥

Top comments (0)