Build stateful agents with explicit control over every step. Keep humans in the loop and workflows on track.
OrchestrationOpen Multi Agent
Self-hosted TypeScript agent runtime with durable approvals and verifiable run records. Own it, approve it, audit it.
Reliable multi-step workflows
1 release
Official GitHub release feed
Follow the changes
The release trail
Original notes, ready to explore. Open a release to see what changed.
Open Multi Agentv1.19.0
From the release notes
Added Added an opt-in authoritative run store through OrchestratorConfig.runStore and RunTasksOptions.runStore; it gives a logical run a durable lifecycle record, an execution lease, and a monotonically increasing fencing token so one worker at a time advances the run and a worker that was taken over cannot write after the takeover. Added the RunStore interface, the MemoryStoreRunStore adapter over any MemoryStore with compare-and-set, and the RunLedger and RunLeaseHandle surface for reading, cancelling, and resuming a run from outside its worker. Changed TeamConfig.maxConcurrency now bounds the agent pool for that team's runs instead of being accepted and ignored. It intersects with OrchestratorConfig.maxConcurrency, and the smaller value wins, so a team can narrow its own pool but never widen it past the orchestrator ceiling. A team that set a cap below the orchestrator's was previously running at the orchestrator value and now runs at its own lower value; raise or remove the team cap to keep the previous throughput. A cap that is not an integer of at least 1 is reported as an INVALID_TEAM_MAX_CONCURRENCY warning on onProgress and the orchestrator value applies. With a run store configured, execution-ownership and run-lifecycle writes fail closed instead of following the best-effort semantics of checkpoint and telemetry writes: a fenced-out checkpoint write never reaches the store, a lost lease stops the run at the dispatch gate, and a worker that lost its lease reports the fence failure rather than success. Runs with no run store configured are unchanged. The oma CLI default model for provider: 'deepseek' is now deepseek-flash (DeepSeek-V4.1-Flash), replacing deepseek-v4-flash. The retired name still resolves, and library users that pass an explicit model are unaffected. Provider docs, adapter JSDoc, the scaffolder env template, and the DeepSeek examples moved to the same name. The DeepSeek adapter JSDoc no longer states that thinking runs at high effort. The adapter forwards whatever effort the caller passes and sets none itself; runtime behavior is unchanged. Corrected published JSDoc that misstated runtime behavior, including onAgentStream coverage in runTasks(), done stream-event payloads per layer, retryable-error classification, and the RedactingStore example constructor call. The delegate_to_agent error returned when the pool has no free slot now points at both ceilings: "Increase maxConcurrency on the orchestrator or the team" rather than the orchestrator alone. Callers that match on that string should update it. The @open-multi-agent/core package description on npm was rewritten to lead with running in your own environment, approval gates, and a verifiable record of every run. LICENSE now names Shenzhen YuanASI Technology Co., Ltd. alongside the open-multi-agent contributors, package READMEs close with a maintainer line, and the author field in the published package.json files points at YuanASI. The MIT terms are unchanged.
A collected snapshot, not the complete archive.
Keep connecting the dots
There’s more where that came from.
Build agents, assemble teams, and orchestrate workflows with a toolkit designed to take them into production.
OrchestrationCompose AI agents and model-powered workflows with Microsoft’s SDK for Python, .NET, and Java.
Orchestration