Run several agents on one repository
Coordination, intent, and how conflicting work surfaces.
Written By Dustin
Last updated 26 minutes ago
Agents each work inside their own agent/<name>/** lane scope, so they cannot interleave commits. Coordination is about not duplicating or fighting over the same files.
Declaring intent
tovio agent intent declare --token <token-id> 'src/parser/**' --ttl 3600tovio agent intent check src/parser/lexer.rs src/parser/ast.rstovio agent intent listThree details that trip people up:
- The globs are positional arguments, listed after the flags. There is no
--paths. --ttlis a number of seconds, defaulting to 3600.--ttl 1his a usage error, not one hour.intent checktakes concrete paths you are about to touch, not globs. It answers "is another agent working here?".
Intent is scoped to the token
A declared glob must sit inside the declaring token's own path scope. An agent cannot advertise intent on paths it could not write — otherwise the signal would mislead everyone reading it. A glob that begins with a wildcard (**/x, *.env) has no boundary the engine can check, so it is refused fail-closed; declare a concrete prefix instead.
Advisory, with one exception
Intent does not lock anything. It advertises what an agent is working on so others can steer around it. The single non-advisory outcome is a soft block: if another agent holds an advisory --lease over the same paths and the repository's coordination policy requires blocking, the declaration is rolled back and fails. An agent that means it can pass --force.
--lease itself only takes effect through a Forge's coordination registry. With no Forge configured, the command tells you the flag had no effect rather than silently pretending otherwise.
What intent check can and cannot see
intent check reads the declarations recorded in this working copy. Cross-machine overlap is detected at declare time, when the declaration is registered with a configured Forge and compared against other agents' live sessions, and it surfaces to MCP clients as coordination warnings on connect. So intent check is a good local guard and a poor fleet-wide one — do not treat a clean result as proof that nobody else is in that directory.
A Forge outage never fails a declare. The local declaration stands and intent check keeps working.
Why not locks
Locks are for content that genuinely cannot be merged, like binary assets. Source code merges, and blocking agents on each other converts a merge into a queue.
When work does collide
You get a conflict object. Your tree stays buildable, and tovio conflicts lists it — the same mechanism as human conflicts, with the same resolution path.
Keeping up
tovio sync --watchReviewing a fleet
tovio log --entity agenttovio agent listtovio agent intent listOne session is one admitted grant
Where hosted plans meter agent usage, the unit is the admitted session grant, not wall-clock time. A fleet that reconnects for every small task therefore costs more than the same fleet holding a session open across tasks — worth knowing before you design the orchestration loop around reconnecting.