Skip to content

Introduction

open-multi-agent is a TypeScript-native orchestration framework for Node.js backends. It lets specialist agents work as one team: for a non-trivial goal, runTeam() can turn the outcome into a task DAG, run independent work in parallel, and synthesize the results.

Use OMA when

  • A goal benefits from different specialist roles.
  • Some work can run in parallel.
  • The steps may change with the input.
  • You want orchestration inside an existing Node.js backend.

Keep it simpler when

  • One model call already solves the task.
  • Every step and transition must stay fixed.
  • You only need a provider SDK or chat UI.
  • You do not want the cost of an extra planning call.
  1. Goal — your application supplies an outcome and a team of agents.
  2. Plan — for a non-trivial runTeam() goal, the coordinator creates tasks, dependencies, and assignments. A simple goal may go directly to one agent.
  3. Execute — the scheduler unblocks tasks as their dependencies finish and runs independent tasks in parallel.
  4. ResultrunTeam() synthesizes the task outputs. Individual agents can also return schema-validated structured data when you configure an outputSchema.

The architecture page shows the runtime components behind this flow.

Agent

A role with a model, instructions, and an explicit set of tools.

Team

The agents available for one goal, with optional shared memory.

Task

A unit of work with an assignee and optional dependencies.

Orchestrator

The API that creates teams, schedules work, and returns run results.

  • Use runAgent() for one agent and one focused task.
  • Start with runTeam() when you know the goal but do not want to maintain the task graph.
  • Use runTasks() when the graph and assignments must be explicit.

The Quick Start gives you a no-key first run in about five minutes. Then Choose a Run Mode explains the tradeoffs in detail.

Still comparing frameworks? See OMA alongside LangGraph, CrewAI, AutoGen, and the OpenAI Agents SDK on the comparison pages.