shiki (私記)
Rust · TUI · Git-native

Your notes.
Your terminal.
Actually yours.

shiki is a three-pane, Yazi-inspired note-taking app that never leaves the terminal. Every notebook is its own git repository, every note has real version history for free, and every pixel of the UI — including this page — is themeable.

or cargo install shiki-cli — see all install options
shiki — demo
Animated demo of shiki: browsing notebooks and nested folders, global and in-notebook fuzzy search, tags, multi-select batch delete, creating and moving folders, writing a full note, a git commit, and live theme switching
Make it yours

12 built-in themes. Pick one below — this whole page changes with it.

These are the exact same palettes shipped in shiki itself (down to the hex value) — not a marketing approximation. What you see here is what you get in the terminal.

shiki — theme: gruvbox-dark
shiki TUI with the selected theme applied

Live screenshot shown for this theme.

See it move

A real, scripted tour — not a 3-note toy example.

Three notebooks, ~30 notes, folders nested two levels deep — global and in-notebook fuzzy search (with a real cross-notebook jump), tags, real multi-select with a batch delete, creating and moving folders, writing a full note from scratch in the inline editor, a git commit, live theme switching, and the which-key command palette, all recorded straight from the terminal with VHS, so it's exactly what you'd see running it yourself.

shiki — demo
Animated demo of shiki: browsing notebooks and nested folders, global and in-notebook fuzzy search, tags, multi-select batch delete, creating and moving folders, writing a full note, a git commit, and live theme switching
Why shiki

Notes software that respects how you actually work.

Most note apps bolt sync, versioning, and organization on top as separate systems you have to trust. shiki builds all three on top of something you already trust: git.

Notebooks are real git repos

Not a database, not a proprietary sync format — each notebook is an independent git repository from the moment you create it. Push it, clone it, inspect it with plain git log, host it anywhere.

Real per-note version history

Every commit that touched a note is browsable and revertible straight from the TUI — because it's the actual git history, not a bolted-on versioning system that can drift from what's on disk.

100% keyboard, fully remappable

Yazi-inspired modal navigation (hjkl, visual mode, leader key) with every binding defined in config.toml. Nothing hardcoded except the basics.

Responsive 3-pane layout

Wide terminals get the full Notebooks / Notes / Preview layout; narrow or square ones stack panels or collapse to a single focused view — no broken rendering at any size.

Auto-sync, your way

Per-notebook policy for auto-commit and auto-push, robust HTTPS/SSH auth reusing your system's own git credential store, and automatic fallback to the remote's real default branch.

Self-updating, self-diagnosing

Check for a new release and install it without leaving the TUI. shiki doctor diagnoses your setup — config, git, editor, terminal — even when the config itself is broken.

Get started

Install

Every tagged release publishes prebuilt binaries for Linux, Windows, and macOS (Intel + Apple Silicon), plus a SHA256SUMS.txt.

Arch Linux (yay / paru)

yay -S shiki-bin

or yay -S shiki to build from source instead of the prebuilt binary.

Cargo (any platform)

cargo install shiki-cli

Scoop (Windows)

scoop bucket add sazardev https://github.com/sazardev/shiki
scoop install shiki

Prebuilt binary

Download from the latest release,
extract, and put it on your $PATH.

See the full README for every install method and upgrade notes.

Learn more

Documentation

Every keybinding, every CLI command, the full config.toml schema, note format, and included themes — one complete reference page, extracted directly from the project's own source of truth.

Read the full documentation →
What's new

Changelog

Pulled live from CHANGELOG.md on main — always up to date with the repo, never duplicated here by hand.

Loading changelog…

Full changelog on GitHub →