Shell history is one of the most-used and least-loved features in the terminal: a flat file, easily lost, awkward to search, and stranded on one machine. Atuin reimagines it. It stores your history in a SQLite database with rich context - the directory, the exit code, the duration, the timestamp - and gives you a fast, full-screen fuzzy search over all of it. Optionally, it syncs (end-to-end encrypted) so your history follows you across machines.
History You Can Actually Search
It rebinds the up-arrow and Ctrl-R to a searchable interface, so finding that command from last Tuesday is a query, not a scroll:
# Install and wire it into your shell
atuin init bash
# Search interactively (bound to Ctrl-R)
# filter by directory, exit code, and more
atuin search --cwd . docker
Context Makes It Powerful
Because Atuin records where and when a command ran and whether it succeeded, you can scope a search to the current project directory or to commands that actually worked. That context is what turns history from a dumb log into a genuinely useful record.
Rough Edges and Limitations
- Sync is opt-in and a service. You can self-host or skip sync, but the default cross-machine feature involves a server.
- It changes muscle memory. The new Ctrl-R interface takes a few days to feel native.
- One more moving part. A database-backed history is heavier than a plain file, for better and worse.
Once your history is queryable by directory and outcome, going back to grepping a flat file feels genuinely primitive.
Internal link suggestion: link "searchable interface" to the fzf post, another take on fuzzy history search.