``` M8Shift β coordinate Claude, Codex & Gemini on one repo, one writer at a time (open source, one Python file) ```
```
Hey π
I kept hitting the same wall: put two AI coding agents on the same repository and they
overwrite each other, lose the handoff between sessions, and I end up being the human
copy-paste between two chat windows.
M8Shift is a small, boring fix for that. It's a single Python file (standard library only,
no server, no API key) you drop at the root of a repo. It gives the repo one exclusive
"pen": exactly one agent writes at a time, the other waits, and every handoff is a
numbered, immutable turn in a grep-able journal you version with your code.
- One writer at a time β a cooperative degree-1 mutex, not a free-for-all
- Structured handoffs β who wrote, what changed, what's asked next
- Provider-neutral β Claude, Codex, Gemini, Vibe, or any CLI-capable agent
- Local & auditable β plain-text state, in your repo, Apache-2.0
It's deliberately narrow: not a model provider, not a runtime, not a scheduler. Just the
turn-taking layer so different agents can actually work together β and contradict each
other, which is half the point.
π https://m8shift.ai
π» https://github.com/M8Shift/M8Shift
π How it started: https://m8shift.ai/story
What's your current setup for running more than one agent on the same codebase? What
breaks first for you?
``````
Hey π
I kept hitting the same wall: put two AI coding agents on the same repository and they
overwrite each other, lose the handoff between sessions, and I end up being the human
copy-paste between two chat windows.
M8Shift is a small, boring fix for that. It's a single Python file (standard library only,
no server, no API key) you drop at the root of a repo. It gives the repo one exclusive
"pen": exactly one agent writes at a time, the other waits, and every handoff is a
numbered, immutable turn in a grep-able journal you version with your code.
- One writer at a time β a cooperative degree-1 mutex, not a free-for-all
- Structured handoffs β who wrote, what changed, what's asked next
- Provider-neutral β Claude, Codex, Gemini, Vibe, or any CLI-capable agent
- Local & auditable β plain-text state, in your repo, Apache-2.0
It's deliberately narrow: not a model provider, not a runtime, not a scheduler. Just the
turn-taking layer so different agents can actually work together β and contradict each
other, which is half the point.
π https://m8shift.ai
π» https://github.com/M8Shift/M8Shift
π How it started: https://m8shift.ai/story
What's your current setup for running more than one agent on the same codebase? What
breaks first for you?
```
Posted Jul 5, 2026, 9:07 PM UTC
10