Point it at the folder
Pick a Campaign Vault on disk. The lens watches it and reloads live, so it keeps up while apps export and you edit in Obsidian next door.
Your campaign lives in a folder of markdown. This is the lens that reads all of it — the atlas, the cast, the factions and their secrets, the work orders, the session log — and deals tonight's screen from what is actually written down.
In development (0.1.x) · desktop builds for Windows, macOS & Linux land on this site · no account, no cloud — the vault never leaves your machine
Dungeons keys the sites, Hexes lays out the regions, and everything lands in one folder. Campaigns is the GM's screen over that folder — live, cross-referenced, and honest about what it doesn't know.
Pick a Campaign Vault on disk. The lens watches it and reloads live, so it keeps up while apps export and you edit in Obsidian next door.
Dashboard, region atlas, entity tables, and every note with its provenance, references, generated fences and backlinks laid bare.
Previously-on, the cast as chips, encounter and weather tables, monster statblocks, the quest board, and a campaign clock you advance with one click.
Reveal chips control what the table knows; one button derives a player-safe vault. The commission board hands stub sites to Dungeons as work orders.
The desktop shell shipped without a general write channel — there is no code path that could overwrite your prose. What writing exists is confined to two sanctioned lanes with the file's own state as a guard, so a surprise edit from another app or your editor means no write, never a clobber.
Everything, tolerantly. Incomplete vaults are fine; dangling references, duplicate ids and stale indexes are surfaced in their own table instead of thrown.
Only what the spec marks derived or sanctioned: the player-safe export, reveal states, the campaign clock, faction goal checkboxes, tonight's session-note skeleton.
Every edit is frontmatter surgery, applied only if the file still reads exactly as it did. Ambiguity fails closed.
Your prose, other apps' managed regions, foreign files in the player tree, or anything outside the folder you picked.
Obsidian stays your editor. This app earns its place with the pictures a text file can't draw: the map painted from frontmatter, the graph with its secrets dashed, the boards and dashboards across the whole cast.
Previously-on from the session log, the cast as chips, the region's travel rules, encounter tables with monster statblocks at hand, weather by climate band, and the in-world date one click from advancing.
Every region renders as its hex map — same grid math and terrain palette as Hexes — with settlement and site glyphs, a pennant on the party's hex, and click-through to the notes.
Provenance headers, reference chips with dangling ones flagged, generated prose framed with its generator's name, your own words outside the fences, and backlinks underneath.
The faction and NPC graph draws declared edges with GM secrets dashed and directed kinds arrowed; the quest board tracks objectives, givers and dangling threads.
The commission board lists every work order and every stub still waiting for one. Health counts unused cast, orphans and stale indexes; Problems names what's inconsistent. Counts, not nags. See the views with a real vault loaded.
Reveal chips sit on every note, section and secret edge. The player-view toggle re-renders the whole app through the spec's leak rules — unrevealed places vanish from search as if nothing were there — and one button derives a player/ vault you can hand to the table.
The vault format is public and the guarantees are architectural, so the campaign outlives any app in the family — this one included.
Each file has one owner. Notes minted by an app stay that app's; cross-references live in frontmatter, never in app state.
Built for the second monitor. The lens watches the folder and repaints as apps export and you edit — Obsidian on one screen, Campaigns on the other.
Renames don't break the world. Navigation resolves stable ids before paths, exactly as the spec says to.
Useful with zero apps installed. Git, grep, a text editor and Obsidian all work on the same folder, forever.
Campaigns on Automatic is built in the same shop and release pipeline as its siblings, and it already reads every vault they write. The first public desktop builds land on the releases page; the vault format it reads is publicly specified today.
Campaigns on Automatic is an original game aid by Kyle Norton for use with GURPS and Dungeon Fantasy Roleplaying Game from Steve Jackson Games. It is not official and is not endorsed by Steve Jackson Games.
GURPS and Dungeon Fantasy Roleplaying Game are trademarks or registered trademarks of Steve Jackson Games. All rights are reserved by Steve Jackson Games. This free, non-resale game aid uses those marks under the SJ Games Online Policy; no SJ Games art, logos, or trade dress are hosted here.