# hmm - Minimalist CLI Note-Taking ## Overview hmm is a minimalist command-line note-taking application written in Rust that prioritizes speed and time-based organization. Unlike traditional journaling tools, it stores notes in a machine-readable format indexed by RFC3339 timestamps, optimized for quick retrieval rather than human-readable formatting. The tool embraces an append-only, immutable design philosophy where notes cannot be edited or backdated once created, making it ideal for developers who want frictionless thought capture without leaving the terminal. ## Key Features - **Three-Binary Architecture**: Separates concerns with `hmm` (write), `hmmq` (query), and `hmmp` (pipeline formatter) - **RFC3339 Timestamp Indexing**: Unambiguous date formatting with automatic timestamp creation - **Lightning-Fast Queries**: 13-565ms performance range for time-based searches - **Append-Only Design**: Immutable notes create natural audit trail (cannot edit or backdate) - **Handlebars Templating**: Customizable output formatting with built-in helpers for dates, colors, indentation - **Zero External Dependencies**: Compiled Rust binary with no runtime requirements - **Machine-Optimized Storage**: File structure designed for parsing speed over human readability - **Cross-Platform**: Works on Linux, macOS, Windows via Rust - **Flexible Queries**: Search by time range, content, regex patterns, or get random entries ## Use Cases - **Quick Thought Capture**: Record ideas during development without context switching from terminal - **Command Logging**: Document shell commands and snippets with automatic timestamps - **Debugging Notes**: Track debugging sessions with precise time-based indexing - **Micro-Journaling**: Brief daily observations for developers who live in the CLI - **Audit Trail**: Immutable notes provide reliable record of when thoughts occurred - **Terminal Workflows**: Integrates seamlessly with [[Blink Shell vs Termius|terminal sessions]] and remote development - **Pipeline Integration**: Use `hmmp` to integrate notes into shell scripts and automation workflows ## Platform Support - **Desktop**: Linux, macOS, Windows (any platform supporting Rust) - **Installation Methods**: - Cargo (recommended): `cargo install hmmcli` - From source: Clone repository and run `cargo install` - Arch Linux: `yay -S hmm-bin` (AUR) - **Configuration**: Default storage at `~/.hmm` (customizable with `--path` flag) - **Editor Integration**: Uses `$EDITOR` environment variable or `--editor` flag ## Pricing - **Free and Open Source**: MIT License - **No Subscription**: One-time installation via package manager - **Community Maintained**: Active development on GitHub ## Installation ```bash # Primary method - via Cargo cargo install hmmcli # From source git clone https://github.com/samwho/hmm cd hmm cargo install # Arch Linux (AUR) yay -S hmm-bin ``` ## Usage Examples ```bash # Quick inline note hmm hello world # Long-form note in editor hmm # View all notes hmmq # Last 10 entries hmmq --last 10 # Entries from specific year hmmq --start 2019 --end 2020 # Search by content hmmq --contains keyword # Regex search hmmq --regex '(pattern1|pattern2)' # Random entry hmmq --random # Count entries hmmq --start 2019 --end 2020 --count # Custom formatting with Handlebars hmmq --format '{{ datetime }}: {{ message }}' ``` ## Technical Details - **Language**: Rust - **Package Name**: hmmcli - **Current Version**: 0.6.0 (June 2023) - **License**: MIT - **Author**: Sam Rose ([@samwho](https://github.com/samwho)) - **Key Dependencies**: structopt (CLI), chrono (datetime), handlebars (templating) - **Performance**: Sub-second queries (13ms for random access, ~565ms for full-year regex) - **Storage Format**: Machine-optimized, timestamp-indexed files - **Binaries**: hmm (write), hmmq (query), hmmp (pipeline), hmmdg (utility) ## Comparison with Alternatives ### vs jrnl (Traditional CLI Journaling) - **hmm advantages**: Unambiguous RFC3339 dates, faster time-based queries, zero dependencies, flexible output templating - **jrnl advantages**: Built-in encryption, can backdate entries, native tagging/starring, human-readable files, post-creation editing ### vs Plain Text Files - **hmm advantages**: Structured time-based indexing, built-in search/filtering, no manual organization, fast temporal queries - **Plain text advantages**: Complete flexibility, universal compatibility, can edit freely ### vs [[Obsidian]] or Rich Note Apps - **hmm advantages**: Extreme speed, CLI-native workflow, zero friction capture, append-only audit trail - **Rich apps advantages**: Backlinking, rich formatting, GUI, knowledge graph, bidirectional links, visual organization ### vs [[Codex CLI]] (AI Command Tool) - **hmm focus**: Note-taking and thought capture with time-based retrieval - **Codex focus**: Natural language to shell command translation - **Complementary use**: hmm for capturing ideas, Codex for executing commands ### vs [[Pieces.app - AI Developer Memory Tool|Pieces.app]] (Snippet Management) - **hmm focus**: Temporal notes and thoughts with immutable history - **Pieces focus**: Code snippets with AI search and context - **Complementary use**: Pieces for reusable code, hmm for temporal thoughts ## Integration with Workflows ### PARA Capture System hmm serves as an alternative to mobile capture methods described in [[Guide to My Vault's PARA System]]. For developers working in terminal sessions, hmm provides instant CLI-based capture that can later be processed into the PARA structure during review sessions. ### Quick Capture Philosophy Similar to the goals outlined in [[Building an AI-Enhanced Quick Capture System for Obsidian]], hmm eliminates friction by making note capture instantaneous from the command line. Instead of reaching for a phone or switching to a GUI app, terminal users can capture thoughts without breaking flow. ### Knowledge Management for ADHD As discussed in [[Knowledge Management for the ADHD Brain]], reducing friction in the capture process is critical for maintaining momentum. hmm exemplifies this principle for CLI users by making thought capture as simple as typing `hmm [thought]`. ### Small Automations Compound hmm represents the type of small productivity automation discussed in [[The Compound Effect of Small Automations]]. Each saved context switch compounds over time, and hmm's instant capture saves dozens of context switches daily for terminal-focused developers. ## Related Tools - [[Slash]] - Modern CLI productivity tool - [[Fabric AI Framework]] - CLI framework for AI operations - [[Tips for using Claude Code]] - CLI-based development workflows - [[Harvesting Ideas with Digital Gardens]] - Capturing "firefly thoughts" concept ## Remarks hmm is a deliberately opinionated tool that trades flexibility for speed and simplicity, making it ideal for developers who value frictionless capture over rich formatting or editability. Its append-only, timestamp-indexed design creates a natural audit trail of thoughts and ideas as they occur, while the three-binary architecture keeps the tool fast and focused. The immutability constraint—once written, notes cannot be edited or backdated—is a feature rather than a limitation, encouraging authentic capture of thoughts in the moment rather than retrospective curation. For terminal-centric developers who want to eliminate the friction between thought and capture without leaving their workflow, hmm provides an elegant solution that compounds its value through daily use.