Running two or more coding agents against the same codebase can work well when their tasks are clearly separated.
It gets harder when agents run for longer periods, humans are mostly out of the loop, and multiple agents frequently read or edit the same large modules.
At that point, the problem is not only Git merge conflicts. It is also that each agent may be reasoning about a different version of the same file while they are still working. And about spending time and tokens to resolve merge conflicts.
I built agent sync layer (ASL) to experiment with this.
ASL lets coding agents work independently while synchronizing file changes through CRDTs. Compatible edits can converge, while stale or ambiguous overlapping edits are rejected instead of silently overwriting newer changes.
It supports Claude Code and Codex directly, and can isolate agents in separate worktrees while keeping their file state synchronized.
Example:
asl claude --name agent-a
asl codex --name agent-b
It launches like normal CC or codex, visually nothing is changed.
I think the most relevant use cases are:
This does not solve semantic conflicts. Two changes can synchronize perfectly and still produce broken code. Tests, type checking, and review are still necessary.
I tested ASL on my own setup and it worked for the workflows I was experimenting with. I'm not sure yet whether this is something developers actually need in real-world workflows, or whether task separation and normal Git workflows are already enough for most cases.
I published it anyway in case someone working with concurrent coding agents wants to experiment with it, and also as a project for my portfolio.
GitHub: