ODIN Sentinel v0.4.6 · MIT · 2026
OPEN SOURCE · MCP server · TypeScript / Node
Doc OS-MKT-01 · Rev 2026.05 · npm: @bradheitmann/odin-sentinel · Set in Geist Mono
MIT · self-contained · no hosted inference
Sentinel Coordination Protocol · v0.4.6

A room, a roster, and a way to work.

ODIN Sentinel is a portable control layer for visible agent teams running across terminal panes, local CLIs, editors, and MCP-capable harnesses. It does not try to be another agent. It gives the agents a room, a roster, and a way to work without dissolving into chatter.

$
npm i -g @bradheitmann/odin-sentinel
17
MCP tools
09
Protocol resources
10+
Harnesses
0$
Hosted cost
odin-sentinel · mcp · stdio
session · 01
$ claude mcp add odin-sentinel \ -- npx -y -p @bradheitmann/odin-sentinel \ odin-sentinel-mcp ✓ registered · stdio · serverInfo v0.4.6 odin.get_startup_packet ┌─ EXECUTIVE OFFICE ───────────────────┐ A/EXEC-PM orchestration · planning│ A/EXEC-ODIN topology · receipts │ A/EXEC-ASST scribe · summary │ A/EXEC-RSCH retrieval · context │ A/EXEC-QA verify · gates │ └──────────────────────────────────────┘ ┌─ POD · ALPHA ────────────────────────┐ TEAM-PM scope · delegation │ ODIN role contracts · closeout │ DEV-1 implement │ QA-1 test · verify │ SHADOW-1 observe · receipt │ └──────────────────────────────────────┘ 10 roles bound · manifest signed
One server · many harnesses
Same map, same names, same flame
Demo · preview

Watch it boot.
One server, three panes, one manifest.

Demo preview. This slot is reserved for a short boot walkthrough: register the server, call odin.get_startup_packet, bring up an executive office and one development pod, sign a team manifest, and exit cleanly.

No hand-copied protocol lore when MCP is available. Harnesses can load the startup packet and bootstrap skill directly from the server.

Duration02:14
Captured2026.05
HarnessClaude Code
  REC · placeholder · drop video here
ODIN Sentinel · live bootOne server, three panes, one manifest
// replace .frame contents with <video> or <iframe>
00:00 / 02:14 · 16:9 · 1920×1080
MCP
harnesses
Claude Codeclaude mcp add
Codex~/.codex/config.toml
CursormcpServers
VS CodemcpServers
Droidfactory
Zedcontext_servers
Gooseextensions
Crushmcp.stdio
OpenCodemcp.local
OpenHandsstdio_servers
01 The premise
The questions are practical. Who is here? What role do they hold? Who may delegate? Who may verify? ODIN starts with shape — an executive office, development pods, and ODIN roles across the mesh — then provides the protocol pieces that keep the shape honest.

What it isn't

Not another agent. Not a hosted service. Not a private ritual. No hand-copied protocol lore.

What it is

Startup packets, role contracts, model/harness defaults, delegation envelopes, receipts, manifests, closeout checklists. One server. Many harnesses.

License

MIT. Source at github.com/bradheitmann/odin-sentinel.

02 · How it works

One server. Many harnesses. Same map, same names, same flame.

Any MCP-capable harness can ask. Codex, Claude, Droid, Crush, Goose, Zed, OpenCode — or a client written in Rust, Go, Zig, or WebAssembly — all fit the same boundary when they can launch or bridge stdio MCP.

The boundary is plain MCP JSON-RPC. The protocol is portable. The roles are visible.

  • 01ResourcesProtocol contracts, role profiles, topology defaults, model and harness profiles, receipt and manifest templates.
  • 02ToolsStartup packets, role profile lookup, boot-receipt validation, delegation envelopes, telemetry redaction, closeout checklists.
  • 03ExportsSelf-contained protocol snapshots for harnesses without discoverable MCP configuration.
  • 04TopologyVisible role mesh — executive office, development pods, ODIN coordinators — across every pane.
                       MCP-capable clients
           ┌─────────────────────────────────────────┐
             Codex · Claude · Droid · Crush · UI    
           └────────────────────┬────────────────────┘
                                
                  ┌──────────────────────────┐
                    odin-sentinel           
                    mcp server · stdio      
                  └─────────────┬────────────┘
                                
        ┌───────────────────────┼───────────────────────┐
                                                      
┌───────────────┐       ┌───────────────┐       ┌───────────────┐
  Resources    │       │    Tools      │       │   Exports     
  protocol     │       │  validate     │       │  standalone   
  roles        │       │  startup      │       │  protocol     
  topology     │       │  closeout     │       │  snapshots    
└───────────────┘       └───────────────┘       └───────────────┘
                                                      
        └───────────────────────┼───────────────────────┘
                                
                  ┌──────────────────────────┐
                    Visible role mesh       
                    EXEC · TEAM · DEV       
                    QA   · ODIN · SHADOW    
                  └──────────────────────────┘
Fig. 01 · Topology Boundary: MCP JSON-RPC over stdio
Recommended Designed for visible agent teams cmux is the preferred runtime surface for full coordination

ODIN Sentinel is built for multi-pane agent coordination, with cmux as the preferred runtime surface. The MCP server can expose protocol tools anywhere MCP stdio is supported, but full team orchestration works best when agents are visible in a shared pane/session surface such as cmux.

01 · Runtime surfacerecommended
cmux
Preferred visible pane/session surface for coordinated teams. Install: npm i -g cmux.
02 · Enginerequired
Node.js
Node.js 20.10 LTS or newer. Used for npx and the MCP server.
03 · Harnessrequired
MCP host
Claude Code, Codex, Cursor, Zed, Goose, Crush, OpenCode, OpenHands, Droid, or another MCP-capable host.
04 · Shell toolsoptional
git · ripgrep
Strongly recommended for file-aware workflows. git ≥ 2.40 · rg on PATH.
03 · Quickstart

Pick your harness.
Paste. Restart. Begin.

Zero install required. Every config below uses npx -y to fetch the latest package at first run. No global install, no path bookkeeping.

Or install once: npm i -g @bradheitmann/odin-sentinel — then the executable is odin-sentinel-mcp.

Claude Code · plugin marketplace (recommended) · ~/.claude/plugins
# option a — install as a Claude Code plugin (recommended)
claude plugin marketplace add bradheitmann/odin-sentinel
claude plugin install sentinel-coordination-protocol@odin-sentinel
Claude Code · one-shot MCP registration · ~/.config/claude
# option b — register the bare MCP server
claude mcp add odin-sentinel -- npx -y -p @bradheitmann/odin-sentinel odin-sentinel-mcp
Codex · TOML · ~/.codex/config.toml
[mcp_servers.odin-sentinel]
command = "npx"
args    = ["-y", "-p", "@bradheitmann/odin-sentinel", "odin-sentinel-mcp"]
Cursor · VS Code · Factory (Droid) · Pi · JSON mcpServers
{
  "mcpServers": {
    "odin-sentinel": {
      "command": "npx",
      "args": ["-y", "-p", "@bradheitmann/odin-sentinel", "odin-sentinel-mcp"]
    }
  }
}
Zed · ~/.config/zed/settings.jsoncontext_servers
"odin-sentinel": {
  "source":  "custom",
  "command": "npx",
  "args":    ["-y", "-p", "@bradheitmann/odin-sentinel", "odin-sentinel-mcp"]
}
Goose · YAML · ~/.config/goose/config.yamlextensions
odin-sentinel:
  type:    stdio
  cmd:     npx
  args:    ["-y", "-p", "@bradheitmann/odin-sentinel", "odin-sentinel-mcp"]
  enabled: true
Crush · ~/.config/crush/crush.jsonmcp
{
  "mcp": {
    "odin-sentinel": {
      "type":    "stdio",
      "command": "npx",
      "args":    ["-y", "-p", "@bradheitmann/odin-sentinel", "odin-sentinel-mcp"]
    }
  }
}
OpenCode · ~/.config/opencode/opencode.jsonmcp
{
  "mcp": {
    "odin-sentinel": {
      "type":    "local",
      "command": ["npx", "-y", "-p", "@bradheitmann/odin-sentinel", "odin-sentinel-mcp"],
      "enabled": true
    }
  }
}
OpenHands · TOML · ~/.openhands/config.toml
[mcp.stdio_servers.odin-sentinel]
name    = "odin-sentinel"
command = "npx"
args    = ["-y", "-p", "@bradheitmann/odin-sentinel", "odin-sentinel-mcp"]
03

Restart the host. Then talk to it.

After the harness picks up the new config, hand your agent an instruction like the one below. It will read the protocol resources, follow the role contracts, and stay inside the SCP governance rules — no hand-copied ritual required.

Use the `odin-sentinel` MCP server. Call `odin.get_startup_packet`, then bootstrap an executive office and one development pod.
04 · MCP Resources09

Resources
protocol contracts

URIKind
odin://protocol/maincore
odin://protocol/rolescontract
odin://protocol/topologytopology
odin://protocol/model-profilesdefaults
odin://protocol/closeoutchecklist
odin://protocol/delegationcontract
odin://protocol/receipts/boottemplate
odin://protocol/receipts/team-manifesttemplate
odin://protocol/bootstrap-skillskill
05 · MCP Tools17

Tools
callable surface

NamePurposeGroup
odin.get_versionServer version and build identity.meta
odin.get_startup_packetInitial topology + role roster for a new session.bootstrap
odin.get_role_profileRole contract, defaults, and verification gates.roles
odin.get_bootstrap_skillFull Sentinel Coordination Protocol skill.bootstrap
odin.validate_boot_receiptVerify a session boot receipt against template.validate
odin.validate_team_manifestVerify a team manifest against template.validate
odin.get_delegation_packetVisible-role delegation envelope.delegate
odin.validate_delegation_packetVerify a delegation envelope is well-formed.validate
odin.get_closeout_checklistPark-for-continuity or full-shutdown checklist.closeout
odin.get_runtime_noticeCurrent runtime advisories and warnings.meta
odin.export_protocol_snapshotSelf-contained snapshot for non-MCP clients.export
odin.compute_surface_layoutCompute pane-surface layout from inputs.layout
odin.compute_surface_layout_gateGate layout decisions against current state.layout
odin.compile_session_reportCompile end-of-session report from receipts.report
odin.preview_telemetry_redactionPreview redaction before submission.privacy
odin.submit_session_reportSubmit a compiled session report.report
odin.get_telemetry_configActive telemetry configuration and consent.privacy

06 · Smoke test

One line.
No host required.

Pipe a raw MCP initialize request into the server. A successful response confirms the server is on PATH, the protocol shake works, and the published serverInfo matches the version you expect.

$ · smoke probe · stdio
v0.4.6
# initialize → handshake → serverInfo
$ printf '{"jsonrpc":"2.0","id":1,"method":"initialize",
  "params":{"protocolVersion":"2024-11-05",
  "capabilities":{},"clientInfo":{"name":"probe","version":"0"}}}\n' \
  | npx -y -p @bradheitmann/odin-sentinel odin-sentinel-mcp

{"serverInfo":{"name":"odin-sentinel","version":"0.4.6"}}  
07 · Machine-readable spec

For humans and agents.

Every field below is also exposed in the JSON-LD block at the bottom of this document. Agents crawling this page can lift the same metadata without parsing prose.

Name
ODIN Sentinel
Package
@bradheitmann/odin-sentinel
Version
0.4.6
License
MIT
Category
MCP server · Agent coordination
Runtime
Node.js · stdio
Language
TypeScript
Pricing
$0 · no hosted inference
MCP tools
17
MCP resources
09
Protocol
MCP 2024-11-05
Transport
JSON-RPC over stdio
Executable
odin-sentinel-mcp
Repository
github.com/bradheitmann/odin-sentinel
Install
npm · npx
Author

ODIN
Sentinel. begin.

Same map.
Same names.
Same flame.
odin-sentinel · MIT · open source Branded with the VHX design system · proprietary © 2026 Brad Heitmann