Feedback on onboarding a second machine

After being a happy Atuin user on my macOS laptop for a few years, tonight I started doing more work on a server I provisioned a few months ago and thus installed Atuin on it. However, so far the experience wasn’t as smooth as I’d hoped (or had come to expect based other Atuin experiences):

  • Finding my username proved to be a little tricky. I started looking for the credentials necessary to sync up the second machine with the first one, and it took me quite a while to find the username. I tried atuin status at some point but it seemed to hang for a while (many seconds) so I aborted it (it works now) – maybe it should show local information that’s always available before trying to fetch remote stuff, which apparently is more fallible? I was somewhat expecting atuin info to provide this, too.
  • Once I’d figured that out, I installed it and copy-pasted the output of atuin init bash into my .profile. However, while the commands (all 77k of them) from my first machine appear to be there, for some reason new commands are not recording (after restarting my SSH session with the .profile all setup). I just used atuin doctor, which complains about a lack of ble.sh… The lack of even functioning up arrow functionality manages to badly break my muscle memory.
  • I’m also noticing that in Ghostty on the former macOS machine, scrolling the terminal window seems to end up scrolling only my Atuin history rather than the entire window. Is this a known issue somehow?

Hoping to resolve these issues so I can go back to being a very satisified Atuin user!

Hey! Appreciate the kind words about your experience before now! Sorry to hear you’ve been having issues. I assume your mac is running zsh?

A few points, then I can address your specific issues

Relevant background info

zsh works MUCH better than bash. Or phrased differently, out of all of the shells we support, bash is not the best. Unfortunately it does not support shell hooks, so we have two options to hack this in.

  1. bash-preexec, which is essentially a hack on the debug trap + prompt, but is otherwise non-invasive. Has a few small caveats and issues, and may not always work as expected. We install this by default
  2. ble.sh - a full line editor implemented in bash. We can have proper zsh-style integration here! However it is a replacement for the line editor, and has far more functionality + change than preexec does

In addition, newer bash versions behave much better. If your server is running ubuntu/debian, there is a chance it is also running very old packages.

Otherwise, we migrated to a new sync version sometime last year. There’s a chance that your old system is still on the old sync, hence the new machine is not picking up on it.

I suspect one of your machines is still running on our old sync version. The new one is MUCH faster. Could you share atuin doctor with me, for both machines please? Otherwise, if it’s possible, I’d suggest switching to zsh on your server too.

If I am correct, one of them will have the key atuin.sync.records = false. On this machine, set

[sync]
records = true

In your config, and then run atuin sync.

Agreed, however the username is not something we save locally.

Could you make sure you put this in .bashrc or .zshrc please? There are some variables we set that should change per shell session, and config that is not acceptable to be sourced regardless of shell. I would suggest either using our install script, or following the manual setup guide: Installation | Atuin Docs

Do you mean when the TUI is open? Does it open the TUI when you try and scroll the window itself?

Machine #1, laptop with macOS:

{
  "atuin": {
    "version": "18.4.0",
    "sync": {
      "cloud": true,
      "records": true,
      "auto_sync": true,
      "last_sync": "2025-08-12 13:13:40.464838 +00:00:00"
    },
    "sqlite_version": "3.46.0"
  },
  "shell": {
    "name": "zsh",
    "default": "zsh",
    "plugins": [
      "atuin"
    ],
    "preexec": "built-in"
  },
  "system": {
    "os": "Darwin",
    "arch": "arm64",
    "version": "15.6",
    "disks": [
      {
        "name": "Macintosh HD",
        "filesystem": "apfs"
      },
      {
        "name": "Macintosh HD",
        "filesystem": "apfs"
      },
      {
        "name": "Asahi Linux",
        "filesystem": "apfs"
      }
    ]
  }
}

Machine #2, Debian trixie with bash 5.2.37-2+b5:

{
  "atuin": {
    "version": "18.6.1",
    "sync": {
      "cloud": true,
      "records": true,
      "auto_sync": true,
      "last_sync": "1970-01-01 0:00:00.0 +00:00:00"
    },
    "sqlite_version": "3.46.1"
  },
  "shell": {
    "name": "bash",
    "default": "bash",
    "plugins": [
      "atuin"
    ],
    "preexec": "none"
  },
  "system": {
    "os": "Debian GNU/Linux",
    "arch": "aarch64",
    "version": "13",
    "disks": [
      {
        "name": "/dev/sda1",
        "filesystem": "ext4"
      },
      {
        "name": "/dev/sda15",
        "filesystem": "vfat"
      }
    ]
  }
}

I installed ble.sh now and reinstalled atuin per the installation instructions but it still seems to only have the one command. Running atuin stats on machine #2 seems to suggest that syncing is not at fault:

enrai-2024 ~ $ atuin stats
[▮▮▮▮▮▮▮▮▮▮] 15207 git diff
[▮▮▮▮▮     ]  7954 git commit
[▮▮▮       ]  5531 git checkout
[▮▮▮       ]  5005 git rebase
[▮▮        ]  4221 git push
[▮▮        ]  3191 git status
[▮         ]  2878 cd
[▮         ]  2755 cargo t
[▮         ]  2374 git add
[▮         ]  2244 cargo c
Total commands:   77213
Unique commands:  14676

This ble.sh seems to intercept every keystroke and does all sorts of other stuff? Not something that makes me very happy… Maybe I’ll try the pre-exec thing instead.

I made a screen recording, can you easily give me permissions (elevate me from “new user”) so I can upload it here?

Thanks for the elaborate response!

Ok, good to confirm that the sync is all ok!

Yeah that’s right, I elaborated in the section above. I’m afraid that our support for bash is limited by bash not supporting any way to plug into the shell lifecycle - it’s either use blesh for full support (with many more changes, as you noted), or use bash-preexec. I would really recommend switching to zsh or… pretty much anything else, if that’s possible for you.

Permissions given!

Still fails with “Sorry, new users cannot upload attachments”… I’ll put it somewhere else.

Here is a screen recording where I’m only scrolling my mousewheel (with one click in the window somewhere in the middle):

Hm it looks like your server is receiving mouse up when it should be receiving scroll events. Is $TERM set correctly?

Does this also happen with atuin disabled on the server? I’d expect the normal bash arrow-up behaviour

EDIT: also, looking at what you ran previously in your shell, you want to have ble.sh setup before atuin. Or switch to zsh

This part of your atuin doctor on the server confirms that neither preexec plugin was setup correctly

"shell": {
    "name": "bash",
    "default": "bash",
    "plugins": [
      "atuin"
    ],
    "preexec": "none"
  },

Decided to set up zsh on the new server like you recommended, which seems to have solved the issues, thanks for the assistance!

Yeah, it still happens when connected to a server that doesn’t have atuin setup. So I guess it’s unrelated to atuin? Maybe it’s a bash vs zsh thing…

Glad you got it sorted!

Tbh it really sounds like the server is missing terminfo for ghostty - I think this should help fix that: Terminfo - Help

I’ve spent quite a bit of time on that page already – not sure that is the problem here. It seems to be somewhat intermittent.

At least atuin is working fine now!

1 Like