open-multi-agent/open-multi-agent
Self-hosted TypeScript agent runtime with durable approvals and verifiable run records. Own it, approve it, audit it.
Open Multi‑Agent (OMA)
What it is – A TypeScript‑first framework that lets you run dynamic teams of LLM‑powered agents inside any Node.js application. You give the system a high‑level goal, a built‑in coordinator creates a task DAG on the fly, schedules the work across agents, and records every step so the run can be inspected, approved, replayed, or resumed.
Key ideas
- Goal‑driven orchestration – No hand‑written graph; the coordinator builds the dependency graph at runtime from the user‑provided prompt.
- Controlled execution – Plans, task dispatches, and tool calls can be previewed and paused for human approval. The framework supplies an approval hook and durable checkpoints.
- Observability & replay – All runs are stored as trace data. An offline Run Viewer visualises the DAG, span waterfall, token usage, and tool calls, and lets you replay a run exactly as it happened.
- Safety & privacy – Tools are disabled by default; each call must be explicitly allowed. Telemetry and persisted state are subject to opt‑in privacy controls.
- Open runtime – Works with any LLM provider (OpenAI, Claude, Gemini, local servers, AI‑SDKs) and can mix cloud and on‑prem models. Supports shared memory, budgets, retries, loop detection, and OpenTelemetry export.
Typical use‑cases
- Complex back‑office automation (e.g., PR review bots, security analysis pipelines).
- Research or analysis teams where multiple agents need to gather facts, compare evidence, and reach a consensus.
- Production‑grade AI services that require auditability, approval workflows, and the ability to resume after failures.
Getting started
# Create a starter project with a demo that runs entirely offline
npm create oma-app@latest my-oma
Or add the core library to an existing Node.js codebase:
npm install @open-multi-agent/core
import { OpenMultiAgent } from '@open-multi-agent/core'
const oma = new OpenMultiAgent({ defaultProvider: 'openai', defaultModel: 'gpt-5.4' })
const team = oma.createTeam('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.')
console.log(result.agentResults.get('coordinator')?.output)
The example runs without an API key because it uses scripted model responses; set OPENAI_API_KEY to try it with a real model.
Safety hook example – pause any consequential tool call (e.g., file writes) for manual review:
const oma = new OpenMultiAgent({
defaultProvider: 'openai',
defaultModel: 'gpt-5.4',
onToolCall: ({ consequential }) =>
consequential ? { action: 'suspend' } : { action: 'allow' },
})
Ecosystem
- Core package –
@open-multi-agent/coreprovides the runtime, tool library, checkpointing, tracing, CLI, and the offline Run Viewer. - OTel integration –
@open-multi-agent/otellets you ship OMA traces to a centralized OpenTelemetry stack. - Scaffolder –
create-oma-apppowersnpm create oma-appfor quick starter templates. - Integrations – Community projects embed OMA in PR‑review assistants, WordPress security scanners, quant‑model‑driven research tools, and more.
Documentation & resources
- Full docs: https://open-multi-agent.com/getting-started/introduction/
- API reference & guides live in the
packages/corefolder. - Comparison with other orchestration frameworks (LangGraph, CrewAI, etc.) is available on the website.
License – MIT (see LICENSE file). The project is maintained by YuanASI Technology and welcomes contributions via GitHub issues and pull requests.
Related
- Project
- Project
- Project
- Project
- Project