kiroku (記録) — Japanese for "record", "document", or "archive".
A simple, terminal-based personal journaling and note-taking tool written in Rust.
kiroku-tui helps you manage a collection of markdown notes directly from your terminal. It stores your notes in ~/kiroku and integrates with Git for easy synchronization.
- Terminal Interface: Clean TUI built with
ratatui. - Folder Support: Organize your notes into directories and navigate them with a file browser.
- Fuzzy Search: Quickly find notes by title across all folders.
- Content Search: Deep search within the body of your notes.
- Tag Search: Filter notes by tags defined in YAML frontmatter.
- Note Renaming: Rename existing notes directly within the app.
- Smart Sorting: Toggle between sorting by Date, Name, or Size.
- External Editor: Opens notes in your preferred editor (Vim, Nano, VS Code, etc.).
- Smart Git Sync: Built-in command to add, commit, and push changes. Skips redundant network calls if up-to-date.
- File Watching: Automatically updates the list when files are changed externally.
- Auto-Sync on Exit: Optional setting to automatically sync with Git when quitting.
- Theming: Fully customizable color schemes with built-in theme cycling.
- Clipboard Integration: Copy note content or file paths directly to your clipboard.
Ensure you have Rust and Cargo installed.
cargo install kiroku-tuicargo install --git https://github.com/gab-dev-7/kirokuNote: After installation, ensure that
~/.cargo/binis in yourPATHenvironment variable to runkirokufrom any directory.
Run the application:
kirokuOn the first run, it will create a ~/kiroku directory. You can initialize a git repository there if you want to use the sync feature:
cd ~/kiroku
git init
# Add your remote...Browser Mode (Default) View your notes and folders hierarchically.
- Use
handlto navigate in and out of directories. - Use
fto create new folders.
Search Mode
When you start searching (/, #, ?), the view switches to a flat list of all matching notes, regardless of their folder.
Normal Mode
F1: Open help popupn: Create a new notef: Create a new folderEnter/l: Edit selected note or Enter folderBackspace/h: Go up a directoryr: Rename the selected itemd: Delete the selected item (prompts for confirmation)s: Cycle sort mode (Date, Name, Size)t: Cycle built-in themes (Default -> Gruvbox -> Tokyo Night)g: Sync with Git (add, commit, push)/: Enter title search mode?: Enter content search mode#: Enter tag search modej/k: Navigate down/upCtrl+j/Ctrl+k: Scroll preview pane down/upy: Copy note content to clipboardY: Copy note file path to clipboardq: QuitF12: Toggle debug logs
Search Mode
- Type to filter notes
Enter: Keep current filter and return to listEsc: Clear search and return to browser view
kiroku supports tagging notes using YAML frontmatter at the top of your markdown files.
---
tags: [work, meeting, important]
---
# My Note Title
...Use # to filter your notes by these tags.
You can configure kiroku by creating a file at ~/.config/kiroku/config.toml.
Example config.toml:
# Command to open your editor.
# If omitted, defaults to $EDITOR environment variable or "vim".
editor_cmd = "nvim"
# Automatically sync with git when exiting the application.
auto_sync = false
# Default sort mode for notes ("Date", "Name", "Size").
sort_mode = "Date"
# Optional: Customize the color theme (hex codes)
[theme]
accent = "#89dceb" # Key UI elements
selection = "#bb9af7" # Selected item
header = "#89b4fa" # List headers
dim = "#6c7086" # Metadata/dates
bold = "#f38ba8" # Emphasized textContributions are welcome! Please check out CONTRIBUTING.md for guidelines on how to get started.
MIT License. See LICENSE for details.