hypercross 614a0d31c1 feat(cloud-empress): abstract and expand complication table
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.
2026-09-13 18:02:29 +08:00
2026-09-13 16:41:08 +08:00
2026-09-13 16:41:08 +08:00

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. See docs/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.

S
Description
No description provided
Readme
186 KiB
Languages
JavaScript 100%