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/core provides the runtime, tool library, checkpointing, tracing, CLI, and the offline Run Viewer.
  • OTel integration@open-multi-agent/otel lets you ship OMA traces to a centralized OpenTelemetry stack.
  • Scaffoldercreate-oma-app powers npm create oma-app for quick starter templates.
  • Integrations – Community projects embed OMA in PR‑review assistants, WordPress security scanners, quant‑model‑driven research tools, and more.

Documentation & resources

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