open-multi-agent/open-multi-agent

★ 6,944⑂ 2,433

Self-hosted TypeScript agent runtime with durable approvals and verifiable run records. Own it, approve it, audit it.

About open-multi-agent/open-multi-agent

open-multi-agent/open-multi-agent is an open-source project on GitHub, mainly written in TypeScript. Self-hosted TypeScript agent runtime with durable approvals and verifiable run records. Own it, approve it, audit it. It currently holds 6,944 stars and 2,433 forks with 0 open issues, and was last pushed on an unknown date (repository created unknown).

Project Overview

AI Homed tracks it on the Local & On-Device AI board.

GitHub Repository Details

Repository open-multi-agent/open-multi-agent · default branch - · size 0 KB · watchers 0 · source: GitHub REST API and repository README

README

https://github.com/open-multi-agent/open-multi-agent/blob/HEAD/
OMA

Agents your organization can own, approve, and audit.
OMA (Open Multi-Agent) is a self-hosted TypeScript agent runtime: consequential actions wait for durable, tamper-evident approvals, and every run leaves a record you can verify offline, byte for byte.

https://github.com/open-multi-agent/open-multi-agent/blob/HEAD/npm version https://github.com/open-multi-agent/open-multi-agent/blob/HEAD/Node.js version https://github.com/open-multi-agent/open-multi-agent/blob/HEAD/CI https://github.com/open-multi-agent/open-multi-agent/blob/HEAD/Supply chain audit https://github.com/open-multi-agent/open-multi-agent/blob/HEAD/codecov https://github.com/open-multi-agent/open-multi-agent/blob/HEAD/MIT License

Website · Docs · Examples · npm

English · 中文


No telemetry. No hosted control plane. Your keys, your models — cloud, local (Ollama, vLLM, llama-server), or Chinese providers — your environment. Nothing stops working when the people who built it leave.

Get started

Requires Node.js 20 or newer. For production, use a currently maintained Node.js LTS release. Node.js 20 is upstream-EOL and retained only as a migration compatibility window; OMA will remove it in the next major release, no earlier than 2026-10-31.

Scaffold a PR review agent, security analysis agent, or teaching DAG:

npm create oma-app@latest my-oma

In an interactive terminal, that one command selects a starter and runtime, installs dependencies, and runs a deterministic local demo. The demo needs no API key and makes no model request: scripted model responses drive the real OMA scheduler, result aggregation, and offline dashboard.

Or add OMA to an existing backend:

npm install @open-multi-agent/core
import { FileStore, OpenMultiAgent } from '@open-multi-agent/core'

// Your keys and your endpoint: a hosted provider, or a local server through baseURL. const oma = new OpenMultiAgent({ defaultProvider: 'openai', defaultModel: 'gpt-5.4', // Consequential tool calls (file writes, shell) pause for a human decision. onToolCall: ({ consequential }) => (consequential ? { action: 'suspend' } : { action: 'allow' }), })

const team = oma.createTeam('ops', { name: 'ops', agents: [{ name: 'operator', systemPrompt: 'Reconcile overdue invoices.', toolPreset: 'readwrite' }], })

// The checkpoint store keeps the run and its pending approvals durable. const result = await oma.runTeam(team, 'Find overdue invoices and draft the reminders.', { checkpoint: { store: new FileStore('./.oma/run.json') }, })

// result.status?.code === 'suspended' until a reviewer decides result.pendingApprovals, // each bound to a hash of exactly what the reviewer was shown.

Set OPENAI_API_KEY to run this example. Providers covers other hosted models, local servers, OpenAI-compatible endpoints, and AI SDK providers.

runAgent() runs a single agent, runTasks() executes an explicit pipeline, and runTeam() plans from a goal. The Core package guide walks through all three modes, provider and credential setup, and the production checklist. The example index lists every runnable example across basics, cookbook workflows, patterns, providers, and integrations.

Durable approvals

A plan, task dispatch, or tool-call gate can return suspend. The request is stored beside the checkpoint, bound to a SHA-256 hash of exactly what the reviewer saw, and the run resumes from that content after a restart. A decision is atomic and first-wins; a tampered request or a store without compare-and-set fails closed.

approval/durable.ts · durable-approval.test.ts (16 cases) · durable-approval-validation.test.ts (7 cases) · Guide

Verifiable journal

Attach a journal backend and the run records every block the model saw, every tool call and result, and every context rewrite. verifyRun() reads it back cold, offline, and checks that each block's named source event still reproduces it byte for byte; an evicted window is reported as inconclusive, not as a failure. It proves lineage and content, not that the file was never edited.

journal/verify.ts · journal/hash.ts · verify-run.test.ts (11 cases) · Guide

Governance floor

Declare governanceIntent: 'required' with requiredRoles, and the run is judged on an execution receipt: which roles ran, in what order, with which dependency edges, and whether an independent review happened. The evaluator never sees agent output text, and a run can succeed and still report unsatisfied.

orchestrator/governance.ts · observability/execution-receipt.ts · governance-floor.test.ts (16 cases) · Guide · Receipts

Runs where you run

Built with OMA

open-multi-agent launched 2026-04-01 under MIT. Known users and integrations to date:

More users and integrations

Users

  • PR-Copilot by kidoom. AI pull-request review assistant running an OMA review team, with defineTool repo-context tools and a custom ContextStrategy for token-aware diff compression.
  • StuFlow by znc15. Terminal AI coding assistant on OMA's orchestration core, driving runAgent / runTasks / runTeam with a custom coordinator, paired with DeepSeek.
  • Reports to Charts Studio. Turns documents and research tables into slide-ready charts, using a five-role extraction council with structured outputs and deterministic validation.
Integrations
  • @agentsonar/oma: Sidecar detecting cross-run delegation cycles, repetition, and rate bursts.
  • CodingScaffold: Agentic-coding scaffold that lists OMA as an optional orchestration backend, with a runTeam workflow template.
  • baize-oma: HTTP adapter exposing OMA runAgent() and runTeam() as Baize slot capabilities.

We build customer-owned systems on OMA for organizations that need one. Email jack@yuanasi.com.

Sponsors

Paid sponsors supporting open-multi-agent. Sponsorship does not affect technical decisions or model recommendations.

Providers

Optional coordinator

runTeam() decomposes a goal into a task graph across agents. One model call turns the goal into task specs with assignees and dependencies, a deterministic scheduler executes them, and a second call writes the final answer from the completed task outputs. The coordinator is never consulted mid-run, and the finished run is data you can read back. Use runAgent() or runTasks() when you already know the work.

import { OpenMultiAgent } from '@open-multi-agent/core'

const oma = new OpenMultiAgent({ defaultProvider: 'openai', defaultModel: 'gpt-5.4' })

const team = oma.createTeam('research-team', { name: 'research-team', agents: [ { name: 'researcher', systemPrompt: 'Find the relevant facts.' }, { name: 'analyst', systemPrompt: 'Compare evidence and identify tradeoffs.' }, ], sharedMemory: true, })

const result = await oma.runTeam(team, 'Compare three approaches and recommend one.')

// Nothing above declares a task graph. The coordinator planned one at runtime, // and the finished run is data you can read back. for (const task of result.tasks ?? []) { console.log([${task.status}] ${task.title} → ${task.assignee ?? 'unassigned'}, task.dependsOn) }

console.log(result.agentResults.get('coordinator')?.output) console.log(result.totalTokenUsage)

https://github.com/open-multi-agent/open-multi-agent/blob/HEAD/OMA Run Viewer replaying a real run: task DAG and span waterfall views with per-task status, assignee, tokens, and tool calls

The offline Run Viewer replaying a real run from the trace store: task DAG, span waterfall, and per-task evidence, with no hosted service involved.

Coordinator covers what it decides and what it is allowed to see. Plan replay freezes an approved plan, Consensus verifies outputs with independent judges, and External agents puts Claude Code, Gemini CLI, and Codex on the same task graph through process and ACP backends.

Packages

Core users can store traces locally and inspect them with the offline Run Viewer. Install the OTel package only when OMA traces should appear in the same monitoring system as the rest of your application.

Documentation

| Goal | Start here | |---|---| | Install and run | All docs · Core package guide · Examples · CLI · Glossary · Production checklist | | Configure models and tools | Providers · LLM egress policy · Tools · Sandbox and shell · MCP · Structured input · External agents | | Operate reliably | Observability · Run Viewer · Run journal · Evaluation · Checkpoint and resume · Run store and leases · Durable approvals · Adaptive recovery · Context management · Errors | | Control orchestration | Coordinator · Consensus · Execution routing · Model routing · Task scheduling · Plan replay · Shared memory · Streaming · Budgets and limits |

Contributing

Issues and pull requests are welcome. See CONTRIBUTING.md for workspace boundaries, validation, and submission guidance.

Contributor credits by area are in CONTRIBUTORS.md.

License

MIT

Maintained by YuanASI (Shenzhen YuanASI Technology Co., Ltd.).

GitHub Stars & Activity

6,944Stars
2,433Forks
0Open issues
TypeScriptLanguage

GitHub Popularity

GitHub stars6,944
Forks2,433
Open issues0
Primary languageTypeScript
License-
Stars gained today0
Created-
Last pushed-

Trending History

Trending statusnot on today's boards

Related AI Projects

1

ChatGPTNextWeb / NextChat

TypeScript★ 88,790⑂ 59,030
2

chatboxai / chatbox

TypeScript★ 41,812⑂ 4,252
3

dyad-sh / dyad

TypeScript★ 21,587⑂ 2,639
4

lidge-jun / opencodex

TypeScript★ 15,561⑂ 1,180
5

browseros-ai / BrowserOS

TypeScript★ 13,720⑂ 1,460
6

getumbrel / llama-gpt

TypeScript★ 10,937⑂ 704
7

miurla / morphic

TypeScript★ 9,133⑂ 2,348
8

n4ze3m / page-assist

TypeScript★ 8,220⑂ 784

More AI Rankings