06ac9587
Show current version on server index (#436)706b1aff
Disable ARM docker builds (#438)f2abc23a
Update README.md3c2b0550
Noyez fix dir hostname utf8 (#430)3f5350de
[feature] Add scroll wheel support to interactive history search (#435)dcdde225
Fix text outline for dark mode9ac0c60c
Implement cursor (#412)119ab9e0
Adds password prompt for register and login (#424)e5df809d
Noyez zsh histdb import (#393)b08e2543
Improve default fish keybindings (#420)4096c6ee
Update README.mdcd2a3ab7
Add fish shell to key binding docs (#418)b2782110
Bump clap_complete from 3.1.3 to 3.1.4 (#397)ee66c0a1
Bump axum from 0.5.5 to 0.5.6 (#415)4297e263
Bump tokio from 1.18.1 to 1.18.2 (#396)dbd9ca53
Bump clap from 3.1.16 to 3.1.18 (#401)a7c9d19d
Bump tower-http from 0.3.2 to 0.3.3 (#399)3b79f686
Bump axum from 0.5.4 to 0.5.5 (#402)f3407710
Cleanup dependencies – disable unnecessary or unused features (#407)ab294cde
Don't pollute shell environment - remove 'id' variable (#408)14b30606
Allow to build atuin server without client (#404)5e4e8d11
Don't create config dir for server in default location if not needed (#406)b7946cc9
Update Chinese version README.md (#403)e0291f67
Update README.md301190e4
Build ARM docker image in GitHub Actions using QEMU (#400)1d030b9d
Importer V3 (#395)d3a4ff95
Bump clap from 3.1.15 to 3.1.16 (#392)e9d2ec4b
Add ctrl-k and ctrl-j for up and down (#394)25afb5b2
Bump serde_json from 1.0.80 to 1.0.81 (#387)4a839dab
Adds stats summary (#384)7a394b01
Bump serde from 1.0.136 to 1.0.137 (#375)edd3f812
Bump clap_complete from 3.1.2 to 3.1.3 (#377)d85d03d9
Bump log from 0.4.16 to 0.4.17 (#382)dc3b7ef5
Bump tokio from 1.18.0 to 1.18.1 (#383)12440c1c
Bump serde_json from 1.0.79 to 1.0.80 (#376)731042f4
Bump tower-http from 0.3.1 to 0.3.2 (#378)82505e61
Bump clap from 3.1.12 to 3.1.15 (#381)e05c19d0
Add Chinese documentation translation & Fix spelling mistakes (#373)6e280e25
Add Russian documentation translation (#365)40efdd11
Bump http from 0.2.6 to 0.2.7 (#368)8bc5becc
Bump tower-http from 0.3.0 to 0.3.1 (#367)172ac8db
Create FUNDING.yml7cdd00b5
Bump tokio from 1.17.0 to 1.18.0 (#357)9d2e9ea1
Search: Allow specifiying the limited of returned entries (#364)93ab4e78
ignore JetBrains IDEs, tidy-up imports (#348)2cb4cb39
Bump axum from 0.5.3 to 0.5.4 (#355)796644e2
Add created_at column to users (#354)f8233bcb
SQLx cannot run this migration OK (#353)d8ef5dd9
fix db range query (#351)5926ea64
fix import auto for bash (#352)43d299fd
bump tui (#346)8ac6571b
Remove all select * from the server queries (#347)4030de4b
Add btree index on history table (#345)b692e0ce
Bump tower-http from 0.2.5 to 0.3.0 (#343)3680f4ac
Bump clap from 3.1.11 to 3.1.12 (#342)7f5310a1
history list (#340)
magical shell history
Atuin replaces your existing shell history with a SQLite database, and records additional context for your commands. Additionally, it provides optional and fully encrypted synchronisation of your history between machines, via an Atuin server.
exit code, duration, time and command shown
As well as the search UI, it can do things like this:
# search for all successful `make` commands, recorded after 3pm yesterday
atuin search --exit 0 --after "yesterday 3pm" make
You may use either the server I host, or host your own! Or just don't use sync at all. As all history sync is encrypted, I couldn't access your data even if I wanted to. And I really don't want to.
Features
- rebind
up
andctrl-r
with a full screen history search UI - store shell history in a sqlite database
- backup and sync encrypted shell history
- the same history across terminals, across sessions, and across machines
- log exit code, cwd, hostname, session, command duration, etc
- calculate statistics such as "most used command"
- old history file is not replaced
- quick-jump to previous items with Alt-<num>
- switch filter modes via ctrl-r; search history just from the current session, directory, or globally
Documentation
- Quickstart
- Install
- Import
- Configuration
- Searching history
- Cloud history sync
- History stats
- Running your own server
- Key binding
- Shell completions
Supported Shells
- zsh
- bash
- fish
Community
Atuin has a community Discord, available here
Quickstart
With the default sync server
This will sign you up for the default sync server, hosted by me. Everything is end-to-end encrypted, so your secrets are safe!
Read more below for offline-only usage, or for hosting your own server.
bash <(curl https://raw.githubusercontent.com/ellie/atuin/main/install.sh)
atuin register -u <USERNAME> -e <EMAIL> -p <PASSWORD>
atuin import auto
atuin sync
Opt-in to activity graph
Alongside the hosted Atuin server, there is also a service which generates activity graphs for your shell history! These are inspired by the GitHub graph.
For example, here is mine:
If you wish to get your own, after signing up for the sync server, run this
curl https://api.atuin.sh/enable -d $(cat ~/.local/share/atuin/session)
The response includes the URL to your graph. Feel free to share and/or embed this URL, the token is not a secret, and simply prevents user enumeration.
Offline only (no sync)
bash <(curl https://raw.githubusercontent.com/ellie/atuin/main/install.sh)
atuin import auto
Install
Script (recommended)
The install script will help you through the setup, ensuring your shell is properly configured. It will also use one of the below methods, preferring the system package manager where possible (pacman, homebrew, etc etc).
# do not run this as root, root will be asked for if required
bash <(curl https://raw.githubusercontent.com/ellie/atuin/main/install.sh)
With cargo
It's best to use rustup to get setup with a Rust toolchain, then you can run:
cargo install atuin
And then follow the shell setup
Homebrew
brew install atuin
And then follow the shell setup
MacPorts
Atuin is also available in MacPorts
sudo port install atuin
And then follow the shell setup
Pacman
Atuin is available in the Arch Linux community repository:
pacman -S atuin
And then follow the shell setup
From source
git clone https://github.com/ellie/atuin.git
cd atuin
cargo install --path .
And then follow the shell setup
Shell plugin
Once the binary is installed, the shell plugin requires installing. If you use the install script, this should all be done for you!
zsh
echo 'eval "$(atuin init zsh)"' >> ~/.zshrc
Or using a plugin manager:
zinit load ellie/atuin
bash
We need to setup some hooks, so first install bash-preexec:
curl https://raw.githubusercontent.com/rcaloras/bash-preexec/master/bash-preexec.sh -o ~/.bash-preexec.sh
echo '[[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh' >> ~/.bashrc
Then setup Atuin
echo 'eval "$(atuin init bash)"' >> ~/.bashrc
fish
Add
atuin init fish | source
to your is-interactive
block in your ~/.config/fish/config.fish
file
...what's with the name?
Atuin is named after "The Great A'Tuin", a giant turtle from Terry Pratchett's Discworld series of books.