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
(status / join / assign / checkpoint / accept / changes / merge / list) and resources
(`pact://state`, `pact://log`). Cold start: call `status`, then `join`
(registers your seat and checks out your feature branch).
**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
(status / join / assign / checkpoint / accept / changes / merge / list) and resources
(`pact://state`, `pact://log`). Cold start: call `status`, then `join`
(registers your seat and checks out your feature branch).
**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
(status / join / assign / checkpoint / accept / changes / merge / list) and resources
(`pact://state`, `pact://log`). Cold start: call `status`, then `join`
(registers your seat and checks out your feature branch).
**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" }
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
(status / join / assign / checkpoint / accept / changes / merge / list) and resources
(`pact://state`, `pact://log`). Cold start: call `status`, then `join`
(registers your seat and checks out your feature branch).
**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
(status / join / assign / checkpoint / accept / changes / merge / list) and resources
(`pact://state`, `pact://log`). Cold start: call `status`, then `join`
(registers your seat and checks out your feature branch).
**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"
}
}
}