I built guardrails to keep my agents in line.
Turns out they were the rules every human team I'd been on always needed.
I ship real production software with AI agents — have for a few years now. So naturally I tried to run more than one at once. The wheels came off immediately.
With issues as the source of truth, "is this done?" was a guess. An agent would finish a task, its context would compact, and a loop later it couldn't tell its own work had landed — so it cheerfully did it again. Two agents would eye the same open issue, both decide it was theirs, and both go build it. And a greedy loop would claim every ready ticket on the board, leaving the rest of the fleet idle.
Here's the part that stopped me cold: I'd seen all of this before — from humans. The teammate who force-merges over a fix nobody can find anymore. The one who skips the PR "just this once." And the classic: the developer who assigns themselves ten tickets, struggles through one, then goes on vacation with the other nine still locked under their name while the team grinds to a halt.
The problem was never really the agents, and it was never really the people either. It was a board that assumed one careful human was watching it — where "assign to me" isn't atomic, nothing remembers what's done, and nothing stops one worker from swallowing the whole queue.
So I built the thing I actually needed: a board that is the source of truth, that outlives the context window, with a queue that hands each worker only what it can take, a claim that can't be double-grabbed, and a cap so no one hoards. Humans and agents work it side by side, and they stay out of each other's way because the system makes them — not because they remember to.
TaskHarbor is that board. I built it for myself and my own agents. I'm sharing it because a lot of teams are about to be a mix of people and bots, and they're all going to hit exactly this wall.