MCPcopy Index your code
hub / github.com/atuinsh/atuin

github.com/atuinsh/atuin @v18.16.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v18.16.1 ↗ · + Follow
2,965 symbols 8,954 edges 262 files 515 documented · 17% updated todayv18.16.1 · 2026-05-12★ 30,463425 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Text changing depending on mode. Light: 'So light!' Dark: 'So dark!'

magical shell history


English | 简体中文

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
  • back up 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
  • enter to execute a command, tab to edit

Documentation

Supported Shells

  • zsh
  • bash
  • fish
  • nushell
  • xonsh
  • powershell (tier 2 support)

Community

Forum

Atuin has a community forum, please ask here for help and support: https://forum.atuin.sh/

IRC

We're also available via #atuin on libera.chat

Discord

Atuin also has a community Discord, available here

Quickstart

This will sign you up for the Atuin Cloud sync server. Everything is end-to-end encrypted, so your secrets are safe!

Read the docs for an offline setup, self-hosted server, and more.

curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh

atuin register -u <USERNAME> -e <EMAIL>
atuin import auto
atuin sync

Then restart your shell!

[!NOTE]

For Bash users: The above sets up bash-preexec for necessary hooks, but bash-preexec has limitations. For details, please see the Bash section of the shell plugin documentation.

Security

If you find any security issues, we'd appreciate it if you could alert ellie@atuin.sh

Related projects

Please open a PR for any others!

Contributors

Made with contrib.rocks.

Extension points exported contracts — how you extend this code

PermissableToolCall (Interface)
A trait for tool calls that can be checked against permission rules. [7 implementers]
crates/atuin-ai/src/tools/mod.rs
Importer (Interface)
(no doc) [11 implementers]
crates/atuin-client/src/import/mod.rs
Component (Interface)
(no doc) [4 implementers]
crates/atuin-daemon/src/daemon.rs
SearchEngine (Interface)
(no doc) [3 implementers]
crates/atuin/src/command/client/search/engines.rs
Escapable (Interface)
Extension trait for anything that can behave like a string to make it easy to escape control characters. Intended to he [1 …
crates/atuin-common/src/utils.rs
Database (Interface)
(no doc) [2 implementers]
crates/atuin-server-database/src/lib.rs
Char (Interface)
(no doc) [2 implementers]
crates/atuin-nucleo/matcher/src/chars.rs
RespExt (Interface)
(no doc) [1 implementers]
crates/atuin-server/src/handlers/mod.rs

Core symbols most depended-on inside this repo

clone
called by 474
crates/atuin-nucleo/src/lib.rs
bind
called by 333
crates/atuin/src/command/client/search/keybindings/keymap.rs
len
called by 273
crates/atuin-nucleo/matcher/src/utf32_str.rs
push
called by 181
crates/atuin-nucleo/src/lib.rs
as_str
called by 167
crates/atuin-client/src/settings.rs
parse
called by 159
crates/atuin-ai/src/skills/frontmatter.rs
handle
called by 139
crates/atuin-ai/src/fsm/mod.rs
is_empty
called by 135
crates/atuin-nucleo/src/pattern.rs

Shape

Function 1,365
Method 1,103
Class 347
Enum 133
Interface 17

Languages

Rust99%
TypeScript1%

Modules by API surface

crates/atuin-ai/src/permissions/shell.rs128 symbols
crates/atuin-client/src/settings.rs118 symbols
crates/atuin/src/command/client/search/interactive.rs81 symbols
crates/atuin-ai/src/tools/mod.rs79 symbols
crates/atuin/src/command/client/search/keybindings/defaults.rs74 symbols
crates/atuin/src/command/client/search/keybindings/conditions.rs68 symbols
crates/atuin/src/command/client/history.rs55 symbols
crates/atuin-client/src/database.rs52 symbols
crates/atuin-pty-proxy/src/osc133.rs50 symbols
crates/atuin/src/command/client/daemon.rs46 symbols
crates/atuin-nucleo/src/boxcar.rs46 symbols
crates/atuin-ai/src/tui/view/turn.rs40 symbols

Datastores touched

atuinDatabase · 1 repos

For agents

$ claude mcp add atuin \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact