[KongchangAI]
Product

GhostRunner

An open-source, local-first AI audio drama engine that combines running or walking routes with LLM-generated thriller narratives. GPS triggers pre-compiled audio beats, playing story content at corresponding landmarks along the route.

Timeline (last 90 days)

Oct 15

GhostRunner is an open-source, local-first audio drama engine that turns real streets into a thriller radio drama stage.

Unverified50%
Oct 15

Every story beat in GhostRunner is anchored to a specific distance along the route (chainage, in meters), with triggers based on distance rather than time.

Unverified50%
Oct 15

GhostRunner's narrator can only mention landmarks that actually exist on the route in OpenStreetMap, and a validator rejects any fabricated landmarks.

Unverified50%
Oct 15

GhostRunner's story is compiled and voiced before execution, and playing lines is lookup rather than real-time inference.

Unverified50%
Oct 15

GhostRunner can run on a laptop GPU with only 4 GB of VRAM.

Unverified50%
Oct 15

GhostRunner uses the Overpass API to query POIs in OpenStreetMap along the route corridor as material for the LLM narration.

Unverified50%
Oct 15

GhostRunner uses two LangGraph graphs: compile_graph does the heavy lifting (route planning, POI fetching, director LLM, beat writer, validator and TTS rendering), while runtime_graph is millisecond-level deterministic nodes (GPS reading, pace classification, trigger checks, etc.).

Unverified50%
Oct 15

In GhostRunner, all orchestration decisions are made in pure Python, and the LLM is only responsible for the director (one structured call) and the beat writer (three variants of at most 30 words per beat).

Unverified50%
Oct 15

GhostRunner uses TabPFN to classify runners as CRUISING, ACCELERATING, EXHAUSTED or STOPPED, and uses a 3-tick hysteresis filter to avoid the story flip-flopping back and forth.

Unverified50%
Oct 15

GhostRunner's TabPFN training labels come from transparent heuristic rules applied to simulated running trajectories, with no labeled dataset; if loading fails, a rule-based classifier takes over automatically.

Unverified50%

5 more timeline events

All Facts (15)

Unverified

GhostRunner is an open-source, local-first audio drama engine that turns real streets into a thriller radio drama stage.

50%
Unverified

Every story beat in GhostRunner is anchored to a specific distance along the route (chainage, in meters), with triggers based on distance rather than time.

50%
Unverified

GhostRunner's narrator can only mention landmarks that actually exist on the route in OpenStreetMap, and a validator rejects any fabricated landmarks.

50%
Unverified

GhostRunner's story is compiled and voiced before execution, and playing lines is lookup rather than real-time inference.

50%
Unverified

GhostRunner can run on a laptop GPU with only 4 GB of VRAM.

50%
Unverified

GhostRunner uses the Overpass API to query POIs in OpenStreetMap along the route corridor as material for the LLM narration.

50%
Unverified

GhostRunner uses two LangGraph graphs: compile_graph does the heavy lifting (route planning, POI fetching, director LLM, beat writer, validator and TTS rendering), while runtime_graph is millisecond-level deterministic nodes (GPS reading, pace classification, trigger checks, etc.).

50%
Unverified

In GhostRunner, all orchestration decisions are made in pure Python, and the LLM is only responsible for the director (one structured call) and the beat writer (three variants of at most 30 words per beat).

50%
Unverified

GhostRunner uses TabPFN to classify runners as CRUISING, ACCELERATING, EXHAUSTED or STOPPED, and uses a 3-tick hysteresis filter to avoid the story flip-flopping back and forth.

50%
Unverified

GhostRunner's TabPFN training labels come from transparent heuristic rules applied to simulated running trajectories, with no labeled dataset; if loading fails, a rule-based classifier takes over automatically.

50%
Unverified

GhostRunner uses ElevenLabs to voice each line, rendered ahead of time via a rolling window of the next three triggers, with audio clips content-addressed by sha256(voice + text), making repeated lines zero-cost.

50%
Unverified

GhostRunner's voice cost is its only usage-based cost, about 25 beats × 3 variants × about 150 characters, roughly 11,000 characters for a complete package, calculated per route rather than per listener.

50%
Unverified

In GhostRunner, the real-time GPS trajectory never leaves the machine running the app, and the raw trajectory is deleted after the session ends.

50%
Unverified

GhostRunner's saved missions can be replayed with the LLM, router and TTS all turned off.

50%
Unverified

GhostRunner's unit of sale is the mission package: one route, one compiled story and voiced audio, produced once and replayable unlimited times; as of now no paid pilot has been run and pricing has not been validated.

50%

Source Articles