Rendered at 23:43:47 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
nzoschke 1 days ago [-]
I started building my own version of this in Superlogical Rex.
It's a bit hard to decide where to hook in.
Rex has events, harnesses have hooks, terminal output can set program status, git has hooks.
I'm not sure I actually want every session from every machine saved. That's a lot of noise especially when half of coding sessions are experimental / throwaway.
But at the same time its not that much data that's easy to ripgrep / LLM through.
ellieh 1 days ago [-]
Nice! Rex is super cool. We have an Atuin Threads integration for Herdr already, definitely exploring building one for Rex too
We actually don’t use hooks at all at the moment, and instead rely on parsing session files
Agents are definitely super good at searching and finding relevant data amongst noise!
seanlf 1 days ago [-]
Anything you can share yet? I was about to point Claude at the same thing in Rex and would rather not burn the tokens to come to the same result
justCallMeOmid 1 days ago [-]
"Half of coding sessions being throwaway" is exactly why I stopped keeping them per session. Mine hang off a work item, and each item has its own folder with its session logs.
I basically throw them away and also record their summary in a vector DB to be able to find why I did something, if I'm ever curious about it!
Otherwise I'm gonna need a tool to help me manage my sessions :D
gajus 1 days ago [-]
Unrelated, but if you have an invite to Superlogical Rex, would appreciate one. gajus@gajus.com
sbarre 1 days ago [-]
Honestly, just go sign up on the Superlogical website, the queue is short, you should get an invite quickly enough.
As far as I know(?) beta testers don't have the ability to give out invites anyways. At least I don't.
gajus 1 days ago [-]
Interesting. I signed up a while ago and did not receive an invite.
asemdevs 1 days ago [-]
[flagged]
seanjhkwon 1 days ago [-]
[flagged]
d4rkp4ttern 8 hours ago [-]
If you only need this on one machine, I've been using my own tool, "aichat search", for the same thing. It's a Rust TUI over a Tantivy index of your Claude Code and Codex sessions. It indexes the session files in place rather than keeping its own copy.
On my machine, with ~22 GB of sessions, its index is under 1 GB, while Threads added 8.1 GB after importing the same sessions (it stores each conversation twice: once encrypted for sync, once for search). Agents can use it too (aichat search --json), and from a search result you can resume, or carry the work into a new session.
aichat also has other subcommands for working with sessions: porting one between Claude Code and Codex (or to another provider), rolling over to a fresh session that carries the context, trimming bloated sessions, moving a session to another project or account, etc.
No sync across machines; that's where Threads is nicer. Also Threads seems to show sub-agent relations and live-status, which mine doesn't. I like my TUI interface better though.
I suspect this is one of those problems "everyone" has built their own solution for. Including me!
I built slivingdoc[0] with an alternative approach: instead of syncing exact sessions (which are often quite noisy, and not so useful), the agents gets a living document with automatic merge conflict resolution backed by s3 ("infinite" storage). Idea being that the agents are prompted to summarize their context into slivingdoc as normal utf-8 files. So this way only you only need to add the stdio MCP server to all your harnesses which supports it and it just works!
Some harnesses are _super_ hyped about this concept. Codex needs no prompting at all to start communicating. I got the idea from enabling agentic forums via all the openAI hacks.
Really enjoyed Atuin for a few weeks, until I realized it doesn't have correct `EFSRO` (Error: Read-Only File System) handling. So when my `/home` mount had a raid array drive failure it broke my local shell. Issue has been sitting open for almost a year. Pretty disappointing.
"Just" filing an issue takes time and effort. Providing a patch takes significantly more time and effort. Potentially the difference of a few minutes vs a few days, weeks, or longer, depending on the issue at hand.
There is value in filing well written issues, and no one should be shamed for "just" filing an issue to the people best equipped to resolve it, rather than trying to fix it themselves.
stronglikedan 1 days ago [-]
You should probably have read the comment that person was responding to, because you seem to have taken the response out of context. OP did file an issue over a year ago, and didn't submit a patch, so they did indeed "just" file an issue. Then they proceeded to whine about no one working on their issue for free.
trog 21 hours ago [-]
Didn't read as whining to me, just accurately describing a bug with an anecdote about how it negatively affected them. Then a developer turned up as if hurled from the sky and fixed it! The system works!
23 hours ago [-]
giwook 1 days ago [-]
Very disappointing when something you get for free isn't the way you want it to be.
yababa_y 22 hours ago [-]
I've been maintaining a tool that does similar: https://github.com/emberian/cv. High performance parsers of the major harness formats at several versions. Not as much autosyncing. Great results using custom prunings compared to compaction summarization.
talloaktrees 1 days ago [-]
I've built this for myself, but not across multiple machines.
It scans the session logs of all coding harnesses I use, one extra thing it does is create embeddings to allow hybrid BM25/semantic search.
I think these kinds of tools are on of the few times I've spent time "using AI to work on my AI tools" that was actually a good use of time.
It's so useful to be able to say "search sessions for the time I was working on XYZ 3 months ago"
all2 1 days ago [-]
I've done exactly this.
I'm also experimenting with a 'dream mode' that extracts facts, and a 'librarian' that stores those facts in the MD wiki.
I don't know if there's a benefit to that yet, but I'm going to find out.
ellieh 1 days ago [-]
I've been experimenting with the same thing! Still don't have enough evidence to be able to say if it's beneficial or not, but hopefully will have a conclusion soon
orbis-tertius 1 days ago [-]
I love Atuin, but have some reservations about a shared server keeping all my shell history and agent sessions. Am I being too paranoid and missing out on convenience?
aaronax 1 days ago [-]
It is encrypted client side. Or you can run your own server.
> Am I being too paranoid and missing out on convenience?
No, I'd say it is more-so a lack of reading the article that is causing you to miss out.
orbis-tertius 1 days ago [-]
I did read the article but missed that. Paranoia can definitely co-occur with distracted reading, they're independent dimensions ;)
Thanks for the info, will give it a try
dietr1ch 1 days ago [-]
Same, I really wanted to share history, but when I realised I was going to need to send things to a remote server I instead wrote a tiny script to search through backups that are shared across machines by Syncthing.
I just search over $BACKUPS/*/latest/local/share/fish/fish_history with grep and skim
forsalebypwner 1 days ago [-]
Atuin offers a self-hosted backend server for syncing, so you don't need to trust anybody
dietr1ch 24 hours ago [-]
It's centralized, which is annoying unless you can trust A machine you own to be up and reachable by all others all of the time.
orbis-tertius 1 days ago [-]
Nice solution
turbocon 1 days ago [-]
Atuin is open source, you can just host your own server?
orbis-tertius 1 days ago [-]
Fair enough, I missed that. Will give it a try!
jwr 1 days ago [-]
But… you don't have to sync anything?
1 days ago [-]
totetsu 1 days ago [-]
I cant get used to it taking over the entire screen when scrolling history
rao-v 1 days ago [-]
I faced this too! Turned out it’s an easy config change to limit to height of your choice
totetsu 1 days ago [-]
atuin config set inline_height 5
export ATUIN_NO_MOUSE=true
thesurlydev 1 days ago [-]
I've a love affair with Atuin but this may turn into a full blown obsession
ellieh 1 days ago [-]
love to hear it! lmk if there's anything we can do to be better (ellie@atuin.sh)
stasomatic 7 hours ago [-]
This sounds cool but over my head. I've used Atuin but only for history, so I switched back to the good old fzf for that. For session history, I used codex and Claude hooks to write to an SQLite, but Atuin now makes a lot more sense.
oorestisime 9 hours ago [-]
I avoided this by not spreading sessions across machines. I have one PC at home that stays on and runs an OpenCode server, and I attach from my laptop or my phone over Tailscale. The session stays on that box, so I don't have to resume it anywhere else. One of the reasons i dont see the appeal of cloud sessions.
I've gone a different route and prefer using the native harnesses (Claude, Codex), but with multiple accounts due to the limits.
In order to easily switch between accounts I've build Switcheroo, which I've been using for the past 2-3 months now. I've decided to open source it: https://github.com/FTCHD/switcheroo
Works with other AI CLIs like Gemini, and other various CLIs like Vercel (if you're managing multiple accounts like me), Netlify, Github etc
crashabr 23 hours ago [-]
Interesting, does it avoid the little song and dance to switch between claude accounts? I think ideally there could be a coordinator session that monitor session usage and tell other sessions to pause their work at around 95%, and run your tool to switch those sessions to another account. Then tell the other sessions to resume their work. Ideally that session could stop and start the claude background processes, which avoids remote control disconnection when switching session. And that session would of course be isolated to avoid being affected by the account change
ellieh 1 days ago [-]
this works with native harnesses, and is neither a harness nor a wrapper of them
atuin stores, searches and syncs agent sessions regardless of harness or setup
all2 1 days ago [-]
Fascinating. I just finished implementing this.
https://github.com/comalice/pi-tools contains a 'memory everywhere' module that makes all sessions BM25 vectors, and surfaces a set of memory tools to enable agents to search. You can add a new machine to the mix by registering a 'spoke'. The app runs on the 'hub'. I want to containerize the core app soon.
You can also change which computer is the hub fairly easily.
NelsonMinar 1 days ago [-]
It's not clear which parts of Claude state are safe to sync and which you want to keep local to one machine. I'm doing something with syncthing trying to keep agent session history available and little bits of it keep breaking. I haven't looked at this new feature in atuin does it have a really good understanding of what is worth syncing?
suis_siva 1 days ago [-]
One of the Atuin engineers here. Not sure wht your definition of safety is, but Atuin doesn't attempt anything special in terms of deciding what to sync. Pretty much everything is synced.
All your sessions are end-to-end encrypted so only your machines have access to your sessions! Happy to answer any other questions!
tristanMatthias 23 hours ago [-]
Will this work for Claude code web sessions?? I am DYING to be able to control and sync between them locally. IE take advantage of anthropics compute to build my toolchain which, when running many sessions locally uses significant ram.
ellieh 23 hours ago [-]
not yet but we're definitely interested in figuring out how to make that happen!
RyJones 1 days ago [-]
I've been using (and supporting) atuin for a while, and I find it a required bit of infrastructure. This is a nice upgrade!
baskar12ai 1 days ago [-]
Yes i too faced the problem, lost valuable content across group of chat and not remembering in which chat it was. Tried searching but couldn't find it. Even asked ai itself does about the content whether it remembered.
ellieh 1 days ago [-]
atuin threads solves that problem!
ashenke 1 days ago [-]
I love this new AI era of coding where the HN submission is about a new way to manage agent, and almost literally all the comments are "I just finished implementing this myself"
It's almost like a parody.
nurple 1 days ago [-]
This is something I've noticed more widely and is something I think we're going to have to grapple with sooner or later. If anyone can make any software, what happens to our shared computing reality? Now one can steal features from 3 or 4 similar projects and compose exactly what I want, and there are now 5 similar projects.
Similarly, I've already had many issues with project shunning me because I come with AI assisted code, no matter the quality of the contribution. With NixOS it's extremely simple to carry patches, and I do this with a number of projects (k3s, kata, Ardour).
It feels like long-term forks are something we're going to have to accept as the new reality, and find some way to weave together in a new way, rather than as just an escape hatch to route around maintainer issues.
0cf8612b2e1e 20 hours ago [-]
I am not sure that question really applies here with AI tooling. This is still an immature field where people are discovering optimal workflows.
Not to sound too Dropboxy, but you could get an 80% solution to this problem with rsync and a hundred lines of python. Or just punt it all into git. I regularly see people inventing their own workflow utilities. Less so someone vibing a custom IDE.
TheIronYuppie 1 days ago [-]
I’ve been a supporter of Atuin and forever, and I really like her model here.
Atuin is so invaluable to me, I self host an atuin server but even client only is amazing.
GNOMES 1 days ago [-]
Correct me if I am wrong, but I imagine this would hammer one's token usage to read past entries to resemble context across machines/terminals and models?
forsalebypwner 1 days ago [-]
I don't think this, by default, has any effect on anybody's token usage, it's just a way to save these sessions if you need to reference them again in the future. Unless of course you choose to provide a previous session to a new agent, but that should be expected.
krisgenre 18 hours ago [-]
I think Jetbrains Air is trying to do this but not across machines.
ndrake 1 days ago [-]
Would be great if you could disable sync for Threads but keep history sync going.
amelius 1 days ago [-]
Aren't session also deleted after some time? It would be nice to keep them.
ellieh 1 days ago [-]
they are! claude deletes them after 30 days, but Atuin Threads keeps them synced and searchable forever :)
languagehacker 1 days ago [-]
Probably a little late to this, because herdr has really eaten this segment. With their new Mac app, I don't see myself going back to atuin for this kind of experience. In fact, I get a little peeved using it on a vanilla terminal.
t0mas88 1 days ago [-]
I'm using atuin as part of my Herdr setup. Atuin is not a replacement shell or multiplexer, it's basically a really advanced shell history.
ellieh 1 days ago [-]
Threads doesn’t compete with herdr, the two actually go together really nicely
Atuin indexes all your past sessions, herdr multiplexes all your present sessions.
What peeves me is the poor responsiveness when navigating history. Pressing up or ctrl+r has this lag which throws off my typing. I'm on a pretty well specced setup, too. I used to be able to tolerate it, but since I barely do things directly from the command line anymore and have Claude worry about most of the command construction, the experience can be particularly grating.
Chalk it up to ever more instant gratification :)
ellieh 1 days ago [-]
great! please let me know if you have any issues
Ahh. We've done a lot of work to improve this lately, if you're not using the daemon please try
```
atuin config enable daemon
```
and it should perform much better (it's the default on new installs)
gf000 1 days ago [-]
Its multi host mode is pretty limited still. Like especially with a web ui, it will just install a random, auto-updating binary on the other machine, which I didn't feel comfortable with. I would much rather have herdr itself manage the connection completely, not a plugin.
petesergeant 1 days ago [-]
I've spent the last couple of months putting a lot of time and energy into isolating my agents from each other: aggressive sandboxing, regular scanning of transcripts for agent-leaked credentials, per-agent encrypted credential stores, even physical (and network) separation of machines with different areas of work on them. Needless to say, as much as I have found atuin an excellent manager of my command-line history, I will be avoiding this.
ahmedketata 1 days ago [-]
yes agent leak secrets “Yes, and don’t ask again” in Claude Code would also save secrets in .claude/settings.local.json.
jothimani 1 days ago [-]
Yes and the bigger problem for me is the agent can write to that file too. The file that decides what it is allowed to do is just another file in the repo for it. I now treat the agent config files as something to protect from the agent itself, not only from other people.
jothimani 1 days ago [-]
[flagged]
tacker2000 1 days ago [-]
So now everyone and their mother are putting out AI harnesses/session managers aka browser tabs for AI.
ellieh 1 days ago [-]
they are, but this isn't one of those
atuin threads stores every turn for every harness you use, syncs it across machines, and makes it searchable and resumable anywhere.
it's not a replacement for your harness, or your harness wrapper.
sooheon 13 hours ago [-]
Yeah this is cross browser history, not tabs.
Nursie 1 days ago [-]
It’s likely because you can vibe code the bones of one in a few hours.
This week I got Claude to build me a browser-based session manager to keep track of sessions and history of tasks. Works well enough for me and I’ll add features as I need.
cellularatom 5 hours ago [-]
[flagged]
myagentbudget 1 days ago [-]
[flagged]
agline_in 1 days ago [-]
[flagged]
sick_of_slop 1 days ago [-]
[dead]
LimitExperience 1 days ago [-]
[dead]
jackfreeman 1 days ago [-]
[dead]
sehw 1 days ago [-]
How much electricity wasted?
ellieh 1 days ago [-]
idk it's actually super low on compute, doesn't use tokens, mostly just needs storage
It's a bit hard to decide where to hook in.
Rex has events, harnesses have hooks, terminal output can set program status, git has hooks.
I'm not sure I actually want every session from every machine saved. That's a lot of noise especially when half of coding sessions are experimental / throwaway.
But at the same time its not that much data that's easy to ripgrep / LLM through.
We actually don’t use hooks at all at the moment, and instead rely on parsing session files
Agents are definitely super good at searching and finding relevant data amongst noise!
As far as I know(?) beta testers don't have the ability to give out invites anyways. At least I don't.
On my machine, with ~22 GB of sessions, its index is under 1 GB, while Threads added 8.1 GB after importing the same sessions (it stores each conversation twice: once encrypted for sync, once for search). Agents can use it too (aichat search --json), and from a search result you can resume, or carry the work into a new session.
aichat also has other subcommands for working with sessions: porting one between Claude Code and Codex (or to another provider), rolling over to a fresh session that carries the context, trimming bloated sessions, moving a session to another project or account, etc.No sync across machines; that's where Threads is nicer. Also Threads seems to show sub-agent relations and live-status, which mine doesn't. I like my TUI interface better though.
https://pchalasani.github.io/claude-code-tools/tools/aichat/...
I built slivingdoc[0] with an alternative approach: instead of syncing exact sessions (which are often quite noisy, and not so useful), the agents gets a living document with automatic merge conflict resolution backed by s3 ("infinite" storage). Idea being that the agents are prompted to summarize their context into slivingdoc as normal utf-8 files. So this way only you only need to add the stdio MCP server to all your harnesses which supports it and it just works!
Some harnesses are _super_ hyped about this concept. Codex needs no prompting at all to start communicating. I got the idea from enabling agentic forums via all the openAI hacks.
[0]: slivingdoc.dev
Will fix.
There is value in filing well written issues, and no one should be shamed for "just" filing an issue to the people best equipped to resolve it, rather than trying to fix it themselves.
I think these kinds of tools are on of the few times I've spent time "using AI to work on my AI tools" that was actually a good use of time.
It's so useful to be able to say "search sessions for the time I was working on XYZ 3 months ago"
I'm also experimenting with a 'dream mode' that extracts facts, and a 'librarian' that stores those facts in the MD wiki.
I don't know if there's a benefit to that yet, but I'm going to find out.
> Am I being too paranoid and missing out on convenience?
No, I'd say it is more-so a lack of reading the article that is causing you to miss out.
Thanks for the info, will give it a try
I just search over $BACKUPS/*/latest/local/share/fish/fish_history with grep and skim
export ATUIN_NO_MOUSE=true
$ ctools resume ssh://laptop.local/code/project
Goes to laptop.local, looks for sessions done in that path, finds the most recent, copies it locally and resumes it.
There's also ls, grep, copy, cat... It looks and feels like the existing tools, that's the point.
Workflow is the thing that matters here and I'm terminal first
I'll make it more flashy soon https://github.com/day50-dev/ctools
In order to easily switch between accounts I've build Switcheroo, which I've been using for the past 2-3 months now. I've decided to open source it: https://github.com/FTCHD/switcheroo
Works with other AI CLIs like Gemini, and other various CLIs like Vercel (if you're managing multiple accounts like me), Netlify, Github etc
atuin stores, searches and syncs agent sessions regardless of harness or setup
https://github.com/comalice/pi-tools contains a 'memory everywhere' module that makes all sessions BM25 vectors, and surfaces a set of memory tools to enable agents to search. You can add a new machine to the mix by registering a 'spoke'. The app runs on the 'hub'. I want to containerize the core app soon.
You can also change which computer is the hub fairly easily.
All your sessions are end-to-end encrypted so only your machines have access to your sessions! Happy to answer any other questions!
Similarly, I've already had many issues with project shunning me because I come with AI assisted code, no matter the quality of the contribution. With NixOS it's extremely simple to carry patches, and I do this with a number of projects (k3s, kata, Ardour).
It feels like long-term forks are something we're going to have to accept as the new reality, and find some way to weave together in a new way, rather than as just an escape hatch to route around maintainer issues.
Not to sound too Dropboxy, but you could get an 80% solution to this problem with rsync and a hundred lines of python. Or just punt it all into git. I regularly see people inventing their own workflow utilities. Less so someone vibing a custom IDE.
Excited to try it!
More of a desktop flavor though
Atuin indexes all your past sessions, herdr multiplexes all your present sessions.
We made a mod for herdr desktop to integrate the two: https://herdr.dev/mods/atuinsh/herdr-atuin-threads/
What peeves you on the vanilla terminal?
What peeves me is the poor responsiveness when navigating history. Pressing up or ctrl+r has this lag which throws off my typing. I'm on a pretty well specced setup, too. I used to be able to tolerate it, but since I barely do things directly from the command line anymore and have Claude worry about most of the command construction, the experience can be particularly grating.
Chalk it up to ever more instant gratification :)
Ahh. We've done a lot of work to improve this lately, if you're not using the daemon please try
``` atuin config enable daemon ```
and it should perform much better (it's the default on new installs)
atuin threads stores every turn for every harness you use, syncs it across machines, and makes it searchable and resumable anywhere.
it's not a replacement for your harness, or your harness wrapper.
This week I got Claude to build me a browser-based session manager to keep track of sessions and history of tasks. Works well enough for me and I’ll add features as I need.