Discord Activity · Avatar Legends PbtA

The table
lives in Discord

Seven Stun Studios

Scene cards, character sheets, dice rolls, and AI-assisted trigger detection — all inside your server, without leaving the channel where the fiction happens.

GM Cockpit · The Siege of Ba Sing Se · Session 3
Arc Tracker
OZ
Commander Ozai
"The strong take."
Escalation Beats
6 —
Ozai captures the adviser.
Scene · The Courtyard
Can Pedro protect Lin before the captain reaches her?
P
Pedro
L
Lin
CA
Captain
Pedro stands between Lin and the captain. The alley exit is cut off.
Pedro · PreparedLin · Afraid
AI Prosthetic
Emergency Hook
Sonnet · full scene context
Trigger Candidates
Defend and Maneuver87%
"Pedro stepped between Lin and the soldier…"
Confirm
Dismiss
Pre-computed Hooks
The captain recognizes Lin from a wanted poster — this becomes personal.

Three load-bearing principles

Every decision in avatar-PbtA defers to these. They're not aspirational — they're load-bearing.

01
Players see the movie. The GM sees the machine.

Mechanical state lives behind the GM's screen. Players see fiction — scene cards, character portraits, dramatic questions. The same data point renders differently per surface. Discord Activities make this possible without a browser tab.

02
The bot detects, the GM decides, the player acts.

No mechanical event fires automatically from fiction. Haiku flags candidates. The GM confirms or dismisses. The player is notified in fictional language. Human authority is preserved at every step — the AI is a prosthetic, not a referee.

03
Seeds cascade. Models cascade. Authority cascades.

Visual style flows from campaign → kingdom → element → character → scene. AI compute escalates from regex → classifier → Haiku → Sonnet. Decisions flow from Sonnet → GM → player → backend → all surfaces. Everything composes.

"At any point, a new observer should be able to drop into the channel, read the last fifty messages, and watch a coherent scene unfold — not a mechanical readout."— The Observer Test, §9
The channel stays cleanThe bot speaks only on confirmed mechanical events. It never narrates. Never describes. The fiction stream is for fiction.
Mobile is the canonical targetCaio running a session from his couch on Android is the design target, not a degraded fallback. Touch-native, Safe Area-aware, asset-optimized.
Fiction first, mechanics secondApproaches replace stats. Conditions clear by acting in fiction. Triggers fire only when stake, opposition, and posture are all detectable — not just when someone types a keyword.

Two Activities, one bot

No browser tab. No extension install. Everything lives inside Discord — launched from the App Launcher with a single tap.

GM Cockpit
Arc tracker, scene queue, AI prosthetic panel, NPC manager, hard-moves list. The machine behind the screen.
apps/cockpit · GM only
Player View
Scene viewer, character sheet, dice rolls, balance slider, bonds. The movie the players watch.
apps/player · all players
Chargen Wizard
Sonnet interview → playbook → approaches → moves → bonds → portrait. Characters built from fiction.
apps/player · wizard flow
Campaign Graph
Zoomable session graph with arc outlines, transition summaries, and a 6-step campaign creation wizard.
apps/cockpit · GM only
NPC Producer
Quick-create or full-form. Sonnet fills principle and moves from name + role. JSON export for the state store.
packages/ui · GM tool
Narrator-Sidekick
The Discord bot. Reads channel fiction, surfaces trigger candidates to the GM, delivers ephemeral roll prompts.
apps/bot · always on

From fiction to mechanics and back

01
Players narrate

Pedro types as his character in the Discord channel. Normal prose. The channel is for fiction, not commands.

02
Bot listens

Narrator-Sidekick reads every message. A four-tier AI cascade — regex → classifier → Haiku → Sonnet — watches for move triggers.

03
GM decides

Trigger candidates surface in the Cockpit privately. The GM confirms or dismisses. No automatic mechanical effects from fiction.

04
Player rolls

An ephemeral bot message reaches the player with a roll button. Dice animate. The result band appears. Fatigue and statuses update.

05
Scene updates

State propagates to all surfaces simultaneously. The Scene Viewer evolves in place. The channel stays clean for the next line of fiction.

Built for one table first

avatar-PbtA ships as an Unverified Discord Activity for a private group of up to 25 members. Sign in with Discord to claim early access — your player profile and Discord account get linked in the same step.

What we collect
We read your Discord ID, username, and avatar — nothing else. Bot install happens after sign-in, scoped to one server at a time.