Localghost: a ghost story that knows where you live (and runs on your laptop)
Description and use
Localghost is a local web app that generates personalized horror stories using open‑weight models, voice synthesis, and sound effects, running entirely on the user's machine without internet.
Problem
Users want a personalized horror experience that runs entirely offline without uploading personal photos to external servers.
Outcome
Localghost delivers a fully local, privacy‑preserving horror story experience that runs offline, with customizable scare levels, voice, and sound effects, and optional premium voice integration.
Workflow
- 1. User uploads photos and optional notes via browser.
- 2. Photos are downscaled, EXIF stripped, and analyzed by a set‑designer pass to identify objects.
- 3. The story model (Gemma 3 4B) reads the photo and writes a cue script with tags.
- 4. A lightweight parser streams the script into events (audio, lights, captions).
- 5. Kokoro‑82M synthesizes voice in Web Workers (ONNX Runtime Web / WebAssembly).
- 6. WebAudio generates sound effects and light pulses based on tags.
- 7. The story plays with synchronized audio, lights, and captions, optionally using ElevenLabs for higher quality voice.
- 8. The app caches audio and photo analysis for instant replay.
- 9. Users can toggle premium voice or reduce flashing for accessibility.
Evidence
Localghost is a horror storyteller that lives in your browser. You choose how scared you want to be, from 1 (campfire) to 5 (nightmare).
The voice model downloads once (about 90 MB) and then runs in your browser.
Your photos never leave your machine in the default setup.
The app first asks Ollama whether the model can actually see images. The first Gemma build I pulled couldn't, and instead of sending photos to a model that can't use them, it falls back to your notes.
On my CPU-only laptop (Ryzen 7 7730U, 16 GB), Kokoro took around 5–11 seconds to synthesize a sentence that plays for 3–4 seconds.
- Record date: 2026-11-02T05:59:12.428Z