Atuin
Searchable, synced shell history with an AI command helper
Built by @atuinsh on GitHub. This page was written by @iluxav from public sources, last updated for v18.23.0 (2026-09-21), and may lag behind new releases.
Maintain Atuin? Claim itSearch your shell history with Ctrl-R, record each command's context, sync history encrypted between machines, and now capture and search command output.
What you can do with it
Record each command with its exit code, directory, host, session and duration in a SQLite database.
Good to know
Your old history file is kept; Atuin keeps its own database alongside it.
Limit a history search to the current session, directory or host, or search everything.
Query history from the command line, for example successful `make` runs after 3pm yesterday.
Sync your shell history between machines, encrypted end to end, through Atuin's server or your own.
Good to know
Needs an account on a sync server; the server cannot read the history.
See statistics about your history, such as your most used commands.
Import the history your shell already has.
Open a past command in an interactive inspector that shows its details.
Show all 15
Define your own keybindings in the search view, including vim motions and media keys.
Run a background daemon that starts on its own and keeps a fast in-memory search index.
Read and set Atuin settings from the command line with `atuin config`.
Record the shell commands that coding agents run, through hooks Atuin installs.
Let AI tools search your shell history through Atuin's MCP server.
Generate a shell command or ask a question in plain words with `atuin ai`.
Good to know
Uses Atuin Hub; signing in to Hub turns on sync.
Capture the output of the commands you run so you or your tools can read it later.
Before you upgrade
Newest firstThe default socket is now `$TMPDIR/atuin-$UID/atuin.sock` (or `$XDG_RUNTIME_DIR/atuin.sock` with `systemd_socket`); clients still find a daemon at the old paths.
Read the evidence
Remove `atuin ai init` from your shell config; the command is gone and `atuin init` now sets up Atuin AI.
Read the evidence
Install Rust 1.98 or newer before building this release.
Read the evidence
Show 14 older
The V1 sync protocol is removed; switch to sync v2 by setting `records = true` in the `[sync]` config before upgrading.
Read the evidence
The `skim` search mode is removed; Atuin falls back to `fuzzy` and shows a warning. Set `search_mode = "daemon-fuzzy"` instead.
Read the evidence
TLS now uses native-tls instead of rustls, so builds need the system TLS library (OpenSSL on most Linux systems).
Read the evidence
Install Rust 1.97 or newer before building this release.
Read the evidence
`atuin hex` is now `atuin pty-proxy` and `ATUIN_PTY_PROXY_*` replaces `ATUIN_HEX_*`; the old names still work.
Read the evidence
Install Rust 1.95 or newer before building this release.
Read the evidence
Trailing whitespace is now stripped from recorded commands by default (`strip_trailing_whitespace`).
Read the evidence
`atuin init` now also sets up Atuin AI; the docs explain how to turn it off.
Read the evidence
Install Rust 1.94 or newer before building this release.
Read the evidence
The server is now a separate `atuin-server` binary; install it and run that instead of the server built into `atuin`.
Read the evidence
Install Rust 1.93 or newer before building this release.
Read the evidence
No x86_64 macOS binaries are built from this release on; build from source or use another install method.
Read the evidence
Install Rust 1.91 or newer before building this release.
Read the evidence
Install Rust 1.90 or newer before building this release.
Read the evidence
Release history 14
Search the text your past commands printed, not only the commands themselves.
Details
Full-text search over captured command output with `atuin output search` (with JSON and NDJSON output) and an `atuin_output_search` MCP tool; repeated exit-code filters; durations in config accept units; the minimum Rust version for building drops to 1.95.
v18.23.0; building from source needs Rust 1.95.
Seeded by @iluxav with Claude Code (canido)
Keep secrets out of captured command output, with redaction built in.
Details
Captured output redacts secrets, keeps the start and end of very long captures, stores the terminal size, and is set up in a new `[output_capture]` section; the inspector gains an output view; the daemon handles history deletion.
v18.22.0.
Seeded by @iluxav with Claude Code (canido)
Run a self-hosted Atuin sync server on MySQL.
Details
The server supports MySQL; history sync uses packfiles with parallel upload and download; agent hooks for opencode; PowerShell highlighting; the daemon socket moves to `$TMPDIR/atuin-$UID/atuin.sock`; `atuin ai init` is removed. Groups v18.20.0 to v18.21.0.
v18.21.0; building from source needs Rust 1.98.
Seeded by @iluxav with Claude Code (canido)
Filter history by shell and see commands syntax-highlighted in the search view.
Details
`--shell` and an interactive shell filter; syntax highlighting in search; bash-preexec is bundled; zsh comments are recorded; extra HTTP headers for sync requests; `atuin update` is a real subcommand. The V1 sync protocol and the `skim` search mode are removed, and TLS moves from rustls to native-tls. Groups v18.18.0 to v18.19.0.
v18.19.0.
Seeded by @iluxav with Claude Code (canido)
Let your AI tools search your shell history through Atuin's MCP server.
Details
An MCP server exposes history tools with more search filters; command output can be captured and read with the `atuin_output` tool; the AI gets `/model` and a status bar; long commands are shortened from the middle. Groups v18.17.0 and v18.17.1.
v18.17.1; building from source needs Rust 1.97.
Seeded by @iluxav with Claude Code (canido)
See a clear banner when login or sync fails because of a wrong encryption key.
Details
A banner explains wrong-key errors at login and sync; `atuin hex` is renamed `atuin pty-proxy`, with `atuin hex` and `ATUIN_HEX_*` variables kept as aliases.
v18.16.1.
Seeded by @iluxav with Claude Code (canido)
Let Atuin AI edit and write files, with your own context from `TERMINAL.md`.
Details
Atuin AI gains `edit_file` and `write_file` tools with overwrite safety, shell tool timeouts, skills, and user context from `TERMINAL.md`.
v18.16.0; building from source needs Rust 1.95.
Seeded by @iluxav with Claude Code (canido)
Read and change settings from the command line with `atuin config`.
Details
`atuin config` gets and sets config values; a keybinding deletes all matching commands; mouse support can be turned off; `history tail` follows history live; coding-agent shell usage is tracked through installed hooks; AI sessions can be resumed; trailing whitespace is stripped by default. Groups v18.14.0 to v18.15.2.
v18.15.2.
Seeded by @iluxav with Claude Code (canido)
Use the Atuin daemon as a supported feature rather than an experiment.
Details
The daemon's experimental label is removed; `atuin search -i` runs as a subcommand on Windows; kv values can be set from stdin. Groups v18.13.4 to v18.13.6.
v18.13.6.
Seeded by @iluxav with Claude Code (canido)
Ask Atuin to write a shell command or answer a question with `atuin ai`.
Details
`atuin ai` generates commands and answers questions; the daemon starts on its own and keeps an in-memory search index; `atuin setup` and Atuin Hub sign-in; frequency, recency and frecency scores can be weighted. Groups v18.13.0 to v18.13.3.
v18.13.3; building from source needs Rust 1.94. Atuin AI uses Atuin Hub.
Seeded by @iluxav with Claude Code (canido)
Define your own keybindings in the search view, including vim motions.
Details
A custom keybinding system for the search TUI with vim motions and media keys; tmux `display-popup` option; ultracompact mode; custom data directory; several state files moved into one SQLite database; the server moved to its own `atuin-server` binary. Groups v18.12.0 and v18.12.1.
v18.12.1; building from source needs Rust 1.93.
Seeded by @iluxav with Claude Code (canido)
Turn off the old V1 sync protocol on a self-hosted server.
Details
Servers can disable sync v1 and use Postgres read replicas; `history list` can show session and UUID columns; Intel Mac binaries are no longer built.
v18.11.0; building from source needs Rust 1.91.
Seeded by @iluxav with Claude Code (canido)
Inspect a past command in an interactive view and act on it.
Details
Interactive inspector; import from PowerShell history; search matches are highlighted; `session-preload` filter mode; more accept keys and shell pipelines in command chaining. Groups v18.9.0 and v18.10.0.
v18.10.0; building from source needs Rust 1.90.
Seeded by @iluxav with Claude Code (canido)
Starting point
Search your whole shell history in a full-screen view bound to Ctrl-R.
Details
State of Atuin at v18.8.0: history stored in SQLite with context per command, a search UI on Ctrl-R and the up arrow, filter modes, statistics, and optional end-to-end encrypted sync.
Install with the install script, a package or `cargo install atuin`; building from source needs Rust 1.88.
Seeded by @iluxav with Claude Code (canido)