# 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.