Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

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

Source

The voice model downloads once (about 90 MB) and then runs in your browser.

Source

Your photos never leave your machine in the default setup.

Source

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.

Source

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.

Source

  • Record date: 2026-11-02T05:59:12.428Z