SIDEQUEST.PROJ // deep dive

SideQuest

// an AI dungeon master — any genre, real-time, multiplayer

A narrator engine that runs tabletop-style RPGs in any genre, powered by a Claude narrator invoked stateless per turn. Players connect from a browser, roll up a character through genre-driven scenes, and explore living worlds — with real-time image generation, streaming narration, adaptive music, and submit-and-wait multiplayer. This is my after-hours obsession, and it's the most ambitious thing I've built solo.

In Playtest Creator · Solo 2026 Open source
FROM A SESSION // character creation · space opera
SideQuest character-creation screen — naming a character and choosing the Perseus Cloud space-opera world, with a generated cityscape
// Rolling up “Zanzibar Jones” and choosing a world. The cityscape is generated on-device per scene; the world list, descriptor chips and lore text are all driven by the selected genre pack.
JOIN THE ALPHA // private playtest

SideQuest is in private playtest.

Forever-DM, curious player, or just want to watch a Claude narrator run a dogfight? I'm onboarding alpha testers in small waves — bring a playgroup or fly solo.

✉ Request alpha access
THE IDEA

A great tabletop game master improvises a world, voices a cast of characters, adjudicates the rules, and keeps the pacing taut — all at once. SideQuest asks whether a language model can do that job convincingly, for one player or a whole party, in any genre you can write down.

The answer is a genre-agnostic engine: the rules, tropes, character creation, audio, visual style, faction agendas and even invented languages all live in declarative genre packs. Swap the pack and the same engine runs a Leone-style spaghetti western or a cosy Edwardian murder mystery.

THE ARCHITECTURE

SideQuest is a five-repo ecosystem coordinated by an orchestrator, so the game engine, the client, and the GPU-bound media work can each evolve and scale on their own terms.

serverPython · FastAPI · WebSocket · narrator
uiReact 19 · audio engine · 3D dice
daemonon-device image + music gen
contentgenre-pack YAML, audio, worlds

The narrator is the heart of it. Each turn is a bounded, stateless Claude call — no resumed session — with prompt caching on the stable system zones and native tool-use for every mechanical change: the narrator structurally cannot describe picking up a sword without invoking the tool that adds it to your inventory. Models are routed per call: Haiku for classification, Sonnet for narration, Opus for the moments that matter.

A TURN, END TO END
1Player types an action; it's sanitized at the protocol boundary before it reaches any prompt.
2A single Haiku call classifies intent — exploration, combat, or chase — with no narrator entanglement.
3The unified narrator generates prose and emits mechanical patches as validated tool calls; results merge with tool values taking precedence.
4Narration streams to the client token-by-token; a dual-track tension engine decides whether it arrives instantly or builds dramatically.
5In parallel and off the critical path, the media daemon renders a scene image and cues mood-based music — text never waits on the GPU.
ENGINEERING JUDGEMENT

The decisions I'm proudest of are the unglamorous ones:

  • Ported the backend off Rust, back to Python. A 12-crate Rust workspace was rewritten to Python once it was clear the iteration speed mattered more than the runtime — crate boundaries became package boundaries, serde structs became pydantic models, tracing spans were carried over verbatim.
  • Fail-loud, no silent fallback. Missing an API key or a database URL stops the process; "it rendered" can never be a lie.
  • Forensics telemetry as a lie-detector. Per-turn metrics and canonical state projections are written inside the same transaction as the narration they describe, so the GM dashboard has mechanical ground truth.
  • Every decision is an ADR. 115+ architecture decision records document not just what was built, but why — and what was reversed.
THE NARRATOR'S SOUL

The AI agents follow a written doctrine — SOUL.md — that reads less like a config file and more like a great game master's philosophy. A few of its rules:

The Zork ProblemEvery prior digital RPG capped you at a finite verb set — "GET LAMP," "attack / flee / use item." A natural-language narrator removes the ceiling: you can attempt anything you can articulate. This is the whole reason the system exists.
AgencyThe player controls their character. The narrator describes the world, never the player's response to it. The test: if a reply has the player doing something they didn't ask to do, it's wrong.
Living WorldNPCs act on their own goals — especially villains. They scheme, leave, lie, or die without permission. The world doesn't pause when the players step away.
Cost Scales with DramaComputational effort follows narrative weight. A quiet walk through town is cheap; a charmed player perceiving a false reality earns the extra cycles.
Yes, AndWhen a player invents something that fits the genre and grants no mechanical advantage, canonize it. Emerge from a suspension pod and you've just created a suspension-pod facility others can visit. The world grows from play.
Cut the Dull BitsChekhov's gun, for scenes. If a scene doesn't force a decision, reveal something, or raise stakes — smash-cut past it. No complication, no scene.
The Guitar SoloWhen one player gets the spotlight, the rest of the table must never become a silent audience. Keep the solo short, keep the soloist reachable, give everyone else a part.
PRODUCT DIRECTION

The sharpest insight didn't come from the code — it came from watching who actually uses it. The paying customer isn't the player; it's the dungeon master. A forever-DM builds a world, brings their own playgroup, and the table shows up — exactly like a private tabletop game. That reframes the "internal" tooling (the world builder, the GM dashboard, the observability layer) as the actual product surface, not scaffolding.

From there, a creator economy: DMs author worlds with AI as co-author — collapsing time-to-playable from months to an evening — their playgroups pay to play, and standout creators earn through a partner program. The model I'm proudest of is single-hop royalties netted against your own play costs: if your world catches on, the royalties it earns first pay down your own table's bill, so a popular world effectively plays for free.

And the positioning is clean. The AI-DM field forked in two — freeform but rule-less (AI Dungeon) versus real mechanics but locked to D&D 5e (Friends & Fables). SideQuest is the only one with open natural-language action and a real mechanical scaffold and a swappable, non-5e rulebook — plus concurrent, asymmetric-information multiplayer a chat-room bot physically cannot do.

BY THE NUMBERS
5repo ecosystem
18playable worlds
115+ADRs
44message types
50+OTEL spans
3models routed
GENRES
  • Caverns & Claudes — high-fantasy dungeon crawl
  • Space Opera — sci-fi adventure
  • Spaghetti Western — morally grey anti-heroes
  • Tea & Murder — cosy Edwardian whodunit
  • Elemental Harmony — martial arts magic
  • Mutant Wasteland — post-apocalyptic
  • Road Warrior — vehicle subcultures
  • Neon Dystopia · Pulp Noir · Heavy Metal · Wry Whimsy
STACK
// engine
Python 3.12FastAPIuvicornpydantic v2WebSocketsAnthropic SDKPostgreSQLAlembicOpenTelemetry

// client
React 19TypeScriptViteTailwindThree.jsRapier

// media & infra
Z-Image (MLX)ACE-StepCloudflare R2Jaeger
THE REPOS
IN PLAY // solo · space opera · the kestrel
SideQuest in-session view — streaming narration on the left, the live Knowledge Journal tracking facts on the right, with an HP bar and ship readout
// A quiet turn aboard the ship Kestrel. Narration streams on the left with inline “knowledge gained” markers; the Journal on the right logs what the player has learned, tagged PLACE / PERSON / LORE. That clan-blue mug “jittering once, at no discernible impact” is a baited hook straight out of the design soul — a coal detail waiting to become a diamond if the player bites.