Agents your organization can own, approve, and audit.
OMA (Open Multi-Agent) is a self-hosted TypeScript agent runtime for coordinating agents, adding human approval gates, and inspecting runs offline.
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:
```bash
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:
```bash
npm install @open-multi-agent/core
```
```typescript
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)
```
Set `OPENAI_API_KEY` to run this example. [Providers](docs/providers.md) 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](packages/core/README.md) walks through all three modes, provider and credential setup, and the production checklist. The [example index](packages/core/examples/README.md) lists every runnable example across basics, cookbook workflows, patterns, providers, and integrations.
## Durable approvals
Pause before executing a plan, dispatching a task, or calling a tool for human approval. With persistent storage, a restarted process can continue from the reviewed content. Your application supplies the approval interface and notifications. [Guide](docs/durable-approvals.md)
## Verifiable journal
Enable a run journal to record model inputs, tool calls, and results for later inspection. `verifyRun()` checks the recorded sources and content for consistency offline; it does not prove the journal was never edited. [Guide](docs/run-journal.md)
## Governance floor
Declare required roles and their execution order, then check whether the actual run met those requirements. A successful run can still leave governance requirements unmet, so applications must check `governanceConclusion` separately. [Guide](docs/tool-configuration.md#declared-governance-roles-in-runteam)
## Runs where you run
- **No telemetry, no hosted control plane.** A library with no OMA backend or account, and none planned. It makes no analytics, license, update, or phone-home request. [Self-hosting](docs/self-hosting.md)
- **Your keys, your models.** Built-in adapters for Anthropic, OpenAI, Azure OpenAI, Bedrock, Gemini, Grok, and Copilot, and for DeepSeek, Doubao, Hunyuan, MiniMax, MiMo, and Qiniu; Ollama, vLLM, and llama-server through `baseURL`; any OpenAI-compatible endpoint and Vercel AI SDK providers. [Providers](docs/providers.md)
- **Egress policy.** `offline` or `allowlist`, checked before a built-in adapter connects. A child policy can only tighten its parent, an unenforceable transport fails closed, and process and ACP backends sit outside it. [LLM egress policy](docs/egress-policy.md)
## Built with OMA
`open-multi-agent` launched 2026-04-01 under MIT. Known users and integrations to date:
- **[temodar-agent](https://github.com/xeloxa/temodar-agent)** by [Ali Sünbül](https://github.com/xeloxa). WordPress security analysis platform running OMA's built-in tools (`bash`, `file_*`, `grep`) inside a Docker runtime. Confirmed production use.
- **[Mark Galyan](https://github.com/apollo-mg)** runs OMA fully offline on local quantized models, using the coordinator and context compaction to keep autonomous agent loops alive under tight VRAM limits. Contributor since the framework's first month.
- **[Engram](https://www.engram-memory.com)**: "Git for AI memory." Syncs knowledge across agents instantly and flags conflicts. ([repo](https://github.com/Agentscreator/engram-memory))
More users and integrations
**Users**
- **[PR-Copilot](https://github.com/kidoom/PR-Copilot)** by [kidoom](https://github.com/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](https://github.com/znc15/StuFlow)** by [znc15](https://github.com/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](https://github.com/NARNIX0/Evident-Project)**. Turns documents and research tables into slide-ready charts, using a five-role extraction council with structured outputs and deterministic validation.
- **[OrchestrAI](https://github.com/Kong-YiKai/OrchestrAI)**: Visual multi-agent workspace using OMA for task-graph execution and peer review, with PostgreSQL-backed checkpoints for restart recovery.
**Integrations**
- **[@agentsonar/oma](https://github.com/agentsonar/agentsonar-oma)**: Sidecar detecting cross-run delegation cycles, repetition, and rate bursts.
- **[CodingScaffold](https://github.com/JRS1986/CodingScaffold)**: Agentic-coding scaffold that lists OMA as an optional orchestration backend, with a `runTeam` workflow template.
- **[baize-oma](https://github.com/timywel/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](mailto:jack@yuanasi.com).
## Sponsors
Paid sponsors supporting `open-multi-agent`. Sponsorship does not affect technical decisions or model recommendations.
**Providers**
- **[Atlas Cloud](https://www.atlascloud.ai/console/coding-plan)**: Full-modal AI inference platform giving one API for video, image, and LLM across 300+ curated models. $5 credit vouchers for OMA users, first come first served. See the [Atlas Cloud setup guide](docs/providers-atlascloud.md).
## 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.
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](docs/coordinator.md) covers what it decides and what it is allowed to see. [Plan replay](docs/plan-replay.md) freezes an approved plan, [Consensus](docs/consensus.md) verifies outputs with independent judges, and [External agents](docs/external-agents.md) puts Claude Code, Gemini CLI, and Codex on the same task graph through process and ACP backends.
## Packages
- **[`@open-multi-agent/core`](packages/core/README.md)**: Runtime, tools, memory, checkpoints, approvals, journal, traces, CLI, and offline Run Viewer.
- **[`@open-multi-agent/otel`](packages/otel/README.md)**: Optional OpenTelemetry adapter for teams with a centralized OpenTelemetry stack.
- **[`create-oma-app`](packages/create-oma-app/README.md)**: Scaffolder behind `npm create oma-app`; starter templates with a no-key local demo.
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](docs/README.md) · [Core package guide](packages/core/README.md) · [Examples](packages/core/examples/README.md) · [CLI](docs/cli.md) · [Glossary](docs/glossary.md) · [Production checklist](docs/production-checklist.md) |
| Configure models and tools | [Providers](docs/providers.md) · [LLM egress policy](docs/egress-policy.md) · [Tools](docs/tool-configuration.md) · [Sandbox and shell](docs/sandbox-and-shell.md) · [MCP](docs/mcp.md) · [Structured input](docs/structured-input.md) · [External agents](docs/external-agents.md) |
| Operate reliably | [Observability](docs/observability.md) · [Run Viewer](docs/run-viewer.md) · [Run journal](docs/run-journal.md) · [Evaluation](docs/evaluation.md) · [Checkpoint and resume](docs/checkpoint.md) · [Run store and leases](docs/run-store.md) · [Durable approvals](docs/durable-approvals.md) · [Adaptive recovery](docs/adaptive-recovery.md) · [Context management](docs/context-management.md) · [Errors](docs/errors.md) |
| Control orchestration | [Coordinator](docs/coordinator.md) · [Consensus](docs/consensus.md) · [Execution routing](docs/execution-routing.md) · [Model routing](docs/model-routing.md) · [Task scheduling](docs/task-scheduling.md) · [Plan replay](docs/plan-replay.md) · [Shared memory](docs/shared-memory.md) · [Streaming](docs/streaming.md) · [Budgets and limits](docs/budgets-and-limits.md) |
## Contributing
Issues and pull requests are welcome. See [CONTRIBUTING.md](.github/CONTRIBUTING.md) for workspace boundaries, validation, and submission guidance.
Contributor credits by area are in [CONTRIBUTORS.md](CONTRIBUTORS.md).
## License
MIT
Maintained by [YuanASI (Shenzhen YuanASI Technology Co., Ltd.)](https://yuanasi.com/en?utm_source=github&utm_medium=readme_footer&utm_campaign=open_multi_agent).