← All posts

CLI

Atuin: Turn Your Shell History Into a Searchable Database

Atuin replaces your shell history with a searchable, synced SQLite database - context-rich and available everywhere.

A CLI

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.