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 Naib server, so everyone sees the same tasks, claims, rules, and changes.
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 Naib tools over MCP.
Simple rule: the website lets people see and decide; the MCP adapter lets agents coordinate; the Naib 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 keel-coordination-mcp setup{
"mcpServers": {
"keel": {
"command": "npx",
"args": ["-y", "keel-coordination-mcp"]
}
}
}npx downloads and runs the small local MCP package from the repository being edited.
The adapter asks Naib 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.
Naib returns the agent credential once. It is saved in .keel/config.json 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.
keel_getThe agent starts with the project purpose, boundaries, and rules it must not break.
task_find_workNaib 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. Naib checks for conflicting plans.
lease_acquireA short-lived lease keeps another agent from editing the same files at the same time.
local repositoryThe coding still happens in the normal checkout. Naib 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.
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
Naib 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.
Run this where your coding agent works. It sets up everything else, including your account.
npx -y keel-coordination-mcp setup