Readit News logoReadit News
nidnogg · 2 months ago
I've been using Atuin for at least a year and a half, and I think it's definitely the tool I'd been looking for the most in my entire dev career. It has made me much more confident with my hazy memory. Before it I'd struggle consistently to remember most of my recent commands.

bck-i was always a bit obtuse to me and I honestly never grokked it until I had Atuin wired into my workflow (hard) and ran into bck-i instead when SSH'd.

Anytime a peer views my screenshare, they ask "what's the funny thing that makes you so fast". I then proceed to share, first and foremost, Atuin.

Thanks Atuin team! Would love to contribute someday with more time.

ellieh · 2 months ago
(dev here!) thank you so much! I love to hear things like this <3
digdugdirk · 2 months ago
Thanks for your work! Atuin is definitely one of those "How did nobody figure this out before now?" sort of ideas, executed really well. Two thumbs up.

I'm really intrigued by the upcoming Runbooks - they seem like they could be an absolute game changer. Any updates/teases on that front?

InsideOutSanta · 2 months ago
I hadn't heard of this until just now, and I already can't imagine living without it. Thank you!
lblume · 2 months ago
Thanks a lot for your work!
nidnogg · 2 months ago
now please give us the cloud history feature opt-out by default please please. cheers
jauntywundrkind · 2 months ago
One of the things I really struggle to retain about the shell is the various expansions.

Unfortunately history shows the expanded form of what's happened, so I can't go reference that I used the third word of history item 773 as an argument, I only see the resolved argument.

Alas I haven't found any hooks in zsh that show promise here. I'd really love the pure history.

One technique I've used in the past is making a quick command in vim, that takes the selection or current line, and sends it to a given terminal. And perhaps starts a new line too. Basically using vim to author commands, to build the history log. Also I get to use vim, yay.

thibaultamartin · 2 months ago
I second this wholeheartedly. Atuin is a joy to use and makes it so easier to find past commands. Thanks a lot atuin, and thanks to the colleague who recommended it!
moonshot5 · 2 months ago
For zsh users who like this idea and don't want to have to worry about anything leaving the device (not to insinuate that Atuin is doing anything below board, I don't think they are) I built my own version of this for myself called raven:

https://github.com/tylersaunders/raven

Raven has no sync component, stores your history in a sqlite, and never tries to move data off the device. It has a similar / large overlap in features with Atuin.

Sharing here in case anyone else could benefit from it, it only supports zsh for the moment since that's what I use.

Atuin is great though!

ellieh · 2 months ago
our sync is opt-in + optional, e2e encrypted, and self-hostable.

if that's not enough, you can disable all network features via a feature flag at compile time

if you don't care for sync, there are a bunch of other projects doing this (and supporting several shells), eg:

- mcfly: https://github.com/cantino/mcfly

- resh: https://github.com/curusarn/resh

electromech · 2 months ago
I am happy Atuin user now, but I was initially worried that it would sync my data unless I explicitly disabled that feature. The fact that it's opt-in becomes clear once you read the docs and understand how it works, but it might be worth emphasizing that on the landing page. Currently it says:

    Shell history sync
    Sync your shell history to all of your machines, wherever they are
In any case, thanks for building a great tool!

yjftsjthsd-h · 2 months ago
> if that's not enough, you can disable all network features via a feature flag at compile time

Are there network features other than sync?

nidnogg · 2 months ago
this is my only quip with atuin, despite my endorsement in a sibling comment. this should absolutely be opted-out BY DEFAULT. not defaulted to opt-in.

if you have someone outright cloning your entire project just to skip this opted-in privacy gap feature, it's a good indicator it's an issue to be mindful of!

tledakis · 2 months ago
For people OK with syncing to their own server, Atuin can be self-hosted as well

https://docs.atuin.sh/self-hosting/server-setup/

shawabawa3 · 2 months ago
you could just disable sync in atuin
phaer · 2 months ago
You could also just not enable it. It's off by default
tecleandor · 2 months ago
If any of you is having problems with Atuin acting weirds or slow, and has a ZFS filesystem, there's a known problem with sqlite and ZFS [0]. There are a couple of workarounds [1] that are, either using `atuin daemon`, or creating an ext4 volume for the atuin storage.

--

  0: https://docs.atuin.sh/known-issues/
  1: https://github.com/atuinsh/atuin/issues/952

Tmpod · 2 months ago
I see it also supports fish. That's been my shell for many years, it just works really well and, as far as I can tell (couldn't find a demo on their website), it doesn't add much to fish beyond syncing?

Has anyone used fish + autuin? What are your thoughts? I'm curious to know if it is worth the extra tool, maybe I should just try it :)

robertknight · 2 months ago
I use fish + atuin. I leave the "Up" arrow set to use fish's default history search (see https://docs.atuin.sh/faq/#how-do-i-remove-the-default-up-ar...), which keeps the UI minimal when just going back one or two commands, then use atuin via Ctrl+R when I need to find a command from earlier in my history. At that point Atuin provides a nicer UI for searching the history.
aquova · 2 months ago
I've been using fish + atuin for well over a year now. I personally love it. I'm not sure if zsh or bash with atuin offers some additional features that fish doesn't, but the shell syncing and fuzzy search is enough of a value that it made it completely worth setting up for me.
ellieh · 2 months ago
The main thing would be opt-in syncing, and I think we might store a little more context than fish does in their SQLite!

Otherwise consistency is nice if you use a few setups

barosl · 2 months ago
fish doesn't use SQLite, but its own plaintext format. They've been trying to migrate to other formats.[1] Currently fish stores timestamps and directories in its history.

[1] https://github.com/fish-shell/fish-shell/issues/3341

drcongo · 2 months ago
I recently switched to Atuin from McFly, and while McFly has been a solid performer for me for years, I love Atuin. Worth pointing out for others who care about such things as it's not made clear on this landing page, you don't actually need to register - if you don't need the sync, you can just use it without registering and it's still amazing, and if you do need the sync but don't like the idea of your history being stored on someone else's server, you can self-host the sync server too.
atombender · 2 months ago
I've used Atuin for a few months, but I ended up going back to zsh-histdb, which stores history in an SQLite database.

When I compared Atuin with zsh-histdb again, the performance difference was stark. Zsh-histdb is just instantaneous, whereas Atuin has noticeable lag.

Atuin's ranking algorithms are also quite deficient, and I've tried all of them. I did a quality comparison before going back to zsh-hidden and found a good example: If I autocomplete on "curl cat", the first match is something like "curl http://localhost/v1/chat" that I did earlier today. If I autocomplete on "curl chat", the first match is something like "curl http://localhost/_cat".

From what I can tell, the ranking doesn't seem to consider contiguous substring matches as having higher relevance than random letters in different order. Clearly "cat" should match "cat" higher than "chat", even if they both have "h" somewhere.

(If anyone from Atuin is reading here, I'd be happy to show a screen recording of the problem.)

The fact that Atuin cannot delete old history is also a problem, especially since it gets markedly slower the more history you have. I initially imported all my history (about 100MB?) and it was dog slow. But there was no way to prune older entries, so I had to wipe it clean and then import a subset. Even then, as I said, it's clearly slower than zsh-histdb.

Zsh-histdb has other issues, and hasn't been updated in years, but it works better for me. Atuin's syncing is nice, but it's something I can live without.

MrSaints · 2 months ago
I can't remember what my terminal was like before this. It's so fast, seamless and part of my day to day workflow. Solid open source project.
dmd · 2 months ago
If I explicitly DON’T want sync between machines (my workflows are very machine specific), does atuin give me anything significant over my current fzf based C-r?
ellieh · 2 months ago
Atuin stores much more context than ctrl-r does - exit codes, command duration and directory, etc

Also has functions for filtering command search by directory

Being backed by SQLite tends to mean your history is more durable + is properly saved across shells too

beeb · 2 months ago
Ability to change the search mode (prefix, full text, fuzzy), and filter by path/host, time range, exit code, current session only, and more
electromech · 2 months ago
I have been a reluctant adopter of Atuin.

I don't use the sync feature, but I will say that "my workflows are very machine specific" is one of the reasons I use Atuin. When working in containers, I sometimes share an Atuin database volume between them, to save history relevant to those containers.

On MacOS the main reason I reach for Atuin is that I have never been able to get ZSH to store history properly. Atuin saves history to SQLite, which so far has been much more reliable. It also enables some nice features like being able to search commands run from the same directory.

Lapel2742 · 2 months ago
> does atuin give me anything significant over my current fzf based C-r

I'm interested in this as well. I currently use fzf and I'm happy with what I've got (except for me syncing would probably be a nice feature to have).

Also: I gave atuin a quick try and found the TUI to be worse than fzf. Why do I need a fullscreen ctrl-r interface? I found that distracting. But maybe that is configurable. I didn't look much further.

ellieh · 2 months ago
It is configurable!

And also the default is now to use 40 lines, not the alt screen (has its own drawbacks)

You can set “inline_height”

https://docs.atuin.sh/guide/basic-usage/#inline-window