What Atuin Does
- Rich history — cwd, exit code, duration, session, hostname
- Search UI — Ctrl+R opens fuzzy picker with filters
- End-to-end encrypted sync — across machines
- Stats — top commands, avg duration, failure rate
- Filter by — directory, session, exit code
- Replaces Ctrl+R — native shell history integration
- Import — bash, zsh, fish, nushell, resh
Architecture
Local SQLite database at ~/.local/share/atuin/history.db. Shell hook captures each command pre/post execution. Optional sync server stores encrypted blobs (client has the key, server cannot read plaintext).
Self-Hosting
Optional sync server is open source:
docker run -d -p 8888:8888 -v atuin-data:/config ghcr.io/atuinsh/atuin server start
# Or via systemd: atuin server startClient config points to your server with sync_address in ~/.config/atuin/config.toml.
Key Features
- Full context per command
- E2E encrypted sync
- Fuzzy interactive picker
- Directory-scoped history
- Session filtering
- Import from other history tools
- Stats and insights
- Self-hostable server
Comparison
| Tool | Storage | Sync | Context |
|---|---|---|---|
| Atuin | SQLite | E2E encrypted | Full |
| McFly | SQLite | No | Limited |
| HSTR | Native | No | None |
| fzf history | Flat file | No | None |
| shell history | Flat file | No | None |
常见问题 FAQ
Q: 隐私? A: Atuin 默认本地存储。开启 sync 时用客户端密钥加密后上传,服务器看不到明文。完全自主可控。
Q: 会影响 shell 启动速度吗? A: Rust 实现很快,hook 只在命令执行时触发,启动几乎无感。
Q: 可以禁用某些命令吗?
A: 可以。配置 history_filter 正则数组(例如包含密码的命令)避免记录。
来源与致谢 Sources
- Docs: https://atuin.sh
- GitHub: https://github.com/atuinsh/atuin
- License: MIT