Warm graphite and terracotta. Rove's own identity, matched to the Claude Code palette.
Three in the box, ten more a command away.
Every panel below is drawn from a real theme file, the same JSON Rove loads at boot, not a screenshot someone re-tinted by hand. Pick one of the three bundled ones in Settings → General → Theme, install any of the rest with one command, or write your own. A theme is one JSON file, and there is no registry to get into.
Note 1 — Finish schedule All finishes, dark specimen
| Code | Finish | Class | Slots | Ground | Source | Specimen — ground · panel · border · text · primary · accent · success · warning · error |
|---|---|---|---|---|---|---|
| B-01 | claude | Bundled · default | 54 | #141413 | in the box | |
| B-02 | conductor | Bundled | 35 | #0a0a0a | in the box | |
| B-03 | tokyonight | Bundled | 50 | #1a1b26 | in the box | |
| H-01 | catppuccin | Hosted | 53 | #1e1e2e | rove.run/themes | |
| H-02 | dracula | Hosted | 50 | #282a36 | rove.run/themes | |
| H-03 | everforest | Hosted | 53 | #2d353b | rove.run/themes | |
| H-04 | gruvbox | Hosted | 53 | #1d2021 | rove.run/themes | |
| H-05 | kanagawa | Hosted | 53 | #1f1f28 | rove.run/themes | |
| H-06 | nord | Hosted | 50 | #2E3440 | rove.run/themes | |
| H-07 | opencode | Hosted | 50 | #161616 | rove.run/themes | |
| H-08 | osaka-jade | Hosted | 50 | #111c18 | rove.run/themes | |
| H-09 | rose-pine | Hosted | 53 | #191724 | rove.run/themes | |
| H-10 | solarized | Hosted | 53 | #002b36 | rove.run/themes |
Specimens are the specified values, resolved out of each finish's own JSON in dark mode — the hex is the spec, not decoration. SLOTS is how many the file fills; the rest fall through. Hosted source is rove.run/themes/<finish>.json · see revision table. Total in schedule — 13 finishes13 themes3 bundled + 10 hosted
Ships with Rove.
Rove keeps its bundled set deliberately small. Open Settings with ctrl+, and pick one; nothing to install. Each preview paints the sidebar, the selected task, and a diff with that theme's own slots, so what you see is the contrast you'll actually get. Every theme also defines a light mode; the previews show dark.
Ten more, one command away.
These live here as plain JSON instead of inside the binary, which is all a theme ever is. Copy the command, run it, restart Rove. Several of them shipped bundled in earlier versions; nothing changed about them except where they're stored.
Note 2 — Specimens, bundled B-01 to B-03 · no install
Near-black and near-white. No hue competes with your diff. The one to reach for on a projector.
Indigo night with a coral accent. Pairs with the tokyonight setup you probably already run in nvim.
Three entries, one markup block, one rule set. The only thing that differs between them is the thirteen custom properties on the card, taken from that finish's own file. A row is selected by filling it with primary and setting its text to selectedListItemText, which every one of the thirteen resolves to the ground — which is why a finish that spends primary on near-white reads as a plain inversion.
Note 3 — Specimens, hosted H-01 to H-10 · one command
rove theme add https://rove.run/
Soft pastels on a cool grey base, mauve signature, nothing shouts. Ships Mocha for dark and Latte for light.
The one everybody already has muscle memory for. Highest-saturation set here.
Desaturated forest greens, tuned for long sessions on a warm background.
Retro groove: warm browns under a signal orange. The highest-contrast warm set, and the one most people mean by "terminal colors".
Inspired by Katsushika Hokusai's wave: ink blues over sumi black, lotus for light.
Arctic blue-grey, low contrast by design. The calmest option for long sessions.
Neutral charcoal with a sand accent. Familiar if you came from opencode.
Deep jade ground with a mint signal color. The most opinionated set, and the loudest running indicator.
Low-saturation iris and rose on near-black plum. Quiet without going grey; Dawn is the light side.
The 2011 original that started precision terminal palettes. Both sides share one accent set.
Each entry carries its own supply line. Click it to take the command.
Note 4 — Where a slot lands Fig. 3-1
A slot is a named place in the interface, not a colour with a mood. Fill primary and you have changed the selected row, the focused pane indicator and the markdown headings at once, because they all read the same slot.
You do not have to fill every slot. The resolver guarantees twenty-five of them, and anything left out falls through to a neighbour: borderActive → border → text, backgroundPanel → background, diffAdded → success. Only text and background have nothing left to fall to.
Note 5 — Specimen of the format Both slot forms
// ~/.rove/themes/darkside.json { "$schema": "https://raw.githubusercontent.com/sma1lboy/rove /main/packages/kobe/src/tui/context/theme /theme.schema.json", "defs": { "brand": "#cc785c" }, "theme": { "background": "#141413", "text": "#eae7df", "primary": "brand", "accent": { "dark": "#cc785c", "light": "#c96442" } } }
The file name is the finish name. A user file with the same name as a bundled finish wins.
A theme is one JSON file.
Drop any *.json into ~/.rove/themes/ and it appears in the picker at next boot. Name it after a bundled theme and yours wins. You don't have to fill every slot. Missing ones fall through (borderActive → border → text), so a dozen lines is already a usable theme.
defs is an optional named palette a slot can reference by name. A slot value is a hex string, a defs key, or a { dark, light } pair. When you use the pair form, both sides are required. The $schema line is what gives you autocomplete in your editor.
Worked examples: claude.json fills 54 slots off 42 defs; conductor.json fills 35. Copy either and start deleting.
Note 6 — Application and supply Fig. 3-2
Share a URL. That's the whole registry.
There is no submission queue and no manifest to write. Installation reads a raw file over HTTPS, so anything you can link to is installable: a repo, a gist, your own host.
- Commit the JSON to a public repo or gist.
- Hit Raw on GitHub and copy the URL. It looks like
raw.githubusercontent.com/<you>/<repo>/main/<theme>.json. - Tell people to run
rove theme add <raw-url>. It validates the JSON before writing and refuses to clobber an existing theme without--force. - Tag the repo
rove-themeon GitHub so it's findable, and open a PR against this page to get it listed with a preview.