https://github.com/ellie/atuin Skip to content Toggle navigation Sign up * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions For + Enterprise + Teams + Startups + Education By Solution + CI/CD & Automation + DevOps + DevSecOps Case Studies + Customer Stories + Resources * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Pricing [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this user All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} ellie / atuin Public * * Notifications * Fork 232 * Star 7.8k Magical shell history atuin.sh License MIT license 7.8k stars 232 forks Star Notifications * Code * Issues 89 * Pull requests 32 * Discussions * Actions * Projects 0 * Security * Insights More * Code * Issues * Pull requests * Discussions * Actions * Projects * Security * Insights ellie/atuin This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags Name already in use A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch? Cancel Create 37 branches 16 tags Code * Local * Codespaces * Clone HTTPS GitHub CLI [https://github.com/e] Use Git or checkout with SVN using the web URL. [gh repo clone ellie/] Work fast with our official CLI. Learn more about the CLI. * Open with GitHub Desktop * Download ZIP Sign In Required Please sign in to use Codespaces. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching Xcode If nothing happens, download Xcode and try again. Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. Latest commit @rigrig rigrig docs: fix "From source" cd command (#937) ... a38fc6e May 6, 2023 docs: fix "From source" `cd` command (#937) Cloning does not automatically cd to the new directory, and we need to cd to "atuin" *inside* the cloned repository. a38fc6e Git stats * 507 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .github Upload tar before building deb (#898) April 19, 2023 09:04 atuin-client cwd_filter: much like history_filter, only it applies to cwd (#904) May 2, 2023 02:55 atuin-common Workspace reorder (#868) April 14, 2023 20:18 atuin-server chore: uuhhhhhh crypto lol (#805) April 17, 2023 21:12 atuin Add command flag for inline_height (#905) May 2, 2023 09:00 docs docs: fix "From source" cd command (#937) May 6, 2023 14:35 k8s Add kubernetes instructions and manifests (#427) June 26, 2022 18:40 .dockerignore Optimise docker (#34) April 14, 2021 17:40 .gitignore Add nix files and install instructions (#477) February 15, 2023 09:04 .mailmap Add history deletion (#791) March 20, 2023 09:26 .rustfmt.toml ignore JetBrains IDEs, tidy-up imports (#348) April 28, 2022 18:53 CHANGELOG.md Release v0.8.1 (#291) April 12, 2022 09:32 CODE_OF_CONDUCT.md Add code of conduct (#281) March 17, 2022 21:43 CONTRIBUTING.md Update CONTRIBUTING.md (#815) March 26, 2023 18:31 Cargo.lock fix broken pipe on history list (#927) May 1, 2023 22:31 Cargo.toml Re-added package name to workspace.package (#894) April 18, 2023 20:38 Dockerfile Bump lukemathwalker/cargo-chef (#781) March 24, 2023 09:06 LICENSE Create LICENSE February 14, 2021 16:22 README.md docs: fix "From source" cd command (#937) May 6, 2023 14:35 atuin.nix fix: allow nix package to fetch dependencies from git (#832) March 31, 2023 08:58 atuin.plugin.zsh run shellcheck (#97) May 14, 2021 08:31 default.nix nix: add flake-compat (#743) March 1, 2023 19:51 demo.gif Release v0.7.0 (#103) May 10, 2021 21:28 docker-compose.yml Added docker-compose.yml (#325) April 22, 2022 08:41 flake.lock nix: add flake-compat (#743) March 1, 2023 19:51 flake.nix nix: add flake-compat (#743) March 1, 2023 19:51 install.sh install.sh - add endeavouros to archlinux detection (#827) March 29, 2023 08:25 View code [ ] Features Documentation Supported Shells Community Quickstart With the default sync server Opt-in to activity graph Offline only (no sync) Install Script (recommended) With cargo Homebrew MacPorts Nix Pacman Termux From source Shell plugin zsh Zinit Antigen bash fish Fig Nushell README.md [171035743-] magical shell history --------------------------------------------------------------------- [6874747073] [6874747073] [6874747073] [6874747073] [6874747073] [6874747073] [6874747073] English | Jian Ti Zhong Wen 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. animated 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 ctrl-r and up (configurable) to 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- * 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 * Self host Atuin server * Key binding * Shell completions Supported Shells * zsh * bash * fish * nushell 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 -e -p atuin import auto atuin sync Then restart your shell! 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: Activity Graph Example 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 Then restart your shell! 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) And then follow the shell setup 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 Nix This repository is a flake, and can be installed using nix profile: nix profile install "github:ellie/atuin" Atuin is also available in nixpkgs: nix-env -f '' -iA 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 Termux Atuin is available in the Termux package repository: pkg install atuin And then follow the shell setup From source git clone https://github.com/ellie/atuin.git cd atuin/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! After installing, remember to restart your shell. zsh echo 'eval "$(atuin init zsh)"' >> ~/.zshrc Zinit zinit load ellie/atuin Antigen antigen bundle ellie/atuin@main 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 Fig Install atuin shell plugin in zsh, bash, or fish with Fig in one click. [6874747073] Nushell Run in Nushell: mkdir ~/.local/share/atuin/ atuin init nu | save ~/.local/share/atuin/init.nu Add to config.nu: source ~/.local/share/atuin/init.nu About Magical shell history atuin.sh Topics shell bash rust zsh fish history Resources Readme License MIT license Code of conduct Code of conduct Stars 7.8k stars Watchers 42 watching Forks 232 forks Report repository Releases 16 v14.0.1 Latest Apr 16, 2023 + 15 releases Sponsor this project Sponsor Learn more about GitHub Sponsors Packages 1 Used by 95 * @AleCandido * @lukebaker * @kmephistoh * @bingryan * @jean-santos * @notsatyarth * @pinkbluersglobal + 87 Contributors 102 * @ellie * @dependabot[bot] * @conradludgate * @patricksjackson * @Sciencentistguy * @orhun * @pdecat * @yuvipanda * @frankh * @cyqsimon * @jirutka + 91 contributors Languages * Rust 97.4% * Shell 1.5% * Other 1.1% Footer (c) 2023 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.