acf1b2cf95d4ca0ca374ef9e0b128384df98b1e4
run-session now checks the outcome against established facts and narrates only what the PC can perceive, with retconning as a last resort.
solo-journaling
A workspace for solo TTRPG journaling with an AI GM. You describe what your character does; the agent consults the oracle, narrates the outcome, and writes it all to a session log.
How it works
- You talk, the agent writes. All files are produced by the agent. You never need to edit anything by hand.
- The oracle is a d6. Yes/and, yes, yes/but, no/but, no, no/and. See
docs/oracle.md. - Games are packages. Each game under
games/ships its rules, spark tables, character backgrounds, and tool scripts. Seedocs/games.md. - Campaigns are play state. Each campaign under
campaigns/holds the PC, the world, the clocks, and the session logs, and names the game it runs.
Getting started
pnpm install
pnpm journal games
pnpm journal new-campaign my-campaign --game generic
Then tell the agent to start a session. It reads AGENTS.md for how to run
things.
Layout
AGENTS.md how the agent runs a session
docs/oracle.md oracle and table mechanics
docs/games.md the game package contract
games/<id>/ a game: rules, tables, characters, scripts
campaigns/<name>/ play data: premise, PC, world, state, sessions
packages/oracle/ dice, oracle, and CSV table engine
packages/cli/ the `journal` command
Commands
pnpm journal roll sparks --campaign my-campaign
pnpm journal oracle "Is the door locked?" --complicate --campaign my-campaign
pnpm journal background --campaign my-campaign # a command from the generic game
pnpm journal dice 2d6+1
pnpm journal tables --campaign my-campaign
pnpm journal check --campaign my-campaign
pnpm journal games
Tables are looked up in the campaign first, then in its game, so a campaign can override a single table without copying the rest.
Languages
JavaScript
100%