Agent onboarding (manual reference)

Generated by pactify agent docs. For each kind, pactify agent add <kind> --id <seat> --roles <roles> does this for you.

antigravity

  • config: ~/.gemini/config/mcp_config.json (machine-global)
  • entry file: none (desktop app)

Config:

{
  "mcpServers": {
    "pact": {
      "args": [
        "mcp",
        "--project",
        "REPO_DIR"
      ],
      "command": "pactify",
      "env": {
        "PACT_AGENT_ID": "SEAT_ID"
      }
    }
  }
}

claude-code

  • config: .mcp.json (project, committed in repo)
  • entry file: CLAUDE.md

Entry block:

# pact protocol — seat `SEAT_ID`

This repo uses the **pact protocol** (v1). You are seat `SEAT_ID`, roles: ROLES.

**Primary — MCP:** the `pact` MCP server is wired into your config. Use its tools
(projects / status / join / assign / checkpoint / accept / changes / merge / validate) and
resources (`pact://state`, `pact://log`). Cold start: call `status`, then `join`
(registers your seat and checks out your feature branch). Every action tool takes an
optional `project` (a name from `projects`) to act on another registered repo without
restarting — default is this repo.

**Fallback — shell** (if MCP is unavailable):
```bash
export PACT_AGENT_ID=SEAT_ID
pactify join SEAT_ID --roles ROLES
```
then `pactify help` for the verbs.

**The two rules:** a worker cannot self-accept (only the task's reviewer accepts); a
feature cannot merge until all its tasks are accepted.

Config:

{
  "mcpServers": {
    "pact": {
      "args": [
        "mcp"
      ],
      "command": "pactify",
      "env": {
        "PACT_AGENT_ID": "SEAT_ID"
      }
    }
  }
}

claude-desktop

  • config: ~/Library/Application Support/Claude/claude_desktop_config.json (machine-global)
  • entry file: none (desktop app)

Config:

{
  "mcpServers": {
    "pact": {
      "args": [
        "mcp",
        "--project",
        "REPO_DIR"
      ],
      "command": "pactify",
      "env": {
        "PACT_AGENT_ID": "SEAT_ID"
      }
    }
  }
}

codex-app

  • config: ~/.codex/config.toml (machine-global)
  • entry file: AGENTS.md

Entry block:

# pact protocol — seat `SEAT_ID`

This repo uses the **pact protocol** (v1). You are seat `SEAT_ID`, roles: ROLES.

**Primary — MCP:** the `pact` MCP server is wired into your config. Use its tools
(projects / status / join / assign / checkpoint / accept / changes / merge / validate) and
resources (`pact://state`, `pact://log`). Cold start: call `status`, then `join`
(registers your seat and checks out your feature branch). Every action tool takes an
optional `project` (a name from `projects`) to act on another registered repo without
restarting — default is this repo.

**Fallback — shell** (if MCP is unavailable):
```bash
export PACT_AGENT_ID=SEAT_ID
pactify join SEAT_ID --roles ROLES
```
then `pactify help` for the verbs.

**The two rules:** a worker cannot self-accept (only the task's reviewer accepts); a
feature cannot merge until all its tasks are accepted.

Config:

[mcp_servers.pact]
command = "pactify"
args = ["mcp", "--project", "REPO_DIR"]
env = { PACT_AGENT_ID = "SEAT_ID" }

codex-cli

  • config: .codex/config.toml (project, committed in repo)
  • entry file: AGENTS.md

Entry block:

# pact protocol — seat `SEAT_ID`

This repo uses the **pact protocol** (v1). You are seat `SEAT_ID`, roles: ROLES.

**Primary — MCP:** the `pact` MCP server is wired into your config. Use its tools
(projects / status / join / assign / checkpoint / accept / changes / merge / validate) and
resources (`pact://state`, `pact://log`). Cold start: call `status`, then `join`
(registers your seat and checks out your feature branch). Every action tool takes an
optional `project` (a name from `projects`) to act on another registered repo without
restarting — default is this repo.

**Fallback — shell** (if MCP is unavailable):
```bash
export PACT_AGENT_ID=SEAT_ID
pactify join SEAT_ID --roles ROLES
```
then `pactify help` for the verbs.

**The two rules:** a worker cannot self-accept (only the task's reviewer accepts); a
feature cannot merge until all its tasks are accepted.

Config:

[mcp_servers.pact]
command = "pactify"
args = ["mcp"]
env = { PACT_AGENT_ID = "SEAT_ID" }

cursor-cli

  • config: .cursor/mcp.json (project, committed in repo)
  • entry file: AGENTS.md

Entry block:

# pact protocol — seat `SEAT_ID`

This repo uses the **pact protocol** (v1). You are seat `SEAT_ID`, roles: ROLES.

**Primary — MCP:** the `pact` MCP server is wired into your config. Use its tools
(projects / status / join / assign / checkpoint / accept / changes / merge / validate) and
resources (`pact://state`, `pact://log`). Cold start: call `status`, then `join`
(registers your seat and checks out your feature branch). Every action tool takes an
optional `project` (a name from `projects`) to act on another registered repo without
restarting — default is this repo.

**Fallback — shell** (if MCP is unavailable):
```bash
export PACT_AGENT_ID=SEAT_ID
pactify join SEAT_ID --roles ROLES
```
then `pactify help` for the verbs.

**The two rules:** a worker cannot self-accept (only the task's reviewer accepts); a
feature cannot merge until all its tasks are accepted.

Config:

{
  "mcpServers": {
    "pact": {
      "args": [
        "mcp"
      ],
      "command": "pactify",
      "env": {
        "PACT_AGENT_ID": "SEAT_ID"
      }
    }
  }
}

gemini-cli

  • config: .gemini/settings.json (project, committed in repo)
  • entry file: GEMINI.md

Entry block:

# pact protocol — seat `SEAT_ID`

This repo uses the **pact protocol** (v1). You are seat `SEAT_ID`, roles: ROLES.

**Primary — MCP:** the `pact` MCP server is wired into your config. Use its tools
(projects / status / join / assign / checkpoint / accept / changes / merge / validate) and
resources (`pact://state`, `pact://log`). Cold start: call `status`, then `join`
(registers your seat and checks out your feature branch). Every action tool takes an
optional `project` (a name from `projects`) to act on another registered repo without
restarting — default is this repo.

**Fallback — shell** (if MCP is unavailable):
```bash
export PACT_AGENT_ID=SEAT_ID
pactify join SEAT_ID --roles ROLES
```
then `pactify help` for the verbs.

**The two rules:** a worker cannot self-accept (only the task's reviewer accepts); a
feature cannot merge until all its tasks are accepted.

Config:

{
  "mcpServers": {
    "pact": {
      "args": [
        "mcp"
      ],
      "command": "pactify",
      "env": {
        "PACT_AGENT_ID": "SEAT_ID"
      }
    }
  }
}

kimi-cli

  • config: ~/.kimi-code/mcp.json (machine-global)
  • entry file: AGENTS.md

Entry block:

# pact protocol — seat `SEAT_ID`

This repo uses the **pact protocol** (v1). You are seat `SEAT_ID`, roles: ROLES.

**Primary — MCP:** the `pact` MCP server is wired into your config. Use its tools
(projects / status / join / assign / checkpoint / accept / changes / merge / validate) and
resources (`pact://state`, `pact://log`). Cold start: call `status`, then `join`
(registers your seat and checks out your feature branch). Every action tool takes an
optional `project` (a name from `projects`) to act on another registered repo without
restarting — default is this repo.

**Fallback — shell** (if MCP is unavailable):
```bash
export PACT_AGENT_ID=SEAT_ID
pactify join SEAT_ID --roles ROLES
```
then `pactify help` for the verbs.

**The two rules:** a worker cannot self-accept (only the task's reviewer accepts); a
feature cannot merge until all its tasks are accepted.

Config:

{
  "mcpServers": {
    "pact": {
      "args": [
        "mcp"
      ],
      "command": "pactify",
      "env": {
        "PACT_AGENT_ID": "SEAT_ID"
      }
    }
  }
}

opencode

  • config: opencode.json (project, committed in repo)
  • entry file: AGENTS.md

Entry block:

# pact protocol — seat `SEAT_ID`

This repo uses the **pact protocol** (v1). You are seat `SEAT_ID`, roles: ROLES.

**Primary — MCP:** the `pact` MCP server is wired into your config. Use its tools
(projects / status / join / assign / checkpoint / accept / changes / merge / validate) and
resources (`pact://state`, `pact://log`). Cold start: call `status`, then `join`
(registers your seat and checks out your feature branch). Every action tool takes an
optional `project` (a name from `projects`) to act on another registered repo without
restarting — default is this repo.

**Fallback — shell** (if MCP is unavailable):
```bash
export PACT_AGENT_ID=SEAT_ID
pactify join SEAT_ID --roles ROLES
```
then `pactify help` for the verbs.

**The two rules:** a worker cannot self-accept (only the task's reviewer accepts); a
feature cannot merge until all its tasks are accepted.

Config:

{
  "mcp": {
    "pact": {
      "command": [
        "pactify",
        "mcp"
      ],
      "enabled": true,
      "environment": {
        "PACT_AGENT_ID": "SEAT_ID"
      },
      "type": "local"
    }
  }
}