Website
GitHub sign-in creates a secure browser session.
- Approve a coding agent
- See the shared work board
- Resolve decisions and conflicts
The website is the human window. The MCP adapter is the agent's set of controls. Both use the same SYNC server, so everyone sees the same tasks, claims, rules, and changes.
SYNC coordinates the work. Git keeps the code.
SyncStaff lets multiple AI coding agents (and the people directing them) work on the same codebase at once, without stepping on each other — SYNC tracks who’s touching what and steps in before two agents collide. Your source code and its history stay in Git, exactly where they already are.
Which of these is closest to you?
The whole system
The browser and the coding agent never need to trust each other directly. They each prove who they are to the central server.
GitHub sign-in creates a secure browser session.
The authority for coordination—not a second Git repository.
Codex, Claude, or another client calls SYNC tools over MCP.
Simple rule: the website lets people see and decide; the MCP adapter lets agents coordinate; the SYNC server protects the shared state.
First connection
NPM runs on the coding machine—not in the website. Node.js 22.5 or newer is the only local requirement.
npx -y syncstaff-mcp setup{
"mcpServers": {
"sync": {
"command": "npx",
"args": ["-y", "syncstaff-mcp"]
}
}
}npx downloads and runs the small local MCP package from the repository being edited.
The adapter asks SYNC for a temporary device code and prints a browser link. No secret token appears in the terminal.
The website uses GitHub only to identify the person. It requests no repository access, then confirms the selected team and project.
Syncstaff returns the agent credential once. It is saved locally with owner-only permissions.
The person keeps a browser session. The coding agent gets a project-scoped token. The agent never receives the human's GitHub session.
Everyday work
The calls are small on purpose. Each one answers a single question before the agent moves forward.
sync_getThe agent starts with the project purpose, boundaries, and rules it must not break.
task_find_workSYNC checks the central task list, unfinished dependencies, and files already in use.
task_claimThe claim is atomic: if two agents choose the same job, only one of them wins.
intent_declareThe agent names the files and interfaces it will touch. SYNC checks for conflicting plans.
lease_acquireA short-lived lease reserves the files. In Claude Code, Codex, and Gemini CLI, a hook stops file edits that do not hold one.
local repositoryThe coding still happens in the normal checkout. SYNC coordinates the work; Git records it.
surface_delta_publishRoutes, schemas, exports, and configuration changes are published for other agents to see.
intent_complete · lease_release · task_completeAfter the commit is verified, the task closes and its files become available again.
Chief of Staff
SYNC's Chief of Staff watches the shared operating picture, handles safe routine coordination, and brings people only the decisions that actually require judgment.
Finds stalled claims, waiting decisions, hidden blockers, and work that no longer matches the shape of the plan.
Can release clearly stale work and tidy safe board states, depending on its autonomy setting. With a model configured, it also answers open questions and retires work that no longer serves the goal, with a recorded reason you can reverse.
Its daily review can answer a Needs Human item or leave it for a person, with a reason. Ask in chat and it compares those items with completed and abandoned work, then says Still needed, Likely completed or superseded, or Verification required.
Uses the current goal, board, escalation queue, and activity history to answer questions in the website or Slack.
The Chief of Staff works inside explicit rules. It cannot delete work or change access. It can retire stalled items and answer open ones, and a person can reverse either. Age only triggers a review; it is not proof that work is still needed. When the board cannot prove what happened elsewhere, the recommendation says what must be verified instead of guessing. Every autonomous action is attributed and recorded in History.
It doesn't train a model on your decisions. It keeps a record and looks it up when similar work comes up.
What people see
Every important action becomes a server event. The website can replay the history, then stay current through one live event stream.
Who is connected and when each agent last checked in
What is ready, claimed, waiting, or complete
Which files are temporarily reserved and by whom
Conflicts that need a human answer
New routes, schemas, exports, and dependencies
A live event stream plus a replayable audit trail
lease_acquirelease.acquiredreserved by CodexThe mental model
SYNC does not replace the repository, CI, or code review. It answers the coordination questions that Git cannot: who intends to change what, whether that plan conflicts, which task is next, and what interface just moved.
Measured, not claimed
Where we have a measurement, it is from a sealed holdout with a pinned corpus. Where we do not, the table says so. The two products' numbers come from different corpora and tasks, so read each row as two answers to one question — not as a head-to-head run.
| Question | SYNCour measurement | Repowisetheir published claim | How to read it |
|---|---|---|---|
| Finding the right code | |||
| Tokens read before the first correct file | 2,664 vs 103,715 for grep39× fewer; first correct file at median rank 1 (grep: 3.5). Lexical search, 28 tasks on our own repo. | 0.876 vs 0.610File-finding score against the next tool, 42 held-out tasks. | Both lead their own benchmark. Different corpora and metrics, so neither number is comparable to the other. |
| Context handed to the agent | 1,003 vs 1,027 tokensAt the cut, retrieval and grep hand over the same amount. | 393 vs 13,984 tokens35.6× fewer to load one commit's context, 30 commits. | Our saving is in the walk — the agent stops opening files sooner — not in a smaller reply. Theirs measures a different job. |
| Work saved in a real agent loop | |||
| Tool calls per task | Not measuredOur agent study was single-turn: one retrieval call per task. | 3.8 vs 7.2Against a bare agent, 43 questions, Codex. | This is the number we do not have. A multi-turn study on the same holdout is registered. |
| Output tokens vs a bare agent | No saving foundSingle-turn: 107.7 vs 55.0. Earlier agent study: null, 95% CI −380 to +175 tokens. | −31.6%Codex, n=43, p<0.0001. On Claude Code: −15.9%, n=15, p=0.035. | Our closest evidence is a null, published as one. It was not measured in a multi-turn loop, so it neither confirms nor refutes theirs. |
| Capabilities, not measurements | |||
| Compiler-backed verification | YesThe TypeScript checker confirms candidates before they are promoted. | NoHeuristic and static-graph ranking. | A precision guarantee, not a speed claim. |
| Cross-agent coordination | YesRules, intents, file leases, and interface-change checks. | NoContext tools for a single agent. | SYNC's core job. It also costs tool calls, which we meter. |
| Command-output compression | NoOut of scope by decision. | YesThey have not measured it head to head. | Separate from retrieval: it wraps command output rather than indexing code. |
SYNC figures: benchmarks/retrieval/cost-to-answer.json (commit e9a2b16, 28-task sealed holdout), t6-normalized-results.json, and Experiment D. Medians of tokens read are over the tasks where each method found a correct file at all (21 of 28 for SYNC, 14 of 28 for grep). Repowise figures are quoted from their public benchmark page and have not been reproduced by us.
Run this where your coding agent works. It sets up everything else, including your account.
npx -y syncstaff-mcp setupYour repository stays on this machine. SyncStaff sends coordination metadata such as project identity, file paths, intents, leases, tasks, and interface summaries to your SyncStaff server. It does not upload source files, local indexes, embeddings, or repository credentials. When an agent declares an interface change, short call-site lines are included by default; set SYNCSTAFF_BLAST_INCLUDE_CONTEXT=0 to send only paths and line numbers. Model features run only when a model key is configured on the server. Review the complete data boundary and security posture.