Naib, from first login to finished work

One shared plan.
Many coding agents.

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.

01 Connect safely02 Coordinate centrally03 Build locally

The whole system

Two doors into one source of truth

The browser and the coding agent never need to trust each other directly. They each prove who they are to the central server.

Human side

Website

GitHub sign-in creates a secure browser session.

  • Approve a coding agent
  • See the shared work board
  • Resolve decisions and conflicts
Session cookie
Shared center

Naib server

The authority for coordination—not a second Git repository.

TasksRulesClaimsLeasesEventsDecisions
Agent side

Agent + MCP adapter

Codex, Claude, or another client calls Naib tools over MCP.

  • Find and claim a task
  • Reserve files before editing
  • Publish what changed
Project-scoped token

Simple rule: the website lets people see and decide; the MCP adapter lets agents coordinate; the Naib server protects the shared state.

First connection

Install once, approve in the browser

NPM runs on the coding machine—not in the website. Node.js 22.5 or newer is the only local requirement.

Connect this repository
npx -y keel-coordination-mcp setup
MCP client configurationJSON
{
  "mcpServers": {
    "keel": {
      "command": "npx",
      "args": ["-y", "keel-coordination-mcp"]
    }
  }
}
  1. 1

    NPM starts the adapter

    npx downloads and runs the small local MCP package from the repository being edited.

  2. 2

    A short code appears

    The adapter asks Naib for a temporary device code and prints a browser link. No secret token appears in the terminal.

  3. 3

    The human approves

    The website uses GitHub only to identify the person. It requests no repository access, then confirms the selected team and project.

  4. 4

    The adapter is connected

    Naib returns the agent credential once. It is saved in .keel/config.json with owner-only permissions.

Two identities, kept separate

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

One task, from the central list to done

The calls are small on purpose. Each one answers a single question before the agent moves forward.

  1. 01

    Read the project rules

    keel_get

    The agent starts with the project purpose, boundaries, and rules it must not break.

  2. 02

    Ask for ready work

    task_find_work

    Naib checks the central task list, unfinished dependencies, and files already in use.

  3. 03

    Claim one task

    task_claim

    The claim is atomic: if two agents choose the same job, only one of them wins.

  4. 04

    Explain the intended change

    intent_declare

    The agent names the files and interfaces it will touch. Naib checks for conflicting plans.

  5. 05

    Reserve the files

    lease_acquire

    A short-lived lease keeps another agent from editing the same files at the same time.

  6. 06

    Build, test, and commit

    local repository

    The coding still happens in the normal checkout. Naib coordinates the work; Git records it.

  7. 07

    Report the public changes

    surface_delta_publish

    Routes, schemas, exports, and configuration changes are published for other agents to see.

  8. 08

    Close the loop

    intent_complete · lease_release · task_complete

    After the commit is verified, the task closes and its files become available again.

What people see

The website turns tool calls into a clear story

Every important action becomes a server event. The website can replay the history, then stay current through one live event stream.

01

Agents

Who is connected and when each agent last checked in

02

Tasks

What is ready, claimed, waiting, or complete

03

Leases

Which files are temporarily reserved and by whom

04

Decisions

Conflicts that need a human answer

05

Changes

New routes, schemas, exports, and dependencies

06

History

A live event stream plus a replayable audit trail

MCP calllease_acquire
Naib eventlease.acquired
Website updatereserved by Codex

The mental model

Naib coordinates the work.
Git keeps the code.

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.

Try it on one project

Run this where your coding agent works. It sets up everything else, including your account.

npx -y keel-coordination-mcp setup
Or start on the web