open-multi-agent

Frameworks & SDKs 💻 TypeScript ⚖️ MIT 🟢 Actively maintained
6.9k stars

Open Multi-Agent (OMA) is an AI agent orchestration framework for TypeScript backends that runs dynamic workflows in Node.js. It converts a goal into a task DAG at runtime, executes it with a deterministic scheduler, and records the run for inspection and replay. It is for developers building multi-agent systems that need control, reliability, and observability in production.

open-multi-agent demo
🎞️ Demo from the project README

✨ Key features

  • Dynamic orchestration: coordinator builds task DAG at runtime
  • Controlled execution: preview, approve, suspend, and replay plans
  • Reliability: checkpoints, retries, timeouts, loop detection, budgets
  • Observability: traces, execution receipts, offline Run Viewer
  • Safety: default-deny tools, gated calls, privacy controls
  • Open runtime: supports LLM agents and external CLIs (Claude Code, etc.)

🎯 Use cases

  • Build a PR review agent that analyzes pull requests
  • Create a security analysis platform for WordPress
  • Run autonomous agent loops with local quantized models offline
  • Turn documents into slide-ready charts with a multi-role council
  • Integrate multi-agent orchestration into existing Node.js backends

📦 Installation

🧰 Requirements: Requires Node.js 20 or newer; for production use a maintained LTS release. API keys needed for hosted models (e.g., OPENAI_API_KEY) unless using local or scripted models.

Scaffold a new project:

npm create oma-app@latest my-oma

Or add to an existing backend:

npm install @open-multi-agent/core

🚀 Usage

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.')

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

⚠️ Good to know

The project launched 2026-04-01 under MIT; no other limitations stated.

❓ FAQ

What Node.js version is required?

Requires Node.js 20 or newer; for production, use a currently maintained Node.js LTS release.

Can I run OMA without an API key?

Yes, the scaffolded demo needs no API key and makes no model request; it uses scripted model responses to drive the scheduler.

What orchestration modes are available?

runTeam() plans from a goal, runAgent() runs a single agent, and runTasks() executes an explicit pipeline.

How can I inspect a run?

Each run is recorded as data you can read back; you can replay the task DAG and span waterfall in the offline Run Viewer.

📊 Repository

Stars★ 6,874
Forks🍴 2,433
Open issues🐛 9
Last commit🕒 Sep 4, 2026
Created📅 Mar 2026
Language💻 TypeScript
License⚖️ MIT

🤖 Overview, features, install steps and FAQ were generated from the project's README on Sep 4, 2026. Always check the original source before running commands.