Members-Only
Recent Talks & Demos are for members only
You must be an AI Tinkerers active member to view these talks and demos.
April 06, 2026
·
Columbus
Parallel Coding Agents Without Merge Hell
Explore parallel coding agents by treating version control changes as work units, avoiding merge conflicts with Jujutsu and phased orchestration for a reliable multi-agent workflow.
Overview
Multiple coding agents in parallel against the same codebase by treating version control changes as the fundamental unit of agent work. For the demo, I’ll show agents working simultaneously on distinct tasks across a shared repo, with their work composed cleanly
Video
Transcript
Generated 3 months ago
Summary
Generating a talk summary...
View full transcript
Speaker 0: Yep. Yep. That was that was the quickest Michael. And I've got limited, capacity on on my Mac Mini, so I've gotta be really careful in terms of, you know, how much, how much memory I'm consuming. So yeah.
Speaker 0: So reasoning quality matter more than speed, thinking mode was the difference, and that's a pattern too. You can see the pattern here. Local LLM is a classification layer. So alright. So your agents have had about 15 minutes with the with the repo by now.
Speaker 0: I'm curious what they found. Did anybody get any results back?
Speaker 1: Oh, yeah.
Speaker 0: Did your agent
Speaker 2: I've got a PR agency.
Speaker 0: You do? Yeah. Okay.
Speaker 2: I've got a new tab.
Speaker 0: Yes. And
Speaker 1: my agents came up
Speaker 0: with it. Hell, yes. That is awesome. So, and in fact that's really what I'm most curious about. You know, it's 1 thing to say hey, here's here's a here's a repo of patterns that, you know, your agent can use to solve these problems in ways that we've that we've solved them.
Speaker 0: You can also improve them, but it gives you an opportunity to find patterns yourself that you can that you can then commit to the repo and then the community benefit. So so, yeah, this is where it gets exciting. So anybody else? Yeah.
Speaker 2: Do you so is this more geared towards, like, your OpenClaw type of agent or a coding agent or it doesn't matter?
Speaker 0: It doesn't matter. It doesn't matter. I mean, if you're building I mean, we're talking with Jonathan back here about building an application. Right? I mean, presumably, you've got your code, committed to GitHub repository.
Speaker 0: You can point, your GitHub you you can point, your agent, the quad code or whatever you're using, to that, repository and then use these patterns to help it to improve, your application. Yeah.
Speaker 2: I guess,
Speaker 1: what's such a way to contribute to this if I have patterns that I think I'm passionate about? Like, what's the process to is it a pull request? Or do I get a call with 1 of your your guys? Yeah.
Speaker 0: Yeah. In fact, I I I've got all of the instructions here. You you can just go down and you can see, you know, what the code of conduct is, what, I've and I I I do have a governance process that I haven't committed to this yet because I not only want you to be able to commit your own patterns, I want you to be able to look at this and go, wait a minute. This pattern you got in here has some flaws in it. It's got some errors Mike, the 1 that I mentioned earlier.
Speaker 0: So, there's versioning and so forth that's coming. This is pretty pretty new off of the off of the the press. It uses CC by 4 0. So, you know yeah, man.
Speaker 2: Yeah. So when you're those are the actually, are you using primarily when you're writing files, that I guess, like, when you consider, like, new stuff or specific to OpenLaw, are you generally leaving that in the OpenLaw workspace, or are you allowing OpenLaw to, like, kind of write notes all over the Mac? Mini.
Speaker 0: Yeah. Yeah. It it's a bit of a mess. I mean, I I can well, I can't show you from here because, I don't have access to my, my Mac mini. But but, yeah, if you saw my Mac mini, that's definitely another pattern.
Speaker 0: I've got draft emails and all kinds of shit that's sitting out there that probably could be cleaned up, and that's definitely another pattern that I've thought about. I haven't touched it yet because it's not bothering me too much, but, yeah, I'm I generally try to keep everything so far contained in 1 workspace. Yeah. Actually I I guess I guess what I can do is I so I I've got my entire OpenClaw implementation Sean committed to GitHub. So, so I I can probably give you an example here.
Speaker 0: I I can't actually see the code. So let me do this. So you can see, like, I've got, I've got these, like, CSV files that are sitting out here that are are you know, can be cleaned up, Cincinnati attendee CSVs. I've got my memory files. I've got attend you know, attendee files and so forth.
Speaker 0: I've got an MCP server that I created. I've got a bunch of drafts out here that I've that I've created, different emails and things like that. So there's definitely opportunity for me to to to, you know, clean this up. Maybe it's it's something that I can add to the the REM, script. So
Speaker 3: Question for you.
Speaker 4: Yeah. It seems a lot of this it it I find this tremendously interesting because it seems like you you've really made a connection between, governance which needs to be made whenever something is, created and, you know, then trying to create the struggle of creating specific technology rules, you know, to to adhere to those things. Yep. And I wonder how much of that how much of that was based upon finding the situations after the fact, like you kinda mentioned? And then how much of that have you been able to, you know, kind of front load before the before the application went out?
Speaker 0: It well, it so as an example, it started to occur to me over time that merely relying on an an agent's memory is not a go forward strategy. You have to be really cognizant about your data architecture, and the AI system is not gonna do that for you. And so I just the trial and Erikson, I I had to there's a hell of a lot of work that you can do with with OpenClaw that you have to really do with OpenClaw to improve its memory. And those third party tools and so forth, we're using QMD and things like that. I've looked at, Mike, OpenBrain and and and so forth.
Speaker 0: But there there are decisions that I, as a human, really need to be in charge of making because and I'm sure everybody can can, will resonate with this is that your AI system will confidently send you in the wrong direction over and over and over again. I found myself going in circles multiple times going, wait a minute. What the hell? You know? And so, this was this was a way for me to go, you know what?
Speaker 0: I I need to be at the same par as my AI agent making these decisions and understanding what the hell it's doing, as opposed to just trusting it.
Speaker 4: Yeah. And I guess kind of expanding upon that when I think about that with enterprise companies, I wonder, like, how how do you then kinda get them to think about this with their multitude of structures and then to bring that alignment together, you know, as everyone is working very much to get things done as soon as possible to get
Speaker 3: to market
Speaker 0: That's right, man.
Speaker 4: And still keep things in a safe and ethical.
Speaker 0: 100%. 100%. Safe, secure, private, and you name it, man. Yeah. Yeah.
Speaker 0: Yeah. Oh, yeah. Yeah.
Speaker 1: So thank you.
Speaker 2: I need to still keep answering questions.
Speaker 0: I just Oh, okay. Sure. Sure. Sure. Yep.
Speaker 0: And you had a question back there. Right? This is cool.
Speaker 2: You can use Whichever
Speaker 3: you want. This is or that.
Speaker 2: There was an episode, Mike or 4 back. Those that might be really relevant to what you're doing, but you've been trying to figure out how to basically, like, top load memory and context into, like, a, like, personal archives
Speaker 1: and then you
Speaker 2: can go back and forth.
Speaker 3: Yeah. But if you're doing it, it's probably,
Speaker 2: it's, like, very much in line with what you're trying to do.
Speaker 0: Thank you. Yeah. And and this is exactly what this is about. You know? And I I don't I don't wanna just, you know, leave it to, you know, events like this and so forth to share this information.
Speaker 1: You know?
Speaker 0: I this is an opportunity for us to, you know, collaborate with our agents
Speaker 2: to Oh, awesome. That seems like an absolute
Speaker 1: shit ton of work. Yeah. It took a week. It wasn't really? It took me this is my in fact, this is my first time talking
Speaker 2: about it
Speaker 1: in public.
Speaker 0: So this is the It's
Speaker 2: very cool.
Speaker 0: Yeah. Thanks, man.
Speaker 2: I appreciate that. Thanks, Sean. Thank you. I wasn't sure if Mike was able to gonna be able to make it. He had a personal emergency.
Speaker 2: So but I'm glad you were able to. He's gonna tell us a little bit about jujitsu and agentic coding.
Speaker 3: Sure. Is that Parallel coding? Yeah. Parallel development. Yeah.
Speaker 3: Oh,
Speaker 2: and he got hit with the cloud code team for third parties yesterday, so he had to scramble.
Speaker 3: Yeah. So this, I hope this works. My my original intent was to show you, like, my original harness and all of that. And then anthropic yesterday, he was like, you know, you're not allowed to use your harness unless it's, you know, a anthropic harness. So unless it was, like, cloud codes, so I was like, yes.
Speaker 3: Awesome. So I could spend $80 and show this to you, or I could make a new script. So manuscript because I'm cheap. So who uses, Git for version control? Most people anybody use anything besides Git?
Speaker 2: What do
Speaker 3: you use?
Speaker 2: Git Butler.
Speaker 3: Git Butler. I do. Around it. Cool. Jiu Jitsu.
Speaker 3: Oh, hey. Nice. So j, JJ is or jiu jitsu jiu jitsu is a little bit different version control. If you try it, I think you'll like it. What we're gonna just start here is I'm kicking off a loop with it, and I'll kinda walk through it.
Speaker 3: Oops.
Speaker 2: It's not. Don't mess anything up.
Speaker 3: Yeah. Okay. Let's see if we're able to see it. So, how JJ works is you don't really commit. Everything that you do is just naturally stored in logs.
Speaker 3: So you could think of it as, like, as soon as it makes any change, it makes a commit. So you don't have to worry about, like, tracking or, adding, any of your commits that you have. It does it automatically, and it does it by these little branches. So or bookmarks. So this 1 right here, what all what else is nice is, like, you can say j j w, and, like, that that's actually the bookmark.
Speaker 3: Instead of typing out the entire bookmark, it just refers to this first 1. So it highlights the unique character in here, so you could run multiple at a time. There are a couple of things that make JJ, like, really awesome. 1 of them is merge conflicts. If there's a conflict in between 2 different thing 2 different branches or bookmarks, as they call them in JJ, it just marks it as a conflict and moves on.
Speaker 3: Like, it's not a show stopper like it is in Git, which means for those of us who like to code with, agents, is we can run a ton of agents. They can have a bunch of conflicts, and that's okay. And then we can keep moving. So your process doesn't stop when you have, you know, a long development process trying to automate all of it. Instead of stopping all the way through, this just allows you to put a little pause on it.
Speaker 3: And then at the very end, you can say, they have, like, an auto merge feature, which is also quite fantastic. If it makes sense, then it'll just, like, squash all of them together. If there are true conflicts, then they have, like, a more intelligent way to, to merge the the different bookmarks. And you can put an LLM in front of that as well, so you still don't have to be in the loop. The LLM can see all the different changes and say or see all the different conflicts and say,
Speaker 2: you
Speaker 3: know, this is what we meant to do in this area, and then you can combine multiple agents. So that allows us to instead of using, like, Anthropic's, long running harness, which is, like, 1 task and then another task and then another task, and as soon as it's done, like, you can cross it off the list. This allows us to kinda decompose our PRDs in a little different ways. So this is an example. We'll start to see running through here, and it'll have different phases, and you'll see the JJ log.
Speaker 3: So our initial part is down here, and then we spin off a couple different agents. Each 1 of them gets their own bookmark.
Speaker 2: And I
Speaker 3: think there's a 2 way I can launch here. Yeah.
Speaker 2: Let's see if this kicks up.
Speaker 3: I'm not sure if this will work or not. It looks like it is. Okay. So we have 1 orchestrator, and then it has 2 different agents in the first phase, and it's planning 1 agent in the second phase. And then it can show its progress and duration, count everything that it needs to.
Speaker 3: Kick off the loops. And as these work, there there's gonna be a little bit of extra step on the very front end to teach your agent how to decompose your PRDs. So you're gonna wanna have, like, more of a system on how you create your PRDs and then how you decompose them. But if you can do it in parallel, you can add these together and, you know, kind of merge them quite easily. Stuck here.
Speaker 3: Still running. Still running. Okay. Yeah. So part of phase 2 is moving on.
Speaker 3: So this creates a, DAG within JJ because it is able to the orchestrator sees all of the sub agents and then sees all the dependencies. It sees that ahead of time by using by kind of decomposing that PRD to say, like, know these shouldn't conflict, so I'll put them over here. And we still try to separate, concerns here. What is interesting about this is this is captures the entire build log of every agent that you have. So if you ever wanna, like, go backwards in time and say this agent, what did he do at this point?
Speaker 3: Because I think this is what where my issue is. You're able to do that.
Speaker 2: Yeah. It's auto it's auto added to the commit log. Yeah. Nothing's ever lost.
Speaker 3: It is a little tricky, with bookmarks because if you switch back and forth, it was meant for, like, get 1 person to go into, you know, do their version control and, you know, switch back and forth. Not really meant for a bunch at the same Mike. So it can cause, a stale branch. I don't know if you've run into that much. But started using
Speaker 0: Workspace. Yeah.
Speaker 3: Yeah. So Workspace is, same thing as the, Gits equivalent, work trees. Yeah. Battery now? Yeah.
Speaker 3: It's it doesn't take up near as much stuff, near as much space on your machine. The other thing that we can do, is you can remove the detach the op head, and that's so if you go to, like, op j j oplog, it shows you everything that has happened with all of the agents, and that's what can also cause some of the stale issues. Yeah.
Speaker 2: Are there hooks Mike a pre like, I I know it's not there's not
Speaker 0: a commit action, but are there a is
Speaker 2: there a life cycle hooks you could inject, like, linting or testing? It's
Speaker 3: a very good question. If you put a harness on top of it, there are. So absolutely where where, like, you should be headed, and that is what I what I've done with my harness as well. But it doesn't come straight from the version control.
Speaker 1: And I'll just demo the harness as well. So I I switched over more to Kiwi k 2.5 for the same reason. Right? Because I'm probably gonna Mike, have you thought about investing or thinking about what would you switch to? Have you done your research on?
Speaker 1: What would you move away from cloud into another affordable
Speaker 3: subscription plan? Yeah. I did that, I think before, like, wintertime in in 2025 because that's when it was still kind of a, you know, hit or Mike, what do I want? And then, you know, Opus and Sonic came out, and it was Mike, yes. I'm not gonna use anything else.
Speaker 3: But no. There there is a, repo, I forget the name of it now, that, is very interesting where you can, like, test it against multiple, a multitude of models at the same time in your tasks and see which one's best for it. But, yeah, QME k 2 is pretty cool. Oh, the op ed part. So if you wanna get away from the stale branch or bookmarks that will happen, and it can all all it has to do is refresh, but it still takes a few extra steps to do that, and that takes more time, and that then makes your whole process slow down a little bit.
Speaker 3: So I, forked JJ and and created what I call JJ Dev. And it's a repo, you know, still does all the core JJ things, but it instead of having 1 op log, it now has remote op logs. So you can have 1 remote op log per orchestrator. They can do all of their things. There are no stale, bookmarks, and it speeds up and saves quite a bit of time.
Speaker 3: And then the, they have, like, what they what I call, like, an octopus merge at the end, where they all kinda come together and merge. It's the same type of merge as the normal JJ does, just on an off log level or higher. Yep.
Speaker 2: Do you have instructions or something that help it with the merge conflicts? I know it can continue on, but, like and it's a separate it's actually a separate commit for the conflicts, but you still have the conflicts. And, like, how do you usually go about resolving those?
Speaker 3: I put a I put, like, Opus on it. And as soon as Opus is on it, then it it does a pretty good job of knowing, like because it still has it actually goes back to, the PRD, essentially. So it knows, like, the plan that we were supposed to build, and then it sees the conflict, and it can make the decision from there. Okay. I could also switch that out for, like, a human loop at that point, where you can see, like, the, you know, 5 or whatever different conflicts you have, and then, correct it manually.
Speaker 2: I had to open abandoning thing, so I had to update my
Speaker 3: Oh, yeah?
Speaker 2: It's Mike, where did these files go? They're not gone. They just weren't, like, there where I was at. Yeah. And so it was able to trace back up, find them, and figure out what it did.
Speaker 2: It's like, oh, I Sean abandoned in this other session or something. Okay.
Speaker 3: Yeah. So
Speaker 2: So it wasn't a problem because it's all there, but Claude was able to figure out once I saw the files were missing, what happened.
Speaker 3: Yeah. That in so in my the harness that I have, it it has a hierarchical orchestrate orchestration on it. So as soon as those agents are done, that orchestrator is in charge of making sure all of that work lines up, which is where it should catch those types of things, and then you can stack it on top, you know, for more and more things. You can if you run the API bill on this, it can get pricey really quick because you can, you know, you can run a couple 100 agents very quickly. I'll say the quickest stupid mistake I did was I ran a 150 agents once on 1 Mike.
Speaker 3: So that was a lot of wasted money.
Speaker 2: How long before you caught
Speaker 0: it? Oh, it
Speaker 3: happened instantly. No. So they just all yeah. It was too late.
Speaker 1: Is this open source where, like, I because I felt
Speaker 0: the hardest, but I would like to, you know,
Speaker 1: kinda have my AI Sean your agent. And this is where it's Mike if I come to talk like this, right, if I see a code base, where you're doing something, you'll be super interesting. If I got my AI kinda take what I think I love about yours and merge into mine, that that would that would be really cool.
Speaker 3: The JJ Dev is. So the fork of JJ is, which is probably where I think you guys would get the most value. But if you're really interested in the harness, you know, I can
Speaker 1: Yeah.
Speaker 2: I
Speaker 3: can talk about the harness probably another time and show that. It's currently not open source, though. My view on that right now is that you should be working towards creating your own harnesses, but my harness is likely not gonna work as well for you.
Speaker 1: Well, so I have my harness too. That's my talk about as well. This is where if I can have my I understand my harness, scan your harness, and take web wins with your harness and incorporate it to Mike, that could give me better room. That's what I'm asking for.
Speaker 3: Yeah. You know,
Speaker 1: and my harness is open source, so I can do similar things.
Speaker 2: It could be a bit of
Speaker 1: a harness mutual to the main thing.
Speaker 0: This is kind of the the the concept behind all the patterns as well. You could take that harness, document the pattern, commit it
Speaker 2: to the repo, and then
Speaker 0: have your agent build that harness. And you and if you wanna if you have secret sauce or whatever they want, obviously, you wanna give those details to the repo, and, you know, as as a way to share.
Speaker 3: Yeah. That that would be good. And I'm I'm not totally opposed to it. I just haven't really, had a good reason to open it because, you know, it's it's typically more catered to each code base. At least that's how I'm seeing harnesses because they they can be really effective if you have them, you know, mapped to that code base.
Speaker 2: I mean, I showed why you wouldn't open source. That was what I just presented because you can reverse engineering software and, you know, you can just put a mod at it and take pieces and parts or the whole thing and clean room it and then run it forward and have that functionality, which is what I did for my deep research CLI. So
Speaker 3: Yeah. I mean, I guess, when you think about it, software is not really a it's not a moat anymore. So if I think I have anything special, it won't be special in 6 months. So Right. Yep.
Speaker 3: Yep. Not not a big deal. What what I do have, which is really cool that I might wanna do another talk on, after this is after these rung, they go through a ML loop, which is self learning, and it captures the different, you know, patterns type things for my particular, you know, use case. And I think that that's really interesting, and I thought about an open source version of that, but it needs so much detail to actually be able to understand where it went wrong. Like, it needs to know in like, where in each file, you know, was the error in this case.
Speaker 3: And it's not really something you can generalize or, like, keep personal information out of. So open sourcing it and having a bunch of people use it to find, like, the best orchestration methods for multiple agents sounds awesome, but I think we would have, like, way too much, you know, each person's project details into that, into that, database. But if that's something that, you know, anyone's interested in trying to, like, to categorize and, and run more, like, ML loops on, then that's something I'm certainly open to.
Speaker 2: Thanks, Mike. Well, I appreciate it. That that was everybody for tonight. So feel free to stick around, have some more pizza, drinks, commingle, talk to the presenters if you want. I'm putting something up.
Speaker 2: It's good to hear it though. So if you wanna RSVP or submit a talk for the next For May. So this is for May. Yeah. So and, again, we're doing the first Monday of every month.
Speaker 2: So first Monday in May, that's what that's for. We'll be back here doing it again. So looking for your talks and appreciate everybody's Mike. But, yeah, this is good. Yeah.
Speaker 2: Oh, yeah. We have stickers up here if you would like AI tinkerer stickers for your laptop or whatever or your kids. Future AI tinkerers. If you guys have any ideas, like, about
Speaker 0: Actually, like hackathons or anything? Like, you wanna make this feature?
Speaker 2: Too late.
Speaker 0: Someone came out to me
Speaker 2: and was like, it'll be really great. Is it is
Speaker 3: it? Oh, yeah.
Tech stack
Compose Email
Sending...
Email preview
Loading recent emails...