grimoire a terminal writing desk for novels github
what it is

what it is

Grimoire is a cozy little writing desk for your novel, and it lives right in your terminal. It understands how a book comes together, from parts and chapters down to scenes and word goals, and it keeps every word you write in plain files you can open with anything, even cat.

Grimoire in the Rainbow theme: a book's outline under a spellbook, a scene being written, the Pomodoro and the music pane
01 — the desk, in Rainbow: the outline, the prose, the Pomodoro, the music

Nineteen themes, and you can change them any time — F9 in the app. Try them on this page: press t, or .

When the book is done it compiles a submission manuscript in standard format, a print-ready paperback and an EPUB — and while you write it keeps the book safe in whatever syncs it: Dropbox, Google Drive, pCloud, Box.

Rust and Ratatui. One binary. macOS, Linux and Windows. Made by Catfinity Studios.

why

Most novel apps make you pick. Some tuck your manuscript away in a database you can't open without them. Others are lovely text editors that have no idea what a chapter is.

Grimoire wanted both: an app that understands your book, and files that stay yours. So your folders are your outline. There's no hidden index, which means there's nothing for two computers to squabble over when your book syncs. Moving a scene is just renaming a file, and backing up is just copying a folder.

And if Grimoire ever disappears, your book doesn't. That promise came first, and everything else was built around it. It's why nothing is ever really deleted, too: there's autosave, recovery, history for every scene, and a trash you can undo from.

Grimoire only reads a few keys from a scene's frontmatter and never rewrites the block, so Obsidian can keep whatever fields it likes in there.

on disk

Folders are containers, at any depth. Files are scenes. Order comes from the name.

the-salt-archive/
├─ novel.toml                    title, targets, your details
├─ manuscript/
│  └─ 01-Part-One/
│     ├─ 01-Chapter-One/
│     │  ├─ 01-Scene-One.md          a scene
│     │  └─ 02-Scene-Two.md
│     └─ 02-Chapter-Two/ …
├─ characters/wren.md            the notebook
├─ places/  notes/  research/
├─ front-matter/  back-matter/    by edition
└─ .grimoire/                    history, recovery, trash

A leading 01- orders the file and is stripped for display.

---
title: Scene One
pov: Wren
status: draft
synopsis: Wren comes back to the archive at night.
target: 1500
---

the desk

Escthe menu — everything is in it, down to Quit
F1 · ?the help — every feature explained, opened where you are
Ctrl-Kfind anything: actions, scenes, notes, themes
Tabswitch pane
n · c · pnew scene · chapter · part, named and placed for you
r · drename · delete (to the trash, and undoable)
Ctrl-Dfocus mode — just the prose, centred
Ctrl-Tevery %% note %% and TK in the book
vanother scene beside this one, read-only
F8spelling — or click the underlined word
Ctrl-Z · Ctrl-Yundo · redo, in the prose and in the tree
F9themes — nineteen, each with its own world, or make your own
F2the Pomodoro timer
Focus mode in the Kanagawa theme: only the prose, centred
02 — focus mode

Every feature is explained inside, too: F1 opens the help on the topic for wherever you are, and typing searches all of it.

The help inside Grimoire: the topics on the left, Writing open on the right
03 — the help, opened from the page

Notes between %% marks and TK placeholders never reach the book or the word count. Vertical movement is visual, not logical: Down moves one screen row inside a wrapped paragraph, which is the only behaviour that feels right for prose.

compile

Export compiles a submission manuscript in William Shunn's standard manuscript format.

The first three pages of a compiled manuscript: a title page with contact block and word count, Part One and Chapter One on the opening page, a page with a centred # scene break
04 — a manuscript for agents and editors
  • your contact block, byline and a rounded word count on the title page
  • Surname / KEYWORD / page on every page after it
  • chapters a third of the way down, a centred # between scenes, END
  • curly quotes and real dashes — your files are left as you typed them
  • samples an agent asks for: chapters 1–3, or the first N words
  • Times or Courier, Letter or A4, and a PDF through LibreOffice
A spread from a 6x9 paperback: a left page with the author's running head facing a chapter opener with a small-caps lead-in
05 — a print-ready paperback, 5×8 to 6×9

The same book compiles as a paperback — mirrored margins with the gutter KDP asks for, running heads, chapters on the right-hand page, justified and hyphenated — and as an EPUB with a cover, contents and metadata.

Empty scenes and chapters are left out, and every TK is listed before anything is written.

sync

A book is a folder, so any sync service carries it. Grimoire makes sure none of them can lose your words.

Settling a Dropbox conflict copy: the scene on the left, the copy on the right, and the choice to take the copy, keep the scene or keep both
06 — two devices wrote one scene; nothing was lost
  • Nothing is written over. Every save checks the file first; a change from elsewhere is kept beside the scene.
  • Conflict copies from Dropbox, pCloud, Google Drive, Box, OneDrive, iCloud and Syncthing are recognised, never counted or exported twice, and settled side by side.
  • A file that isn't downloaded yet shows as offline and is never saved over.
  • Names are safe on every service and system, and writing history lives outside the synced folder.

Checked against each service's documented behaviour, and on a real pCloud Drive.

themes

Nineteen themes, and you can switch any time with F9 — the picker previews each one as you move through it. This page switches too; try one:

Each theme brings its own world to the pane under the outline. The Pomodoro is the timer — the sun's position is the clock, and break time is night.

Nineteen small Pomodoro scenes, one per theme: a tower, snowy peaks, a castle, cats, the great wave, a neon grid and more
07 — every theme's Pomodoro, mid-session

→ turns it into the Visualizer: a spectrum of whatever the computer is playing, drawn in the theme's own style, with the song's name on it.

Nineteen music visualizers, one per theme: meters, beads, frost, a neon skyline, a rolling wave, a synthwave grid
08 — every theme's Visualizer

Rainbow's colours flow round the wheel every twelve seconds. A custom theme mixes and matches: any theme's world with any theme's Visualizer.

music

Music is off until you turn it on. Four sources:

YouTube Musicdrives th-ch's desktop app through its API server — queue, search, your playlists
Spotifydrives the desktop app (macOS and Linux)
JellyfinGrimoire plays it — your files, your server
PlexGrimoire plays it — your files, your server
┌ ♪ YouTube Music · F7 ──────┐
│▶ Low Tide                  │
│━━━━━━━━─────────── 2:11 ↻ │
└ [ prev · space ⏯ · ] next ─┘

Grimoire never extracts streams from YouTube Music or Spotify: it presses the buttons of the app you already pay for.

install

macOS and Linux:

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/kelsierbot/GrimoireTUI/releases/latest/download/grimoire-tui-installer.sh | sh

Windows (PowerShell):

powershell -ExecutionPolicy Bypass -c "irm https://github.com/kelsierbot/GrimoireTUI/releases/latest/download/grimoire-tui-installer.ps1 | iex"

Or with Homebrew:

brew tap kelsierbot/tap brew trust kelsierbot/tap brew install grimoire

Then open a new terminal and run grimoire. No Rust, no build tools. From source: cargo install --path . in a clone of the repo.

Linux needs glibc 2.35+ and ALSA's audio library, which every desktop distro already has. PDFs need LibreOffice.

license

Grimoire is free and open source, under the MIT License. Here's what that means in plain words:

  • Use it for anything, commercial work included. Write with it, sell what you write, use it at your day job, or build it into something you sell. All of that is welcome.
  • Credit is required. If you share Grimoire, or ship something built on its code, keep its copyright notice and license with it, so folks can see where it came from.
  • Your books are yours. Everything you write in Grimoire belongs to you, and it never has to mention Grimoire.
  • A donation is appreciated, never required. If Grimoire has helped you and you'd like to give something back, there's Ko-fi. It all goes toward Grimoire's development.

In the app it's l in About Grimoire…, or Ctrl-K › License. Copyright (c) 2026 Josh King.

status

v0.5 — written in daily. Outlining, writing, notes, history, sync safety, and compiling for agents, print and e-readers are all here.

Not yet:

  • the phone app — running on Android, not released
  • spellcheck in languages other than English
  • Spotify on Windows

MIT License. Issues and patches welcome at the repo.

themes

↑↓ preview · ↵ choose · esc cancel