Remix.run Logo
Show HN: A local merge queue for parallel Claude Code agents(github.com)
19 points by funador 4 hours ago | 6 comments

I have been pushing up to 90 commits a day on a MacBook Air via 4-5 parallel agents. As you can imagine when all the agents try to build, test and run dev servers on an 8GB machine it is the fast lane to a force quit and restart. I also did not want to pay the CI minutes on 90 pushes a day.

So I designed a local merge queue to have all commits land one at a time and fully tested. Hopefully this helps other folks with more modest machines. Appreciate any feedback.

barrkel 3 hours ago | parent | next [-]

A decent idea, however it seems to me a good chunk of it is because of git limitations. Have you looked jj?

I'm having a much better time with jj and a workspace per subagent than I was with git and worktrees.

It's still useful to have the CI gating on updating the master branch pointer, but you largely stop working with branches once you switch to jj.

kazinator 2 hours ago | parent | next [-]

git worktrees are a horrible misfeature; it's better to just clone multiple times (which you can do locally---space is saved by use of hard links!)

So that is to say, we clone some remote upstream down to /path/A. Then we can clone file:///path/A to /path/B locally. Both A and B are fully fleded git repos; no monkeying around with worktrees. The objects are shared between them with hard links. You can edit B/.gitconfig to point it to have the same upstream as A for pushing.

Unlike worktrees, you can blow away a repo with "rm -rf", and not worry that you are pulling the rug from under something which depends on it. If I have several trees, A, B, C, one of which is the parent, while the other are worktrees, removing any one of them randomly is Russian roulette: if we do "rm -rf B" and that happens to be the parent repo, worktrees A and C are no longer functional and need to be recovered. If A, B, and C are independent clones (even with objects hardlinked among themselves), this isn't a problem.

yiyingzhang an hour ago | parent [-]

What you described sounds like this: https://github.com/GenseeAI/gensee-crate. It offers whole workspace fork and merge. But the merge is still somewhat cumbersome and require manual overseeing.

funador 2 hours ago | parent | prev [-]

Giving up branches is the dream. This feels like the nudge I needed to give jj a proper go. Thank you.

orsorna 4 hours ago | parent | prev [-]

I have CI set up so that I can just let that handle builds and exclusive locks for me, but there are particular limitations (network connectivity is mandatory). I did this because I wanted to avoid something like you built, which theoretically can't scale as well as a dev box (much easier to extend deploy environments versus my local machine). I can see that you are working within resource constraints though which is admirable :)

funador 3 hours ago | parent [-]

Exactly, have to shave a few corners when your laptop doesn't even have a fan :)