A secure database dashboard connects command-line tools to Windows and Linux computers across a network.
Atuin is a free, open-source shell history tool. It swaps your shell's plain history file for a searchable SQLite database and can optionally sync that database across machines. XDA Developers' João Carrasqueira recently praised it as a tool that "belongs on every developer's machine". The praise holds up, but a few details in the original piece need correcting or qualifying. They cover how often sync runs, where the config file lives, and what PowerShell users can expect.

A secure database dashboard connects command-line tools to Windows and Linux computers across a network. What Atuin actually does​

Atuin's documentation says it replaces your shell history with a SQLite database. For each command it also records context: the directory it ran in, how long it took, whether it succeeded, and which machine and session it came from. Sync is optional. You can use Atuin's hosted server, host your own, or stay entirely local.

Search opens with Ctrl+R or the Up arrow. Enter runs the selected command, and Tab drops it onto the command line for editing. Alt plus a number is also documented as a quick-pick shortcut. If you already have a history file, atuin import auto brings it in. Imported legacy entries won't carry the context Atuin records for new commands.

Setup, step by step​

  1. Install. The documented quickstart is the one-liner the article quotes: curl --proto '=https' --tlsv1.2 -LsSf [! /bin/sh](https://setup.atuin.sh) | sh. It pipes a downloaded script into a shell, so read it first if you're cautious. On Windows, the release page also offers an x64 zip and a PowerShell installer script.
  2. Restart your shell. Atuin hooks in through shell initialization, so the integration doesn't load until you do.
  3. Register. Run atuin register -u <USERNAME> -e <EMAIL>, then atuin sync.
  4. Save your key. Registration generates an encryption key that you can display with atuin key. Atuin's guide says this key is needed to log in on other machines and must never be shared. The guide also says history is fully end-to-end encrypted. The guide warns that Atuin can't recover a lost key and suggests a password manager.
  5. Link another PC. Install Atuin there, run atuin login -u <USERNAME>, and enter your password and key.
  6. Force a full sync if data looks missing. atuin sync runs a manual sync. atuin sync -f triggers a full sync, which may take longer.

How often does it sync? The docs disagree​

The XDA article says sync defaults to every five minutes. Atuin's own documentation gives two answers:

  • The setup guide says Atuin will sync your history once per hour by default.
  • The versioned configuration reference for 18.23 lists a sync_frequency default of 5m. That same page says the value can be a duration like 10s, 20m, 1h or 1d, and that a setting of 0 syncs after every command.

The configuration reference is the more specific source, and it matches the author's experience. The guide's hourly figure may simply be stale. I couldn't confirm which one reflects the current behavior. If timing matters to you, set sync_frequency explicitly in your config rather than trusting any default.

The cross-shell gotcha​

This was the author's biggest stumbling block, and it deserves attention. A command can sync successfully and still not show up in your Ctrl+R search.

By default, interactive search filters by the shell you're currently in. The [search] section's shells setting controls this. Its default of "auto" shows commands from the current shell. Setting shells = "all" shows everything. An array of shell names limits results to just those shells.

Mixed environments are where this bites. Take a Bash laptop and a fish desktop, or a Linux box and a Windows PowerShell machine. History syncs, but the search UI shows only the current shell's commands. Running atuin history list shows the full set. The author's fix is shells = "all". That isn't automatically right for everyone. Bash one-liners are of little use at a PowerShell prompt, so you might choose per-machine settings, or list specific shells in the array.

Windows and PowerShell support​

Atuin's support matrix draws a useful distinction between operating-system support and shell-feature support:

ItemStatus
bash, zsh, fishTier 1, actively supported by the Atuin team
nushell, xonsh, PowerShellTier 2, community-supported, best effort
Windows x86_64Tier 1 OS target with a prebuilt binary and tested CI
WSL 2 x86_64Tier 1, with tested CI

PowerShell has history search, but the matrix marks the inline popup as unsupported. It also shows no pty-proxy for PowerShell, and the Windows row notes no syntax highlighting or pty-proxy. The XDA piece says the history side "works perfectly" in PowerShell, but it also reports having to change the script execution policy first. Expect that friction on a locked-down Windows machine. If you manage fleets, check policy before rolling it out.

WSL 2 is listed as a Tier 1 target, so a developer who splits time between PowerShell and a WSL bash session can run Atuin in both. That is where the shells setting matters most.

Where's the config file?​

The article gives ~/.atuin/config.toml for Linux. The answer depends on the Atuin version:

  • The 18.23 documentation says the config lives at ~/.config/atuin/config.toml.
  • Newer main-branch documentation describes ~/.atuin as the default, with ATUIN_HOME and ATUIN_CONFIG_DIR as overrides. It says older installs keep using the old locations if nothing is found in ~/.atuin.

If you can't find the file, check both locations, or run atuin doctor for diagnostics. Don't assume one path fits every install.

Privacy: encrypted sync isn't a license to paste secrets​

Atuin states that synced history is end-to-end encrypted, so the server operator can't read it. Those are the project's own claims, not an independent audit. Your history also carries context beyond command text, such as working directories, hostnames and exit codes. That is my inference from the fields Atuin records, not a documented risk.

Atuin offers several controls to keep sensitive material out:

  • A leading space keeps a single command out of history, where the shell supports the "ignorespace" convention. There is a documented Bash caveat. With bash-preexec rather than ble.sh, the command won't appear in Atuin but may still appear in Bash's own history.
  • history_filter takes regular expressions to exclude matching commands, such as anything with --password.
  • cwd_filter excludes everything run in matching directories.
  • atuin history prune removes entries recorded before you added a filter.

By default, Atuin also skips commands containing credentials it recognizes, such as AWS and GitHub keys, but its own documentation calls this best-effort. Treat filters as a safety net, not permission to type secrets into a terminal.

Troubleshooting checklist​

  • History appears in one terminal but not another. An IDE terminal may start a non-interactive shell that never loads your shell config, so Atuin's hooks don't install. Configure the IDE to start an interactive shell and run atuin doctor.
  • Synced but invisible. Check the shells setting first.
  • Missing records. Run atuin sync -f.
  • PowerShell refuses to load the integration. Review your execution policy, as the author had to.

Bottom line​

Atuin earns its reputation. Searchable, context-rich history that follows you between machines is useful for anyone who bounces between a Windows PC, WSL and Linux boxes. Go in with realistic expectations. PowerShell is a best-effort citizen with fewer features than bash, zsh or fish. The default search filter hides other shells' commands. Your encryption key is the one thing you can't afford to lose. Whether sync runs every five minutes or every hour depends on which part of the documentation you believe, so set it yourself and stop guessing.

The XDA article calls the tool "free". Atuin's docs confirm the software is published openly and that a hosted sync server exists. I didn't verify the hosted service's current pricing or limits.

 

References

  1. This free tool syncs your terminal history between PCs, and it belongs on every developer's machine XDA 2026-10-25T18:00:20+00:00
  2. sync.md github.com
  3. index.md github.com