Free · Works Offline

Your Mist Engine
table companion

Campaigns of the Mist is an unofficial, fan-made workspace for City of Mist, Metro: Otherscape, and Legend in the Mist, built from scratch by a player, for the players.

Open the AppView on GitHub
Scroll to explore

The story behind it

It started as a character sheet. Then I got carried away.

I built Characters of the Mist because I wanted a quick, easy-to-use character sheet for the Legend in the Mist tinderbox demo that wasn't a PDF. It was a small, personal thing, for just me and my group. A character manager, nothing more. I made it public because I thought it could help others with their games.

Then, I wanted to upgrade it. For my personal whims, but also to fulfill some user requests. It turned from a rigid 4-themecards character sheet into a fully reorderable dynamic sheet, and a complete file system in the Drawer to store components.

And then... I got carried away. What was Characters of the Mist isn't just a character sheet anymore. It now has whiteboards, full markdown notes, and a linking system to make your whole campaign directly within. So, it was time for a rebrand, and thus, what started as a small utility for me and my friends became this. Campaigns of the Mist

Made by one person

Just me, all alone. With the precious help of the localization contributors.

Private by design

No server, no account. Everything lives in your browser, and the app works offline.

I hear you

Every feature in the app exists either because it was a whim of mine, or someone asked for it.

What's inside

Everything at the table, in one place.

The app teaches itself with a full series of in-app tutorials once you open it. But here's a quick overview.

Character Sheets

Modular, game-aware sheets with flexible cards: trackers, powers, tags, crew. Arranged exactly how you play.

Freeform Boards

An infinite canvas for your mind maps, NPC webs, and session notes. Drop cards, write freely, pin anything, and draw on top of it all.

Notes Editor

A full-featured markdown text editor for session logs, lore, and secrets. Your notes. Your formatting.

Dice Tray

Roll dice directly in the app's own Tray, with configurable rolls and modifiers, and a history of your past results.

Navigator

A pane that crawls through every link and portal you created within the app, and gives you a full hierarchy to navigate through.

Drawer & Workspaces

A full file system for every character and campaign. Multi-tab workspaces so you can switch boards or sheets without losing anything.

Supported games

Three games. One app.

Each game gets its own color theme and card types. The app knows which table you're sitting at.

Mythical Investigations

City of Mist

The one that started it all. Logos and Mythos cards, status trackers and Danger cards, all wrapped in that orange and purple noir atmosphere.

Cyberpunk Adventures

Metro: Otherscape

Mythos, Self, and Noise cards in a high-contrast neon shell. Electric lime, deep navy, and that unmistakable dystopian edge.

Rustic Fantasy

Legend in the Mist

The earthy parchment and leather tomes of a rustic fantasy world. Because your wanderer of the Dales deserves a proper home.

City of Mist, Metro: Otherscape, and Legend in the Mist are games by Amit Moshe / Son of Oak Game Studio. Campaigns of the Mist is an unofficial, fan-made project and is not affiliated with or endorsed by Son of Oak.

No account. No server.
No surprises.

Every character sheet, board, and note lives entirely in your browser's local storage. There is no cloud. There is no sync. Your campaign is yours alone.

Works offline

By caching the full app, it can run even mid-dungeon with no signal.

Zero tracking

No analytics, no ads, no account creation required.

Installable PWA

Add it to your home screen on any device. It feels like a native app.

Open the App, it's free

Lend a hand

Speak another language ?
Help me translate it.

I've made the app display in English and French. But, as much as I'd love to, I don't speak every language ! If you want to help, it's simple.

  1. Grab messages/en.json on GitHub, that's the source of truth for every bit of text to localize.
  2. Copy it, translate the text inside, rename it with your language's ISO-2 code, and send it back as a pull request.
  3. Not comfortable with Git ? Just ping me on the Tools of the Mist Discord, we'll sort things out together.

You don't have to translate everything. Anything you skip quietly falls back to English, so even a half-finished language genuinely helps.

Spoken so far

  • enEnglishAltervayne
  • frFrançaisAltervayne
  • deDeutschMarkus Raab
  • esEspañolSalvador Pérez Martín
  • +Your language ?