README.md
August 16, 2026 · View on GitHub
OMK
Open Multi-Agent Kit — provider-neutral coding agent, multi-agent orchestration, and evidence-gated control plane.
OMK is an open-source multi-agent coding harness: route work across models, bound parallel lanes, block outcomes, and keep replayable evidence for Codex, Claude Code, OpenCode, and local agents.
Keywords: multi-agent orchestration · coding agent CLI · provider-neutral LLM router · evidence-gated automation · agent skills · MCP · DAG parallel agents · session recovery
Scope. Verify. Replay
What is OMK? A verified, provider-neutral control plane for coding agents (Codex, Claude Code, OpenCode, local models). It turns a goal into a bounded DAG, runs parallel lanes with owned paths, blocks “done” without fresh evidence, and stores replayable receipts for review and recovery.
Use OMK when you need multi-agent software engineering with acceptance predicates, not chat that only claims the build is green.
| Problem | OMK |
|---|---|
| Parallel agents overwrite the same work | Resource claims and owned paths bound each lane |
| An agent says "done" before the build is green | Acceptance predicates block unverified completion |
| A session crashes midway | Replayable state and session repair preserve the run |
| The preferred model changes | The control and evidence model stays stable |
OMK in motion
Ten short captures of the control plane's main workflows.
1 · Install and boot
2 · Goal to DAG
3 · Parallel lanes
4 · Provider routing
5 · Evidence gate
6 · Skill routing
7 · MCP health
8 · Context budget
9 · Session doctor
10 · Packages and themes
What OMK controls
- Execution scope — resource claims, owned paths, bounded parallel lanes
- Completion — declared predicates and fresh verification
- Evidence — commands, exit status, workspace state, receipts
- Recovery — replayable session state and repair tooling
- Providers — one operator model across supported coding agents
Installation
npm install -g open-multi-agent-kit --ignore-scripts
omk --version
omk
Or without a global install:
npx --ignore-scripts open-multi-agent-kit
The open-multi-agent-kit package ships OMK.
OMK//CONTROL TUI
The OMK//CONTROL startup surface is the default operator view.
The header reads omk v<package.version> · OMK//CONTROL, using the
installed workspace package version as its source of truth.
Core concepts
Scope
!omk plan turns a fuzzy objective into a bounded DAG: owned paths,
ordered waves, and an acceptance predicate attached to every node before
a single line of code is written.
Predicates
The Correctness Wall intercepts writes and runs acceptance predicates. A red predicate blocks completion — a green-looking reply alone is not a release signal.
Receipts
Every verified run produces a receipt: commands, exit codes, workspace state, evidence digest, and timestamps. Receipts are inspectable artifacts, not marketing claims.
Replay
omk session doctor detects unterminated turns and orphan results, then
plans a dry-run repair against the replay ledger. An
interrupted run is a recoverable state, not a loss.
Supported agents and providers
OMK is provider-neutral. The underlying agent can be Codex, Claude Code, OpenCode, or a local model; the execution and evidence model stays consistent.
Providers stay interchangeable. The routing layer picks the best arm
for the task, but the control plane never changes when you swap models.
NVIDIA NIM's z-ai/glm-5.2 entry transmits reasoning effort through max.
Quota and billing-cycle failures can switch to an authenticated resilience
candidate before retry; see provider resilience.
Verification boundary
OMK is not a security sandbox for arbitrary hostile code by default.
Supported verification and sandbox modes are documented explicitly.
Any run without the required evidence is labeled UNVERIFIED.
See containerization.md for sandbox patterns: OpenShell, Gondolin micro-VM, and plain Docker.
Extensions, MCP, and skills
OMK packages distribute skills, extensions, prompts, and themes through
one control plane. Build a package once, install it through omk, pin
it, scope it to a project when needed.
Public repository skills are listed in SKILLS.md. Operator installs
can also load hubs such as omk-marketing (routes the bundled marketing/
SEO skill pack) without dumping every skill into context.
MCP is a runtime client, not just a health view: configured stdio servers are
started on demand and their tools are registered into the session as
<server>__<tool>. Connection is lazy, and a server that fails to start is
reported without affecting the rest of the session. See
docs/mcp.md, or run
node scripts/mcp-smoke.mjs to see what your configuration actually resolves to.
Marketing, SEO, and AEO skill map
For growth work, start with !skill:omk-marketing (or /skill:omk-marketing).
It routes to the smallest subset of the marketingskills pack. Common intents:
| Intent | Skills to load |
|---|---|
| SEO / AEO / discoverability | seo-audit, ai-seo, programmatic-seo, schema, site-architecture, content-strategy |
| Positioning & research | product-marketing, customer-research, competitors, competitor-profiling, marketing-plan, marketing-psychology |
| Copy & content | copywriting, copy-editing, content-strategy, emails, social, video, image, ad-creative |
| Conversion | cro, signup, onboarding, paywalls, popups, pricing, offers, ab-test-setup, ab-testing |
| Acquisition | ads, paid routes via ads/ad-creative, cold-email, directory-submissions, lead-magnets, free-tools, aso, sms |
| Lifecycle & revenue | churn-prevention, referrals, revops, sales-enablement, prospecting, co-marketing, community-marketing, public-relations, launch |
| Measurement & ops | analytics, marketing-loops, marketing-ideas, marketing-council |
Load one primary skill (plus at most one supporter). Prefer evidence
(analytics, research) before spend or publish actions.
Harness Graph (agents × skills × hooks × MCP)
Repository checkouts include a build-time harness control plane under
.omk/harness-graph/:
bash .omk/harness-graph/run.sh
# read: .omk/harness-graph/out/dashboard.md · SCORECARD.md
It inventories agent→skill/hook/MCP edges, ranks bipartite SPOFs, clusters skills (Louvain), scores association lift, recommends wiring (hybrid CF), and fail-closes on new dead links. See the harness-graph README and scorecard.
# Global, pinned OMK package
omk install npm:some-omk-package@1.2.3
# Project-local, pinned Git package
omk install -l git:github.com/example/omk-package@v1.2.3
# Inspect and control installed resources
omk list
omk config
omk update --extensions
A skills-only package is an ordinary OMK package:
{
"name": "omk-workflows",
"keywords": ["omk-package"],
"omk": {
"skills": ["./skills"]
}
}
Use the minimum necessary skills per turn — usually one to three. A skill is loaded when it earns its place in the task, not because it happens to be installed.
Published packages
| Package | Description |
|---|---|
| omk-ai | Unified multi-provider LLM API (OpenAI, Anthropic, Google, etc.) |
| omk-agent-core | Agent runtime with tool calling and state management |
| omk-protocol | Versioned run contracts and pure semantic reducers |
| omk-book-to-skill | Optional document-to-skill compiler and provenance adapter |
| open-multi-agent-kit | Interactive coding agent CLI |
| omk-tui | Terminal UI library with differential rendering |
npm install omk-agent-core # Agent runtime
npm install omk-ai # Multi-provider LLM API
npm install omk-protocol # Run contracts and semantic reducers
omk install npm:omk-book-to-skill@0.95.2 # Optional document compiler
npm install omk-tui # Terminal UI
Adaptorch MCP integration
AdaptOrch MCP is a separate, proprietary reliability-kernel service (not part of this monorepo) that OMK can route orchestration tasks through: topology-aware DAG routing, multi-model synthesis, and consistency verification. Backed by a published paper (arXiv:2602.16873).
The adaptorch and adaptorch-prod MCP servers plus the adaptorch-route
and adaptorch-synthesize skills ship in OMK's default execution preset.
Actually invoking AdaptOrch still requires an ADAPTORCH_CONTROL_PLANE_TOKEN.
This is distinct from packages/adaptorch-wpl in this monorepo, the stable
Work Packet Loop package shipped as a runtime dependency of
open-multi-agent-kit since v0.91.0.
Development
npm ci --ignore-scripts # Install the locked dependency graph
npm run build # Build all packages
npm run check # Lint, format, and type check
npm test # Run the hermetic default test suite
./omk-test.sh # Run OMK from sources
Supply-chain hardening
- Direct external dependencies are pinned to exact versions.
.npmrcsetssave-exact=trueandmin-release-age=2.package-lock.jsonis the dependency ground truth.npm run checkverifies pinned direct deps and the generated shrinkwrap.- The published CLI includes
npm-shrinkwrap.jsonto pin transitive deps. - CI installs with
npm ci --ignore-scripts; scheduled audits runnpm audit.
Contributing
See CONTRIBUTING.md for contribution guidelines and development.md for project setup.
Documentation
- Read the documentation
- Browse all public Skills
- Harness Graph control plane
- Changelog (coding-agent / open-multi-agent-kit)
- Release notes for v0.96.0
- Unreleased draft notes
FAQ (AEO)
Is OMK a coding agent or an orchestrator? Both: open-multi-agent-kit is an
interactive coding-agent CLI; OMK//CONTROL adds multi-agent DAG lanes, skill/MCP
routing, and evidence gates on top.
Which models does OMK support? Provider-neutral — Codex, Claude, OpenCode Zen/Go,
Kimi, GLM/ZAI, NVIDIA NIM, local providers, and more via omk-ai. Swap models
without changing the control/evidence model.
How is completion verified? Acceptance predicates and fresh command evidence.
Unverified runs are labeled UNVERIFIED; green chat is not a release signal.
Can OMK do marketing/SEO work? Yes, via skills (omk-marketing hub + SEO/CRO/
content skills listed above). Publishing, ads spend, and outreach still require
explicit operator confirmation.
Where do release notes live? Versioned notes under .github/RELEASE_NOTES_v*.md;
the coding-agent CHANGELOG is the source of
truth and syncs the “Recent releases” block below (npm run sync:readme-releases).
Recent releases
Release v0.96.0
Added
- Added
omk-protocol, the versionedTaskSpec -> ExecutionAttempt -> Observation -> EvaluationResult -> RuntimeDecisioncontract package, with runtime validators, explicit waivers, and pure semantic and runtime-decision reducers. - Added
evidenceReceiptToObservation()to project integrity-checked EvidenceReceipt v3 cores into immutable protocol facts. Legacy mutableEvidenceStatusandTaskContractverdict APIs remain compatible but are deprecated. - Added the optional
omk-book-to-skillpackage with compile/update commands, a pinned upstream workflow, advisory generated-skill scanning, and SHA-256 source/artifact provenance checks. Python extractors remain outside OMK core. - Added deterministically seeded, bounded
fast-checkmodel and property suites for WPL transitions, replay migration and CAS, evidence freshness, subagent topology, run-journal CAS, and timeout/abort settlement ordering.
Changed
- New replay events declare
jcs-rfc8785-v2and hash RFC 8785-canonical payloads. Events without an algorithm remain verified asjson-stringify-v1; mixed ledgers and exports preserve legacy records without rewriting them.
Fixed
- NVIDIA NIM's
z-ai/glm-5.2entry now transmitsreasoning_effort, including the generatedmaxthinking level; other NVIDIA models keep conservative compatibility defaults. - Billing-cycle and quota exhaustion, including provider 403 usage-limit responses, now classify as
provider.rate_limitand can switch to the first configured, authenticated resilience candidate before retry. Each attempt remains journaled, and a recovered retry ends with a latercompletedtermination. - Subagent DAG scheduling now sorts simultaneously ready lanes by lane ID, so topology aggregation does not depend on input insertion order.
- Local release bundles now include
omk-adaptorch-wpl, allowing isolated installs of the full packed workspace without resolving that dependency from the registry.
Release notes live in RELEASE_NOTES_v0.96.0.md.
Release v0.95.2
Changed
- macOS sessions now derive replay-ledger process identity from bounded BSD
ps -o lstart=output, so replay-lock acquisition no longer fails closed during AgentSession startup on Darwin while Linux/procbehavior remains unchanged. - The status rail now verifies connected MCP servers with protocol pings, marks dead processes as failed, and retries failed servers on a bounded slower cadence without spawning idle servers.
- Interactive UX now includes an empty-editor affordance hint, elapsed-time and interrupt details on the working indicator, transient information notices, width-safe editor scroll borders, and opt-in footer CPU/memory metrics.
- Extension tools can resolve timeouts from current context. The subagent extension uses this to remove task-count, concurrency, execution-budget, attempt, and outer tool-timeout caps in Ultra while preserving explicit cancellation and non-Ultra limits.
- The startup control panel now identifies the product with
WELCOME TO OMKinstead of legacy Pi agent branding. - Context-budget prompts use compact metadata for valid zero-resource plans while retaining cache-state and legacy optimizer compatibility telemetry; diagnostic and non-empty plans keep full observability, and invalid budgets bypass the plan cache so diagnostics cannot be hidden by a prior hit.
- The workspace context-budget cache scans every persisted key/value, keeps credential-shaped entries in memory only, and removes unsafe legacy snapshots instead of persisting secret-shaped text.
- Exact context representations now reuse content-addressed cache entries across different queries and budget sizes instead of forcing avoidable misses.
- Opt-in reasoning-router learning now isolates default ledgers and compiled bias snapshots per repository or git worktree, captures explicit manual thinking-level overrides as bounded feedback, and keeps updates behind the shipped, deterministic
omk router-feedback compile-biasbetween-session command. Snapshot loading rejects nonzero biases below the strong-evidence threshold, unsafe or inconsistent counts, and duplicate cells; compilation uses an exclusive randomized temporary file before atomic rename. - Session bash now defaults to OS sandbox enforcement instead of ledger-only audit mode. macOS
sandbox-execand Linuxbwraprestrict writes to the workspace/temp directories and disable network access; missing backends fail closed. Unwrappedauditand disabledoffmodes now require an explicitOMK_BASH_SANDBOXvalue, and unknown values resolve toenforce.
Release notes live in RELEASE_NOTES_v0.95.2.md.
Release v0.95.1
Added
- Harness Graph control plane (
.omk/harness-graph/$): \text{deterministic} \text{agents} \times \text{skills} \times \text{hooks} \times \text{MCP} \text{inventory} \text{with} 3-\text{tier} \text{skill} \text{classification}, \text{bipartite} \text{SPOF} \text{criticality}, \text{Louvain} \text{communities}, \text{association}-\text{rule} \text{lift}, \text{hybrid} \text{CF} \text{wiring} \text{recommendations} ($jaccard · idf · lift_boost), fail-closedhealth_gate.py+ debt allowlist, executivedashboard.md, review-onlywiring-patch, synthetic unit + property tests, and CI workflow.github/workflows/harness-graph.yml. - Harness Graph ops tooling:
compact-skills-index.mjs(demand-union index rebuild),prune-retired-hooks.mjs(retired hook capability cleanup),apply-wiring-patch.py(half-bundle completion checklist), session-start drift audit hook with optionalHARNESS_GRAPH_STRICT=1.
Fixed
- Harness Graph green-metric traps: runtime-derived hook/MCP catalogs (no hardcoded answer keys), bipartite SPOF instead of empty articulation tables, default-only model-drift axis (failover is advisory), skills-index no longer dumps the full on-disk universe into false orphan-active counts.
Docs
- Root README: AEO/SEO-oriented positioning, FAQ, and marketing/growth skill keyword map (
omk-marketing+ marketingskills pack). - Spec/plan/scorecard for harness-graph engineering (
specs/012-harness-graph-engineering/,.omk/harness-graph/SCORECARD.md).
Release notes live in RELEASE_NOTES_v0.95.1.md.
License
MIT