A terminal-based Markdown journaling app with optional end-to-end encryption and multi-device sync.
Notema (/noʊˈtɛ.mɑː/) combines note with the Japanese concept of 間 (ma) — the pause, interval, or space between things, in time as well as on the page. Sync runs through file-syncing tools you already use, such as Syncthing, Nextcloud, or Dropbox.
Entries are plain markdown files with TOML front-matter, organized by date on
disk. Nothing is locked into a proprietary format — your journal is just a folder
of .md files (or .md.age files once encryption is on). It runs anywhere Rust
runs, including Android via Termux, and stays readable on light, dark, and
monochrome/e-ink terminals.
- TUI — three-pane browser (journals / entries / reader) with mouse and keyboard (arrows + vim keys) navigation, live rendered markdown, in-terminal image rendering, and entry metadata.
- Fuzzy search across the whole corpus, including metadata.
- Themes — TOML theme files with flat or bordered chrome, dark/light variants, a live-preview picker, and hot reload on edit.
- Rich metadata per entry — tags, people, activities, feelings, a mood score (-5…+5), and a location. Located entries also record the weather, air quality, and sun/moon data for that place and time.
- Built-in editor — write and edit entries in a fullscreen editor with markdown syntax highlighting.
- Day One import, photos and metadata included.
- End-to-end encryption — per-device age keys, a signed device roster, and an approval flow for new devices. Private keys never leave the device.
- Decrypted FUSE mount — browse an encrypted journal as a writable, decrypted filesystem.
Download a binary for your platform from the
releases page, or build from source —
see docs/BUILDING.md.
notema # launch the full TUI (walks through setup on first run)
notema log "Had a good day" # quick entry from the command line
notema log # compose an entry in the fullscreen editorNotema has no server of its own — keep your journal on one machine, or sync its folder with any file-sync tool you like and it appears on all your devices. With encryption on, that synced folder holds only ciphertext and public keys; each device's individual private key stays local, so whoever hosts the sync only ever sees ciphertext and can't read your entries.
- Usage — logging with metadata, location capture, Day One import
- Mobile (iOS / Android) — running under iSH and Termux, sync setup
- Encryption — setup, adding devices, key management
- Mounting (FUSE) — browse an encrypted journal as a filesystem
- Storage format — on-disk layout, front-matter, config, recovery
- Themes — gallery of the bundled themes
- Theme reference — theme file format and the full token reference
- Building — from source, cross-compile, FUSE builds
- Architecture — crate layout and dependency rules
- Development — checks, cross-builds, running the benchmarks
See LICENCE (EUPL v1.2).
- Weather and air quality data from Open-Meteo, under CC BY 4.0.
- Location geocoding — © OpenStreetMap contributors, via Nominatim, under the ODbL.
Run notema licenses to print these credits with the full license texts of every
third-party Rust dependency.
This was built for personal use and relies heavily on AI-generated code. While I've tested everything and use it daily, I take no responsibility for any issues you might encounter. Use at your own risk.