614a0d31c19c5df84835a218b4194e9c6e5efc4e
The d6 table was rolled on every oracle --complicate, so its six entries repeated often and three of them named specific resources, creatures, or factions that did not fit every scene. Replace them with twenty abstract themes and widen the range to a d20.
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%