open-multi-agent/open-multi-agentPublic

TypeScript AI agent orchestration framework with dynamic workflows. Describe the goal, not the graph: a coordinator plans the task DAG at runtime and runs it on any LLM (Claude, ChatGPT, Gemini, DeepSeek, or local models).

AI summary: A dynamic TypeScript AI orchestration framework that plans and executes multi-agent workflows at runtime.

Stars
6.7K
+12 today
Forks
2.4K
Watchers
61
Open issues
5
Open PRs
1
Contributors
~50
Commits
449
Branches
2

TypeScriptMITCreated Mar 31, 2026Last push todayLatest release v1.13.0+48 stars this week+61 this month

Star history

since May 3, 2026
02K4K6KMay 2026Jun 2026Jul 2026Aug 2026
6.7K stars as of Aug 7, 2026, tracked back to May 3, 2026. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulMonWedFri2025-08-03: 0 commits2025-08-04: 0 commits2025-08-05: 0 commits2025-08-06: 0 commits2025-08-07: 0 commits2025-08-08: 0 commits2025-08-09: 0 commits2025-08-10: 0 commits2025-08-11: 0 commits2025-08-12: 0 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 0 commits2025-08-17: 0 commits2025-08-18: 0 commits2025-08-19: 0 commits2025-08-20: 0 commits2025-08-21: 0 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 0 commits2025-08-25: 0 commits2025-08-26: 0 commits2025-08-27: 0 commits2025-08-28: 0 commits2025-08-29: 0 commits2025-08-30: 0 commits2025-08-31: 0 commits2025-09-01: 0 commits2025-09-02: 0 commits2025-09-03: 0 commits2025-09-04: 0 commits2025-09-05: 0 commits2025-09-06: 0 commits2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 6 commits2026-04-02: 17 commits2026-04-03: 27 commits2026-04-04: 3 commits2026-04-05: 15 commits2026-04-06: 4 commits2026-04-07: 10 commits2026-04-08: 5 commits2026-04-09: 5 commits2026-04-10: 0 commits2026-04-11: 4 commits2026-04-12: 8 commits2026-04-13: 0 commits2026-04-14: 1 commit2026-04-15: 4 commits2026-04-16: 11 commits2026-04-17: 2 commits2026-04-18: 2 commits2026-04-19: 6 commits2026-04-20: 5 commits2026-04-21: 2 commits2026-04-22: 1 commit2026-04-23: 8 commits2026-04-24: 9 commits2026-04-25: 9 commits2026-04-26: 7 commits2026-04-27: 8 commits2026-04-28: 3 commits2026-04-29: 1 commit2026-04-30: 0 commits2026-05-01: 5 commits2026-05-02: 1 commit2026-05-03: 2 commits2026-05-04: 1 commit2026-05-05: 1 commit2026-05-06: 0 commits2026-05-07: 3 commits2026-05-08: 4 commits2026-05-09: 2 commits2026-05-10: 0 commits2026-05-11: 2 commits2026-05-12: 2 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 1 commit2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 5 commits2026-05-19: 3 commits2026-05-20: 1 commit2026-05-21: 1 commit2026-05-22: 0 commits2026-05-23: 1 commit2026-05-24: 1 commit2026-05-25: 1 commit2026-05-26: 3 commits2026-05-27: 9 commits2026-05-28: 6 commits2026-05-29: 2 commits2026-05-30: 1 commit2026-05-31: 1 commit2026-06-01: 0 commits2026-06-02: 3 commits2026-06-03: 0 commits2026-06-04: 4 commits2026-06-05: 0 commits2026-06-06: 1 commit2026-06-07: 4 commits2026-06-08: 1 commit2026-06-09: 1 commit2026-06-10: 0 commits2026-06-11: 2 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 1 commit2026-06-16: 2 commits2026-06-17: 2 commits2026-06-18: 5 commits2026-06-19: 9 commits2026-06-20: 2 commits2026-06-21: 7 commits2026-06-22: 1 commit2026-06-23: 1 commit2026-06-24: 1 commit2026-06-25: 0 commits2026-06-26: 1 commit2026-06-27: 1 commit2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 5 commits2026-07-02: 0 commits2026-07-03: 1 commit2026-07-04: 1 commit2026-07-05: 0 commits2026-07-06: 4 commits2026-07-07: 0 commits2026-07-08: 0 commits2026-07-09: 3 commits2026-07-10: 4 commits2026-07-11: 2 commits2026-07-12: 2 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 9 commits2026-07-16: 14 commits2026-07-17: 5 commits2026-07-18: 9 commits2026-07-19: 7 commits2026-07-20: 5 commits2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 18 commits2026-07-24: 7 commits2026-07-25: 0 commits2026-07-26: 11 commits2026-07-27: 2 commits2026-07-28: 1 commit2026-07-29: 1 commit2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits
402 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Actively maintained

    Pushed within 48 hours

  • Well documented

    High community health score

  • Permissive license

    MIT

  • Continuous integration

    Automated checks passing

What open-multi-agent does

Open Multi-Agent shifts away from statically defined agent graphs to a dynamic, goal-oriented approach. Users describe the desired outcome, and a central coordinator plans a directed acyclic graph (DAG) of tasks at runtime. It is model-agnostic, allowing execution across various LLMs including Claude, Gemini, DeepSeek, and local models via Ollama. This allows for highly flexible and adaptive multi-agent systems that can adjust their execution path based on intermediate results.

TypeScript developers and AI engineers building complex, adaptive multi-agent systems. Requires knowledge of Node.js and LLM concepts.

  • Dynamic task planning: The coordinator generates a task DAG at runtime based on the stated goal, rather than relying on hardcoded workflows.
  • Provider agnostic: Supports a wide range of LLMs including OpenAI, Anthropic, Gemini, DeepSeek, and local models.
  • TypeScript native: Built from the ground up for the Node.js ecosystem, providing strong typing and familiar tooling for JS developers.
  • Goal-oriented execution: Focuses on describing 'what' needs to be done rather than 'how', letting the framework handle the orchestration.
  • Multi-agent coordination: Manages the passing of context and results between specialized agents to solve complex, multi-step problems.

Where teams use it

Complex research automation

Ideal for tasks that require gathering data, analyzing it, and summarizing it through multiple specialized agents.

Adaptive problem solving

Useful for workflows where the steps are not known in advance and must be determined based on the outcome of previous actions.

Local LLM orchestration

Enables developers to build sophisticated multi-agent systems entirely locally using models like Ollama for privacy.

Flexible agentic applications

Serves as an alternative to rigid frameworks like LangChain or CrewAI for developers preferring a dynamic, TypeScript-first approach.

Getting started: npm install open-multi-agent

README

main branch

Open Multi-Agent


Open Multi-Agent

Describe the goal, not the graph.
Multi-agent orchestration that runs in your own environment.

npm version CI MIT License TypeScript codecov GitHub stars GitHub forks

OMA Run Viewer replaying a real multi-agent run: task DAG and span waterfall views with per-task status, assignee, tokens, and tool calls


Website · Docs · npm · Discussions

English · 中文


open-multi-agent is an AI agent orchestration framework for TypeScript backends that drops into any Node.js app. It runs dynamic workflows: a coordinator turns one goal into a task DAG at runtime, a deterministic scheduler executes it across the team, and the whole run stays data you can inspect, approve, and replay. The dashboard above is the built-in offline Run Viewer replaying a real run.

Why OMA

OMA combines dynamic orchestration with the control, evidence, and recovery paths needed to move multi-agent systems from prototype to production.

  • Dynamic orchestration. Describe the goal and let the coordinator build the task DAG, assign work, and synthesize the result at runtime. There is no hand-wired graph to maintain.

  • Controlled execution. Keep dynamic plans within explicit boundaries.

    • Approve: Preview and approve plans or individual dispatches, then freeze approved plans for replay.
    • Constrain: Declare required roles and order when topology cannot drift, and verify outputs with multi-agent consensus.
  • Production essentials. Run reliably, diagnose failures, and prevent quality regressions.

    • Reliability: Resume interrupted runs from checkpoints or opt into append-only plan repair at task outcome barriers. Retries, timeouts, loop detection, and token and cost budgets keep execution bounded.
    • Observability: Follow each run through stable identity, execution receipts, and traces; query them in TraceStore, replay the task DAG and span waterfall in the offline Run Viewer, or export through the optional OpenTelemetry adapter.
    • Evaluation: Use the same run records for versioned EvalSets, reference scorers, offline reports, CI gates, regression baselines, and production sampling.
    • Safety and privacy: Keep tools default-deny, gate individual calls, and apply explicit privacy controls to telemetry and persisted state.
  • Open runtime. Bring OMA into your stack without giving up control of agents, models, infrastructure, or credentials.

    • Agents: Process and ACP backends let Claude Code, Gemini CLI, and Codex join LLM agents on the same task DAG, shared memory, and budgets.
    • Models: Mix cloud and local models, natively integrated Chinese providers, OpenAI-compatible endpoints, and AI SDK providers. A fallback parser covers local models that emit tool calls as text.
    • Deployment: Run on your own infrastructure and credentials, locally, offline, or air-gapped. A minimal runtime footprint fits locked-down environments.

Get started

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

Scaffold a PR review agent, security analysis agent, or teaching DAG:

npm create oma-app@latest my-oma

In an interactive terminal, that one command selects a starter and runtime, installs dependencies, and runs a deterministic local demo. The demo needs no API key and makes no model request: scripted model responses drive the real OMA scheduler, result aggregation, and offline dashboard. Use --no-install to generate files only, or --no-run to install without starting the demo.

Or add OMA to an existing backend:

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', {
  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)

runTeam() plans from a goal, runAgent() runs a single agent, and runTasks() executes an explicit pipeline. The Core package guide walks through all three modes, provider and credential setup, and the production checklist. The example index lists 50+ runnable examples across basics, cookbook workflows, patterns, providers, and integrations.

Built with OMA

open-multi-agent launched 2026-04-01 under MIT. Known users and integrations to date:

  • temodar-agent. WordPress security analysis platform by Ali Sünbül. Uses our built-in tools (bash, file_*, grep) directly inside a Docker runtime. Confirmed production use.
  • Mark Galyan runs OMA fully offline on local quantized models, using the Coordinator and context compaction to keep autonomous agent loops alive under tight VRAM limits. Contributor since the framework's first month, across compaction, sampling, and tool-call parsing.
  • PR-Copilot. AI pull-request review assistant by kidoom. Runs an OMA review team (coordinator + scoped reviewer agents), defines repo-context tools with defineTool, and adds a custom ContextStrategy for token-aware PR-diff compression. Public code on @open-multi-agent/core.
  • StuFlow by znc15. Terminal AI coding assistant on OMA's orchestration core: builds a team and drives it through runAgent / runTasks / runTeam with a custom RunTeamOptions coordinator, paired with DeepSeek. Public code on @open-multi-agent/core.
  • Reports to Charts Studio. Turns documents and research tables into slide-ready charts. Uses OMA to run a five-role extraction council with structured outputs and deterministic validation. Public code on @open-multi-agent/core.

Integrations

  • Engram: "Git for AI memory." Syncs knowledge across agents instantly and flags conflicts. (repo, ~80 stars)
  • @agentsonar/oma: Sidecar detecting cross-run delegation cycles, repetition, and rate bursts.
  • CodingScaffold: Agentic-coding scaffold that lists OMA as an optional orchestration backend, with a runTeam workflow template.
  • Bilig WorkPaper: Formula-workbook MCP server with a reciprocal OMA integration for editing inputs, recalculating formulas, verifying readback, and persisting WorkPaper JSON.
  • baize-oma: HTTP adapter exposing OMA runAgent() and runTeam() as Baize slot capabilities.

Using open-multi-agent in production or a side project? Open a discussion and we will list it here. Built an integration? The integration guide covers how to get listed. For a deep integration, see the Featured partner program.

When OMA fits

OMA is designed for TypeScript teams that want the task graph to emerge from the goal at runtime.

Choose a graph-first framework when the workflow must be authored node by node. Use an LLM toolkit alone when one agent call is enough. OMA sits at the orchestration layer when several agents, dependencies, approvals, or recovery steps must work together.

For a named head-to-head against LangGraph, Mastra, CrewAI, the Vercel AI SDK, and others, see the comparison page.

Packages

  • @open-multi-agent/core: Orchestration runtime, tools, memory, checkpoints, traces, CLI, and offline Run Viewer.
  • @open-multi-agent/otel: Optional enterprise integration for production teams with a centralized OpenTelemetry stack.
  • create-oma-app: Scaffolder behind npm create oma-app; starter templates with a no-key local demo.

Core users can store traces locally and inspect them with the offline Run Viewer. Install the OTel package only when OMA traces should appear in the same monitoring system as the rest of your application.

Commercial support

Need to embed agent capabilities in an existing product or business system? Email jack@yuanasi.com for discovery and delivery support.

Documentation

Goal Start here
Install and run Core package guide · Examples · CLI
Configure models and tools Providers · Tools and sandbox · External agents
Operate reliably Observability · Evaluation · Checkpoint and resume · Adaptive recovery · Context management
Control orchestration Consensus · Execution routing · Model routing · Task scheduling · Plan replay · Shared memory

Contributing

Issues and pull requests are welcome. See CONTRIBUTING.md for workspace boundaries, validation, and submission guidance.

Contributor credits by area are on the Core package page.

License

MIT

View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Discussions

all 6

Releases and announcements

18 total
  1. v1.13.0v1.13.0Jul 24, 2026

    ## Execution routing and governance - Added pluggable execution routing for `runTeam()` through explicit `mode`, custom `ExecutionRouter` implementations, and the built-in `DeterministicRouter`. - Added structured governance declarations for required or preferred roles, ordered review paths, budget-aware degradation, and post-execution `governanceConclusion` checks. - Added privacy-preserving execution receipts and routing-decision trace linkage. - Consequential tools can now be declared with `ToolDefinition.consequential`. Undeclared runs expose a machine-readable disclosure flag and can require confirmation through `onToolCall`. - Automatic routing now recognizes structured Chinese, Japanese, and Korean goals using script-aware information length. ## Scheduling and task execution - Task DAG execution is event-driven by default: downstream work starts as soon as its dependencies complete. - Added configurable `dependency-first`, `round-robin`, `least-busy`, `capability-match`, and weighted `composite` scheduling strategies. - Agents and tasks can declare structured capabilities and hard requirements, with optional strict assignee validation. - `TeamRunResu

  2. v1.12.1v1.12.1Jul 20, 2026

    ## Evaluation V1 (#403–#409) - New `@open-multi-agent/core/eval` and `/eval/file` entry points. - Define reusable `Scorer` implementations and versioned `EvalSet` fixtures. - Run deterministic offline evaluations with reports, stores, gates, CLI commands, and reference scorers. - Sample and score production runs online without changing the business result. ## Offline Run Viewer (#394, #411) - Open saved results and traces locally without a running service. - Inspect task-level model, provider, token, and cost information through the viewer and CLI. ## Per-run metadata (#396) - Top-level run APIs accept bounded metadata that is propagated into results, traces, and checkpoint restores. ## Zero-key onboarding (#414) - `create-oma-app@0.5.0` can install and run a deterministic Demo without API keys or model requests. - Demo output clearly discloses simulated model responses and produces Markdown, JSON, and HTML reports. - New `--no-install` and `--no-run` flags support controlled scaffolding workflows. ## Examples catalog (#412) - Added a machine-readable examples catalog, schema, and coverage validation. ## Fixes (#390, #417) - The process backend cleans up descendant proce

  3. v1.11.0v1.11.0Jul 17, 2026

    ## Features - **Observability v2: trace spans and run identity** (#371, #373 by @JackChen-me). Every run now carries a stable `runId`, `attempt`, `traceId`, and `rootSpanId`, and emits the new TraceRecord v2 schema: a proper span tree covering run, coordinator, task, agent, LLM, tool, retry, delegation, consensus, and checkpoint, with DAG, synthesis, and restore relationships expressed as links. The existing seven-field `onTrace` callback keeps working unchanged. See [docs/observability.md](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/observability.md). - **Observability v2: sink and exporter lifecycle** (#374 by @JackChen-me). The new `@open-multi-agent/core/observability` subpath ships the public `TraceSink` / `TraceExporter` contract plus `BatchingTraceSink` (bounded queue, batched export, backoff retries, priority-aware drop), `CompositeSink`, `FilteringSink`, `SensitiveDataProcessor`, and `LegacyCallbackTraceSink`. Tracing stays metadata-only by default: prompts, completions, tool payloads, credentials, and reasoning content are never captured. - **Observability v2: trace stores** (#375, #384 by @JackChen-me). A storage-independent `TraceStore` contra

  4. v1.10.0v1.10.0Jul 11, 2026

    ## Features - **External coding agents over ACP** (#360 by @JackChen-me). OMA can now orchestrate an external coding agent over the Agent Client Protocol as a first-class team member, alongside LLM agents in the same task DAG. Declare an agent with `backend: { kind: 'acp', ... }` and it runs a local coding CLI (for example Claude Code via the official `@agentclientprotocol/claude-agent-acp` adapter) instead of an LLM, sharing the same shared memory, cascade-on-failure, and token budget as any other agent. See [docs/external-agents.md](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/external-agents.md). - **Orchestrator cost budget** (#358 by @LambIessz). New `maxCostBudget` and `estimateCost` on orchestrator config let you set a user-defined spend cap. The estimator receives the effective model, provider, phase, and task id so you can price per model, and the cap is enforced across `runAgent`, `runTasks`, `runTeam`, consensus, and synthesis, mirroring the existing token-budget boundaries. - **Per-agent scoped tool credentials** (#362 by @JackChen-me). New `AgentConfig.credentials` is a per-agent secret bag threaded into `ToolUseContext.credentials`. Tool code

  5. v1.9.0v1.9.0Jul 3, 2026

    ## Features - **Durable memory: `FileStore`** (#347 by @JackChen-me). A zero-dependency, filesystem-backed `MemoryStore`, so checkpoint/resume survives a process restart out of the box. Writes are atomic (temp file, fsync, rename) and reads come from an in-memory mirror; a corrupt state file fails loud instead of silently. Until now the only bundled store was `InMemoryStore`, so durability meant writing your own. - **Error-aware task retry** (#346 by @JackChen-me). Retry (opt-in via `maxRetries > 0`) now classifies failures: `isRetryableError()` skips provably-terminal errors (most 4xx, token-budget, aborted calls) instead of burning attempts, while 429, 5xx, network blips, and per-call timeouts still retry. Adds equal jitter and honors abort signals, on both streaming and non-streaming paths. - **Per-call LLM timeout** (#344 by @JackChen-me). New opt-in `AgentConfig.callTimeoutMs` (and on `CoordinatorConfig`) bounds a single `adapter.chat()` call, so one stalled request no longer hangs the whole run. Uniform across every adapter and surfaced as `LLMCallTimeoutError`, distinct from a deliberate abort or a real API error. Unset preserves current behavior exactly. - **Run-level metr

Code frequency

additions and deletions
+65.6K-65.6KWeek of 2026-03-29: +18,198 linesWeek of 2026-03-29: -1,633 linesWeek of 2026-04-05: +12,647 linesWeek of 2026-04-05: -1,062 linesWeek of 2026-04-12: +6,135 linesWeek of 2026-04-12: -248 linesWeek of 2026-04-19: +13,933 linesWeek of 2026-04-19: -5,285 linesWeek of 2026-04-26: +9,038 linesWeek of 2026-04-26: -1,610 linesWeek of 2026-05-03: +8,045 linesWeek of 2026-05-03: -1,436 linesWeek of 2026-05-10: +962 linesWeek of 2026-05-10: -15 linesWeek of 2026-05-17: +2,240 linesWeek of 2026-05-17: -41 linesWeek of 2026-05-24: +5,295 linesWeek of 2026-05-24: -837 linesWeek of 2026-05-31: +1,554 linesWeek of 2026-05-31: -151 linesWeek of 2026-06-07: +2,987 linesWeek of 2026-06-07: -114 linesWeek of 2026-06-14: +65,567 linesWeek of 2026-06-14: -61,945 linesWeek of 2026-06-21: +335 linesWeek of 2026-06-21: -270 linesWeek of 2026-06-28: +1,796 linesWeek of 2026-06-28: -172 linesWeek of 2026-07-05: +3,874 linesWeek of 2026-07-05: -304 linesWeek of 2026-07-12: +24,167 linesWeek of 2026-07-12: -4,790 linesWeek of 2026-07-19: +20,946 linesWeek of 2026-07-19: -1,899 linesWeek of 2026-07-26: +6,812 linesWeek of 2026-07-26: -1,010 linesMar 29, 2026Jul 26, 2026
+204.5K lines added, -82.8K removed over the last year.

Commits per week

last 52 weeks
530Week of 2025-08-03: 0 commitsWeek of 2025-08-10: 0 commitsWeek of 2025-08-17: 0 commitsWeek of 2025-08-24: 0 commitsWeek of 2025-08-31: 0 commitsWeek of 2025-09-07: 0 commitsWeek of 2025-09-14: 0 commitsWeek of 2025-09-21: 0 commitsWeek of 2025-09-28: 0 commitsWeek of 2025-10-05: 0 commitsWeek of 2025-10-12: 0 commitsWeek of 2025-10-19: 0 commitsWeek of 2025-10-26: 0 commitsWeek of 2025-11-02: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 53 commitsWeek of 2026-04-05: 43 commitsWeek of 2026-04-12: 28 commitsWeek of 2026-04-19: 40 commitsWeek of 2026-04-26: 25 commitsWeek of 2026-05-03: 13 commitsWeek of 2026-05-10: 5 commitsWeek of 2026-05-17: 11 commitsWeek of 2026-05-24: 23 commitsWeek of 2026-05-31: 9 commitsWeek of 2026-06-07: 8 commitsWeek of 2026-06-14: 21 commitsWeek of 2026-06-21: 12 commitsWeek of 2026-06-28: 7 commitsWeek of 2026-07-05: 13 commitsWeek of 2026-07-12: 39 commitsWeek of 2026-07-19: 37 commitsWeek of 2026-07-26: 15 commitsAug 3, 2025Jul 26, 2026
402 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 6 commitsSun 1:00 — 1 commitsSun 2:00 — 3 commitsSun 3:00 — 3 commitsSun 4:00 — 0 commitsSun 5:00 — 1 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 0 commitsSun 9:00 — 0 commitsSun 10:00 — 5 commitsSun 11:00 — 2 commitsSun 12:00 — 11 commitsSun 13:00 — 10 commitsSun 14:00 — 5 commitsSun 15:00 — 1 commitsSun 16:00 — 2 commitsSun 17:00 — 4 commitsSun 18:00 — 5 commitsSun 19:00 — 2 commitsSun 20:00 — 5 commitsSun 21:00 — 1 commitsSun 22:00 — 2 commitsSun 23:00 — 2 commitsMon 0:00 — 4 commitsMon 1:00 — 4 commitsMon 2:00 — 3 commitsMon 3:00 — 2 commitsMon 4:00 — 1 commitsMon 5:00 — 0 commitsMon 6:00 — 1 commitsMon 7:00 — 0 commitsMon 8:00 — 1 commitsMon 9:00 — 0 commitsMon 10:00 — 2 commitsMon 11:00 — 4 commitsMon 12:00 — 2 commitsMon 13:00 — 0 commitsMon 14:00 — 1 commitsMon 15:00 — 2 commitsMon 16:00 — 2 commitsMon 17:00 — 2 commitsMon 18:00 — 2 commitsMon 19:00 — 1 commitsMon 20:00 — 2 commitsMon 21:00 — 1 commitsMon 22:00 — 0 commitsMon 23:00 — 3 commitsTue 0:00 — 2 commitsTue 1:00 — 1 commitsTue 2:00 — 3 commitsTue 3:00 — 2 commitsTue 4:00 — 1 commitsTue 5:00 — 0 commitsTue 6:00 — 0 commitsTue 7:00 — 0 commitsTue 8:00 — 0 commitsTue 9:00 — 0 commitsTue 10:00 — 2 commitsTue 11:00 — 3 commitsTue 12:00 — 1 commitsTue 13:00 — 0 commitsTue 14:00 — 1 commitsTue 15:00 — 2 commitsTue 16:00 — 2 commitsTue 17:00 — 2 commitsTue 18:00 — 1 commitsTue 19:00 — 1 commitsTue 20:00 — 1 commitsTue 21:00 — 3 commitsTue 22:00 — 3 commitsTue 23:00 — 2 commitsWed 0:00 — 1 commitsWed 1:00 — 1 commitsWed 2:00 — 2 commitsWed 3:00 — 0 commitsWed 4:00 — 1 commitsWed 5:00 — 0 commitsWed 6:00 — 0 commitsWed 7:00 — 0 commitsWed 8:00 — 0 commitsWed 9:00 — 0 commitsWed 10:00 — 0 commitsWed 11:00 — 2 commitsWed 12:00 — 6 commitsWed 13:00 — 3 commitsWed 14:00 — 2 commitsWed 15:00 — 3 commitsWed 16:00 — 1 commitsWed 17:00 — 2 commitsWed 18:00 — 5 commitsWed 19:00 — 5 commitsWed 20:00 — 2 commitsWed 21:00 — 2 commitsWed 22:00 — 3 commitsWed 23:00 — 4 commitsThu 0:00 — 7 commitsThu 1:00 — 3 commitsThu 2:00 — 3 commitsThu 3:00 — 2 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 0 commitsThu 7:00 — 0 commitsThu 8:00 — 0 commitsThu 9:00 — 0 commitsThu 10:00 — 6 commitsThu 11:00 — 4 commitsThu 12:00 — 9 commitsThu 13:00 — 5 commitsThu 14:00 — 6 commitsThu 15:00 — 6 commitsThu 16:00 — 6 commitsThu 17:00 — 6 commitsThu 18:00 — 5 commitsThu 19:00 — 7 commitsThu 20:00 — 1 commitsThu 21:00 — 3 commitsThu 22:00 — 9 commitsThu 23:00 — 9 commitsFri 0:00 — 6 commitsFri 1:00 — 2 commitsFri 2:00 — 8 commitsFri 3:00 — 5 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 0 commitsFri 7:00 — 0 commitsFri 8:00 — 1 commitsFri 9:00 — 7 commitsFri 10:00 — 1 commitsFri 11:00 — 0 commitsFri 12:00 — 5 commitsFri 13:00 — 5 commitsFri 14:00 — 9 commitsFri 15:00 — 4 commitsFri 16:00 — 3 commitsFri 17:00 — 5 commitsFri 18:00 — 4 commitsFri 19:00 — 4 commitsFri 20:00 — 2 commitsFri 21:00 — 2 commitsFri 22:00 — 3 commitsFri 23:00 — 2 commitsSat 0:00 — 0 commitsSat 1:00 — 1 commitsSat 2:00 — 2 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 1 commitsSat 8:00 — 0 commitsSat 9:00 — 0 commitsSat 10:00 — 1 commitsSat 11:00 — 3 commitsSat 12:00 — 2 commitsSat 13:00 — 0 commitsSat 14:00 — 7 commitsSat 15:00 — 9 commitsSat 16:00 — 1 commitsSat 17:00 — 0 commitsSat 18:00 — 5 commitsSat 19:00 — 2 commitsSat 20:00 — 1 commitsSat 21:00 — 0 commitsSat 22:00 — 3 commitsSat 23:00 — 1 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
  • freeCodeCamp/freeCodeCamp

    freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.

    453.6K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    385.5K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    238.5K stars · JavaScript