Portable MCP governance protocol for visible multi-agent teams: 48 tools, 27 resources, role topology, readiness gates, ODIN watchers, receipts, delegation, and closeout over stdio.
ODIN Sentinel is a local stdio MCP server plus a portable coordination protocol for visible agent teams. It gives agents a shared roster, startup packet, delegation contract, receipt shape, layout rule, and closeout checklist. It does not provide model inference, host a backend, or replace your development process.
Plain version: ODIN Sentinel helps you put coding agents into named visible roles, check whether they are ready, and keep a human operator in control. If a tool asks you to sign in, approve a permission prompt, or configure an account, that is a normal setup blocker, not a personal failure. You can pause, choose a different harness, keep a role slot empty, or ask for help.
For the fastest path, read docs/guides/quick-start.md. For copy-paste prompts, read docs/guides/quickstart-prompts.md. For a starter team shape, read docs/guides/recommended-starter-team.md.
- Required: Node.js 22.13+ and pnpm 11.0.3, pinned by
packageManager. - Recommended:
corepack enable && pnpm install. - Corepack fetches pnpm 11.0.3 automatically; mismatched global pnpm versions may warn or fail.
- MCP server: a local tool bridge that lets an agent ask ODIN Sentinel for protocol documents and validation checks.
- Harness: the app or CLI running an agent, such as Claude Code, Codex, Goose, Crush, OpenHands, Cursor, Zed, or another MCP-capable host.
- CMUX: the visible terminal workspace where the human can see named role slots.
- Governed team mode: the stricter mode where persistent agents must be visible, assigned to roles, and monitored.
- Native skill or prompt fallback: the instructions that teach an agent how to behave in this system.
Before launching persistent governed roles, confirm:
- Node.js satisfies
package.json(>=22.13.0). @bradheitmann/odin-sentinel@0.6.0is installed or available through a pinnedpnpm dlxornpxcommand.- The ODIN MCP server is configured in each selected harness.
- The SCP native skill is installed where supported, or the full prompt/resource fallback is available.
- CMUX is installed and the team will run in one visible CMUX workspace.
- Harnesses and accounts are selected and authenticated.
- Local inference is smoke-tested if used: endpoint reachable, content returned
within timeout, and not only
reasoning_content. - Role-compatibility smoke test passes for each persistent role.
Role slots may be prepared before readiness is complete, but occupants should not be launched until readiness passes or the PM records a waiver/substitution.
Recommended zero-install path:
pnpm dlx --package @bradheitmann/odin-sentinel@0.6.0 odin-sentinel-mcpSupported npm global install:
npm i -g @bradheitmann/odin-sentinel@0.6.0Supported npx zero-install path:
npx -y -p @bradheitmann/odin-sentinel@0.6.0 odin-sentinel-mcpA stdio smoke test that does not require an MCP host:
printf '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"probe","version":"0"}}}\n' \
| pnpm dlx --package @bradheitmann/odin-sentinel@0.6.0 odin-sentinel-mcpA successful response includes "serverInfo":{"name":"odin-sentinel","version":"0.6.0"}.
Minimum compatible child MCP version for governed-team docs is 0.4.5.
Claude Code:
claude mcp add odin-sentinel -- pnpm dlx --package @bradheitmann/odin-sentinel@0.6.0 odin-sentinel-mcpCodex (~/.codex/config.toml):
[mcp_servers.odin-sentinel]
command = "pnpm"
args = ["dlx", "--package", "@bradheitmann/odin-sentinel@0.6.0", "odin-sentinel-mcp"]Cursor / VS Code / Droid / Crush (mcpServers JSON):
{
"mcpServers": {
"odin-sentinel": {
"command": "pnpm",
"args": ["dlx", "--package", "@bradheitmann/odin-sentinel@0.6.0", "odin-sentinel-mcp"]
}
}
}Zed (~/.config/zed/settings.json):
"odin-sentinel": {
"source": "custom",
"command": "pnpm",
"args": ["dlx", "--package", "@bradheitmann/odin-sentinel@0.6.0", "odin-sentinel-mcp"]
}Goose (~/.config/goose/config.yaml):
odin-sentinel:
type: stdio
cmd: pnpm
args: ["dlx", "--package", "@bradheitmann/odin-sentinel@0.6.0", "odin-sentinel-mcp"]
enabled: trueOpenCode (~/.config/opencode/opencode.json):
{
"mcp": {
"odin-sentinel": {
"type": "local",
"command": ["pnpm", "dlx", "--package", "@bradheitmann/odin-sentinel@0.6.0", "odin-sentinel-mcp"],
"enabled": true
}
}
}OpenHands (~/.openhands/config.toml):
[mcp.stdio_servers.odin-sentinel]
name = "odin-sentinel"
command = "pnpm"
args = ["dlx", "--package", "@bradheitmann/odin-sentinel@0.6.0", "odin-sentinel-mcp"]If a host cannot run pnpm, use the equivalent pinned npx command:
npx -y -p @bradheitmann/odin-sentinel@0.6.0 odin-sentinel-mcp- MCP server: supplies protocol resources and validation tools.
- Native skill: improves discoverability and automatic invocation in supported harnesses.
- Plugin: may package the MCP server and native skill together for a host.
- Full prompt injection: fallback only when MCP/native skill/plugin support is unavailable.
MCP alone is useful, but governed team mode is strongest when the persistent roles also have native skill context or the full bootstrap prompt.
Governed team mode requires CMUX or a compatible visible terminal-pane surface. The EXEC PM should remain in the same CMUX workspace as the rest of the team by default. Tab-only layouts are degraded; the canonical layout is human-readable spatial/pod organization.
Without CMUX, ODIN can still expose MCP resources, validation tools, and protocol snapshots, but the visible team-management experience is not active governed mode.
The templates/ directory contains intentionally basic PM, DEV, QA, and team
manifest templates. They are starter material only. Add your own criteria before
using them for real work.
Local operator planning folders may be useful private workspaces, but they are not shipped product internals and are not required for public users.
odin://protocol/mainodin://protocol/rolesodin://protocol/topologyodin://protocol/model-profilesodin://protocol/closeoutodin://protocol/delegationodin://protocol/receipts/bootodin://protocol/step-up-ladderodin://protocol/recipe-captureodin://protocol/qa-independenceodin://protocol/commit-gateodin://protocol/harness-control-matrixodin://protocol/authority-chainodin://protocol/blocked-pod-rolloverodin://protocol/slice-health-sentinelsodin://protocol/receipts/team-manifestodin://protocol/bootstrap-skillodin://protocol/skill-references/boot-receipt-examplesodin://protocol/skill-references/canonical-introduction-promptodin://protocol/skill-references/harness-skill-targetsodin://protocol/skill-references/team-bootstrap-runbookodin://protocol/role-cards/exec-pmodin://protocol/role-cards/team-pmodin://protocol/role-cards/dev-workerodin://protocol/role-cards/qa-workerodin://protocol/role-cards/exec-asst
The governance-registry compatibility surface (the odin_append_event / odin_query_events tools below, plus the odin://registry/{scope}/events resource template) is ACTIVE BY DEFAULT as of 0.6.0; set ODIN_GOVDISP_REGISTRY_MCP=0 to opt out and restore the 46-tool baseline.
odin.get_versionodin.get_startup_packetodin.get_role_profileodin.get_role_cardodin.get_bootstrap_skillodin.get_boot_receipt_schemaodin.get_boot_receipt_examplesodin.get_active_watch_packetodin.get_harness_probe_matrixodin.get_onboarding_planodin.evaluate_readiness_gateodin.evaluate_escalation_gateodin.validate_boot_receiptodin.validate_bring_up_planodin.validate_team_manifestodin.get_delegation_packetodin.validate_delegation_packetodin.validate_remediation_packetodin.validate_fallback_contractodin.validate_successor_contractodin.validate_outage_handoffodin.validate_closure_independenceodin.validate_commit_gateodin.validate_control_recipeodin.validate_harness_control_recipeodin.validate_delivery_verificationodin.validate_authority_actionodin.evaluate_blocked_pod_rolloverodin.evaluate_slice_healthodin.evaluate_oversized_slice_sentinelodin.evaluate_qa_timeout_sentinelodin.evaluate_spec_defect_sentinelodin.validate_cmux_delivery_proofodin.validate_instruction_read_proofodin.get_activation_gatesodin.get_closeout_checklistodin.get_runtime_noticeodin.export_protocol_snapshotodin.compute_surface_layoutodin.compute_surface_layout_gateodin.compute_human_cmux_quad_layoutodin.compile_session_reportodin.preview_telemetry_redactionodin.submit_session_reportodin.get_telemetry_configodin.get_mission_frontrun_packodin_append_eventodin_query_events
pnpm install
pnpm run typecheck
pnpm test
pnpm run build
pnpm run validateMIT. See LICENSE.