catcher
https://github.com/user-attachments/assets/5a060469-40c5-4fd8-a17c-cab2e60b6f96
A minimal note-taking app for the terminal. Local-first, no accounts, no sync: your notes are a folder of .md files in ~/catcher, so grep, git and Obsidian work on them too.
Called tinynote until 0.9. Existing
~/tinynoteand~/.config/tinynotefolders are still picked up.
Install
brew install tinycomputer-io/tap/catcher
or cargo install catcher. Then run catcher.
Using it
- ^K is the command palette: new, open, delete, rename, move to folder, reading view, help, settings, quit.
- ^O opens a note: every folder, most recently opened first, fuzzy-searched by filename. Tab flips it to a folder tree.
- ^N makes a note. The filename follows its first line until you rename the file yourself.
- ^P flips between the live-preview editor and the rendered page. Images draw inline in Ghostty, kitty and iTerm2.
[[wikilinks]]work like Obsidian's. ⌥⏎ follows one, ⌥P peeks at it, ^B / ^F go back and forward. The reading view lists the notes that link here at the bottom.- A
```mermaidfence is drawn as text: flowcharts and sequence diagrams, in box-drawing characters, no images and no network. Other kinds keep their source under a label. - Callouts, front matter, tables wider than the page (they pan sideways), checkboxes and
==highlights==all render. - Notes autosave. Mouse works: click, drag to select and copy, scroll. ^V pastes a clipboard image as a PNG.
CLI
catcher open the note you last had open
catcher groceries open the note that best matches; create it if none does
catcher add "buy milk" write a new note and print its path
catcher ~/vault open the TUI rooted at that folder
catcher path print the notes directory
catcher --keys show what your terminal sends for each key
Keys
| Key | Action |
|---|---|
^K |
Command palette |
^O |
Open a note (Tab for the folder tree) |
^N |
New note |
^P |
Reading view |
^S |
Save now |
^Z / ^Y |
Undo / redo |
^C ^X ^V |
Copy / cut / paste |
⌥⏎ / ⌥P |
Follow / peek at the [[wikilink]] under the cursor |
^B / ^F |
Back / forward |
^/ or F1 |
Help card |
^, |
Settings |
^Q |
Quit |
Editing is macOS-style: ⌘←/⌘→ line ends, ⌥←/⌥→ by word, ⇧ to extend a selection, ⌘A select all. Every key is rebindable in the settings; ^K answers to ctrl or cmd.
Settings
^, opens ~/.config/catcher/settings.md as a note; ^S applies it. It covers the notes and attachments folders, theme (auto, dark, light) and colours, page width, borders, status bar, autosave delay, tab width, front matter, table style, wikilinks, linked mentions, how far ^O looks, and every key binding. Each line has a one-line hint beside it. CATCHER_DIR overrides the notes folder.
Development
cargo run # against ~/catcher (set CATCHER_DIR to test elsewhere)
cargo test
cargo clippy
Rust, ratatui + crossterm. src/editor.rs is the buffer, src/md.rs live-preview styling, src/render.rs the reading view, src/mermaid/ the diagram renderer, src/config.rs the settings note. Every colour lives in the theme module at the top of src/md.rs.
License
MIT