docs: reposition README around own, approve, and audit (#604)

Lead both root READMEs with the self-hosted runtime, durable approvals,
and verifiable run records instead of the coordinator. Keep the H1 and
logo block, replace only the tagline block, and add the no-telemetry,
no-hosted-control-plane paragraph after the badges.

Give durable approvals, the verifiable journal, and the governance floor
one section each with source, test files, and current case counts.
Demote multi-agent coordination to an "Optional coordinator" section,
keep "Built with OMA" with the three most visible entries and a
collapsed long tail, and drop the intro paragraph, the framework
comparison pointer, the listing call to action, and the separate
commercial support section. The Chinese README states the contact
details in text instead of a WeChat QR image, which is removed.

Sync the tagline block in the core package READMEs, set the same
description on the root and core package.json, and remove the "killer
feature" wording from the orchestrator header comments.
This commit is contained in:
Jack Chen authored and GitHub committed 2026-09-13 02:39:45 +08:00
1 parent d52380a0a7
commit eaeb420c43
8 files changed
+192 -234

No files matched your search

Binary file not shown.

Before

Width:  |  Height:  |  Size: 158 KiB

+91 -110
View File
@@ -8,8 +8,8 @@
</h1>
<p align="center">
<strong>Describe the goal, not the graph.</strong><br/>
A self-organizing team of agents that runs in your environment, pauses for approval on consequential actions, and leaves a verifiable record of every run.
<strong>Agents your organization can own, approve, and audit.</strong><br/>
A self-hosted TypeScript agent runtime: consequential actions wait for durable, tamper-evident approvals, and every run leaves a record you can verify offline, byte for byte.
</p>
<p align="center">
@@ -34,7 +34,7 @@
<br />
`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 Run Viewer further down replays a real run from the trace store.
No telemetry. No hosted control plane. Your keys, your models — cloud, local (Ollama, vLLM, llama-server), or Chinese providers — your environment. Nothing stops working when the people who built it leave.
## Get started
@@ -58,33 +58,101 @@ npm install @open-multi-agent/core
```
```typescript
import { OpenMultiAgent } from '@open-multi-agent/core'
import { FileStore, 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,
// Your keys and your endpoint: a hosted provider, or a local server through baseURL.
const oma = new OpenMultiAgent({
defaultProvider: 'openai',
defaultModel: 'gpt-5.4',
// Consequential tool calls (file writes, shell) pause for a human decision.
onToolCall: ({ consequential }) => (consequential ? { action: 'suspend' } : { action: 'allow' }),
})
const result = await oma.runTeam(team, 'Compare three approaches and recommend one.')
const team = oma.createTeam('ops', {
name: 'ops',
agents: [{ name: 'operator', systemPrompt: 'Reconcile overdue invoices.', toolPreset: 'readwrite' }],
})
console.log(result.agentResults.get('coordinator')?.output)
// The checkpoint store keeps the run and its pending approvals durable.
const result = await oma.runTeam(team, 'Find overdue invoices and draft the reminders.', {
checkpoint: { store: new FileStore('./.oma/run.json') },
})
// result.status?.code === 'suspended' until a reviewer decides result.pendingApprovals,
// each bound to a hash of exactly what the reviewer was shown.
```
Set `OPENAI_API_KEY` to run this example. [Providers](docs/providers.md) covers other hosted models, local servers, OpenAI-compatible endpoints, and AI SDK providers.
`runAgent()` runs a single agent, `runTasks()` executes an explicit pipeline, and `runTeam()` plans from a goal. The [Core package guide](packages/core/README.md) walks through all three modes, provider and credential setup, and the production checklist. The [example index](packages/core/examples/README.md) lists every runnable example across basics, cookbook workflows, patterns, providers, and integrations.
## Durable approvals
A plan, task dispatch, or tool-call gate can return `suspend`. The request is stored beside the checkpoint, bound to a SHA-256 hash of exactly what the reviewer saw, and the run resumes from that content after a restart. A decision is atomic and first-wins; a tampered request or a store without compare-and-set fails closed.
[`approval/durable.ts`](packages/core/src/approval/durable.ts) · [`durable-approval.test.ts`](packages/core/tests/durable-approval.test.ts) (16 cases) · [`durable-approval-validation.test.ts`](packages/core/tests/durable-approval-validation.test.ts) (7 cases) · [Guide](docs/durable-approvals.md)
## Verifiable journal
Attach a journal backend and the run records every block the model saw, every tool call and result, and every context rewrite. `verifyRun()` reads it back cold, offline, and checks that each block's named source event still reproduces it byte for byte; an evicted window is reported as inconclusive, not as a failure. It proves lineage and content, not that the file was never edited.
[`journal/verify.ts`](packages/core/src/journal/verify.ts) · [`journal/hash.ts`](packages/core/src/journal/hash.ts) · [`verify-run.test.ts`](packages/core/tests/verify-run.test.ts) (11 cases) · [Guide](docs/run-journal.md)
## Governance floor
Declare `governanceIntent: 'required'` with `requiredRoles`, and the run is judged on an execution receipt: which roles ran, in what order, with which dependency edges, and whether an independent review happened. The evaluator never sees agent output text, and a run can succeed and still report `unsatisfied`.
[`orchestrator/governance.ts`](packages/core/src/orchestrator/governance.ts) · [`observability/execution-receipt.ts`](packages/core/src/observability/execution-receipt.ts) · [`governance-floor.test.ts`](packages/core/tests/governance-floor.test.ts) (16 cases) · [Guide](docs/tool-configuration.md#declared-governance-roles-in-runteam) · [Receipts](docs/observability.md#execution-receipts)
## Runs where you run
- **No telemetry, no hosted control plane.** A library with no OMA backend or account, and none planned. It makes no analytics, license, update, or phone-home request. [Self-hosting](docs/self-hosting.md)
- **Your keys, your models.** Built-in adapters for Anthropic, OpenAI, Azure OpenAI, Bedrock, Gemini, Grok, and Copilot, and for DeepSeek, Doubao, Hunyuan, MiniMax, MiMo, and Qiniu; Ollama, vLLM, and llama-server through `baseURL`; any OpenAI-compatible endpoint and Vercel AI SDK providers. [Providers](docs/providers.md)
- **Egress policy.** `offline` or `allowlist`, checked before a built-in adapter connects. A child policy can only tighten its parent, an unenforceable transport fails closed, and process and ACP backends sit outside it. [LLM egress policy](docs/egress-policy.md)
## Built with OMA
`open-multi-agent` launched 2026-04-01 under MIT. Known users and integrations to date:
- **[temodar-agent](https://github.com/xeloxa/temodar-agent)** by [Ali Sünbül](https://github.com/xeloxa). WordPress security analysis platform running OMA's built-in tools (`bash`, `file_*`, `grep`) inside a Docker runtime. Confirmed production use. (~60 stars)
- **[Mark Galyan](https://github.com/apollo-mg)** 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.
- **[Engram](https://www.engram-memory.com)**: "Git for AI memory." Syncs knowledge across agents instantly and flags conflicts. ([repo](https://github.com/Agentscreator/engram-memory), ~80 stars)
<details>
<summary>Full example: DAG readback, token usage, and model overrides</summary>
<summary>More users and integrations</summary>
**Users**
- **[PR-Copilot](https://github.com/kidoom/PR-Copilot)** by [kidoom](https://github.com/kidoom). AI pull-request review assistant running an OMA review team, with `defineTool` repo-context tools and a custom `ContextStrategy` for token-aware diff compression.
- **[StuFlow](https://github.com/znc15/StuFlow)** by [znc15](https://github.com/znc15). Terminal AI coding assistant on OMA's orchestration core, driving `runAgent` / `runTasks` / `runTeam` with a custom coordinator, paired with DeepSeek.
- **[Reports to Charts Studio](https://github.com/NARNIX0/Evident-Project)**. Turns documents and research tables into slide-ready charts, using a five-role extraction council with structured outputs and deterministic validation.
**Integrations**
- **[@agentsonar/oma](https://github.com/agentsonar/agentsonar-oma)**: Sidecar detecting cross-run delegation cycles, repetition, and rate bursts.
- **[CodingScaffold](https://github.com/JRS1986/CodingScaffold)**: Agentic-coding scaffold that lists OMA as an optional orchestration backend, with a `runTeam` workflow template.
- **[baize-oma](https://github.com/timywel/baize-oma)**: HTTP adapter exposing OMA `runAgent()` and `runTeam()` as Baize slot capabilities.
</details>
We build customer-owned systems on OMA for organizations that need one. Email [jack@yuanasi.com](mailto:jack@yuanasi.com).
## Sponsors
Paid sponsors supporting `open-multi-agent`. Sponsorship does not affect technical decisions or model recommendations.
**Providers**
- **[Atlas Cloud](https://www.atlascloud.ai/console/coding-plan)**: Full-modal AI inference platform giving one API for video, image, and LLM across 300+ curated models. $5 credit vouchers for OMA users, first come first served. See the [Atlas Cloud setup guide](docs/providers-atlascloud.md).
## Optional coordinator
`runTeam()` decomposes a goal into a task graph across agents. One model call turns the goal into task specs with assignees and dependencies, a deterministic scheduler executes them, and a second call writes the final answer from the completed task outputs. The coordinator is never consulted mid-run, and the finished run is data you can read back. Use `runAgent()` or `runTasks()` when you already know the work.
```typescript
import { OpenMultiAgent } from '@open-multi-agent/core'
const model = process.env.OMA_MODEL ?? 'gpt-5.4'
const oma = new OpenMultiAgent({ defaultProvider: 'openai', defaultModel: model })
const oma = new OpenMultiAgent({ defaultProvider: 'openai', defaultModel: 'gpt-5.4' })
const team = oma.createTeam('research-team', {
name: 'research-team',
@@ -107,108 +175,21 @@ console.log(result.agentResults.get('coordinator')?.output)
console.log(result.totalTokenUsage)
```
</details>
<details>
<summary>Pause consequential tool calls for approval</summary>
```typescript
import { FileStore, OpenMultiAgent } from '@open-multi-agent/core'
// Your keys and your endpoint: a hosted provider, or a local server through baseURL.
const oma = new OpenMultiAgent({
defaultProvider: 'openai',
defaultModel: 'gpt-5.4',
// Consequential tool calls (file writes, shell) pause for a human decision.
onToolCall: ({ consequential }) => (consequential ? { action: 'suspend' } : { action: 'allow' }),
})
const team = oma.createTeam('ops', {
name: 'ops',
agents: [{ name: 'operator', systemPrompt: 'Reconcile overdue invoices.', toolPreset: 'readwrite' }],
})
// The coordinator plans the task DAG from the goal; the checkpoint store keeps the run durable.
const result = await oma.runTeam(team, 'Find overdue invoices and draft the reminders.', {
checkpoint: { store: new FileStore('./.oma/run.json') },
})
// result.status?.code === 'suspended' until a reviewer decides result.pendingApprovals,
// each bound to a hash of exactly what the reviewer was shown.
```
</details>
Set `OPENAI_API_KEY` to run this example. [Providers](docs/providers.md) covers other hosted models, local servers, OpenAI-compatible endpoints, and AI SDK providers.
`runTeam()` plans from a goal, `runAgent()` runs a single agent, and `runTasks()` executes an explicit pipeline. The [Core package guide](packages/core/README.md) walks through all three modes, provider and credential setup, and the production checklist. The [example index](packages/core/examples/README.md) lists every runnable example across basics, cookbook workflows, patterns, providers, and integrations.
## Why OMA
**Every seam, an interface. Every run, a record.**
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.** Preview, approve, or durably suspend plans, task dispatches, and tool calls; the framework ships the approval API and durable records, and the review surface and transport are yours to build. Freeze approved plans for replay. Declare required roles and order when topology cannot drift, and verify outputs with multi-agent consensus.
- **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 and evaluation.** Follow each run through stable identity, execution receipts, and traces; the record is verifiable for order and lineage, not tamper-evident. Replay the task DAG and span waterfall in the offline Run Viewer, or export through the optional OpenTelemetry adapter. The same records feed versioned EvalSets, offline reports, CI gates, and production sampling.
- **Safety and privacy.** Tools are default-deny, individual calls are gated, and explicit privacy controls apply to telemetry and persisted state.
- **Open runtime.** Process and ACP backends put Claude Code, Gemini CLI, and Codex on the same task DAG, shared memory, and budgets as LLM agents, though those backends run outside the per-call tool gate, filesystem sandbox, and LLM egress policy. Mix cloud and local models, natively integrated Chinese providers, OpenAI-compatible endpoints, and AI SDK providers, with a fallback parser for local models that emit tool calls as text. Run on your own infrastructure and credentials, locally, offline, or air-gapped; see [Self-hosting and data residency](docs/self-hosting.md).
<p align="center">
<img src="https://raw.githubusercontent.com/open-multi-agent/open-multi-agent/main/.github/brand/demo-dashboard-hero.gif" alt="OMA Run Viewer replaying a real multi-agent run: task DAG and span waterfall views with per-task status, assignee, tokens, and tool calls" width="960" height="540" loading="lazy">
<img src="https://raw.githubusercontent.com/open-multi-agent/open-multi-agent/main/.github/brand/demo-dashboard-hero.gif" alt="OMA Run Viewer replaying a real run: task DAG and span waterfall views with per-task status, assignee, tokens, and tool calls" width="960" height="540" loading="lazy">
</p>
<p align="center"><em>The offline Run Viewer replaying a real run from the trace store: task DAG, span waterfall, and per-task evidence, with no hosted service involved.</em></p>
## Built with OMA
`open-multi-agent` launched 2026-04-01 under MIT. Known users and integrations to date:
- **[temodar-agent](https://github.com/xeloxa/temodar-agent)** by [Ali Sünbül](https://github.com/xeloxa). WordPress security analysis platform running OMA's built-in tools (`bash`, `file_*`, `grep`) inside a Docker runtime. Confirmed production use.
- **[Mark Galyan](https://github.com/apollo-mg)** 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.
- **[PR-Copilot](https://github.com/kidoom/PR-Copilot)** by [kidoom](https://github.com/kidoom). AI pull-request review assistant running an OMA review team, with `defineTool` repo-context tools and a custom `ContextStrategy` for token-aware diff compression.
- **[StuFlow](https://github.com/znc15/StuFlow)** by [znc15](https://github.com/znc15). Terminal AI coding assistant on OMA's orchestration core, driving `runAgent` / `runTasks` / `runTeam` with a custom coordinator, paired with DeepSeek.
- **[Reports to Charts Studio](https://github.com/NARNIX0/Evident-Project)**. Turns documents and research tables into slide-ready charts, using a five-role extraction council with structured outputs and deterministic validation.
**Integrations**
- **[Engram](https://www.engram-memory.com)**: "Git for AI memory." Syncs knowledge across agents instantly and flags conflicts. ([repo](https://github.com/Agentscreator/engram-memory), ~80 stars)
- **[@agentsonar/oma](https://github.com/agentsonar/agentsonar-oma)**: Sidecar detecting cross-run delegation cycles, repetition, and rate bursts.
- **[CodingScaffold](https://github.com/JRS1986/CodingScaffold)**: Agentic-coding scaffold that lists OMA as an optional orchestration backend, with a `runTeam` workflow template.
- **[Bilig WorkPaper](https://github.com/proompteng/bilig)**: Formula-workbook MCP server with a reciprocal OMA integration for editing inputs, recalculating formulas, verifying readback, and persisting WorkPaper JSON.
- **[baize-oma](https://github.com/timywel/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](https://github.com/open-multi-agent/open-multi-agent/discussions) and we will list it here. Built an integration? The [integration guide](packages/core/examples/integrations/README.md) covers how to get listed. For a deep integration, see the [Featured partner program](docs/featured-partner.md).
## Sponsors
Paid sponsors supporting `open-multi-agent`. Sponsorship does not affect technical decisions or model recommendations.
**Providers**
- **[Atlas Cloud](https://www.atlascloud.ai/console/coding-plan)**: Full-modal AI inference platform giving one API for video, image, and LLM across 300+ curated models. $5 credit vouchers for OMA users, first come first served. See the [Atlas Cloud setup guide](docs/providers-atlascloud.md).
## 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](https://open-multi-agent.com/compare/?utm_source=github&utm_medium=readme).
[Coordinator](docs/coordinator.md) covers what it decides and what it is allowed to see. [Plan replay](docs/plan-replay.md) freezes an approved plan, [Consensus](docs/consensus.md) verifies outputs with independent judges, and [External agents](docs/external-agents.md) puts Claude Code, Gemini CLI, and Codex on the same task graph through process and ACP backends.
## Packages
- **[`@open-multi-agent/core`](packages/core/README.md)**: Orchestration runtime, tools, memory, checkpoints, traces, CLI, and offline Run Viewer.
- **[`@open-multi-agent/otel`](packages/otel/README.md)**: Optional enterprise integration for production teams with a centralized OpenTelemetry stack.
- **[`@open-multi-agent/core`](packages/core/README.md)**: Runtime, tools, memory, checkpoints, approvals, journal, traces, CLI, and offline Run Viewer.
- **[`@open-multi-agent/otel`](packages/otel/README.md)**: Optional OpenTelemetry adapter for teams with a centralized OpenTelemetry stack.
- **[`create-oma-app`](packages/create-oma-app/README.md)**: 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? We help teams scope AI use cases, embed agent capabilities, and support delivery. Email [jack@yuanasi.com](mailto:jack@yuanasi.com).
## Documentation
| Goal | Start here |
+91 -114
View File
@@ -8,8 +8,8 @@
</h1>
<p align="center">
<strong>只描述目标,不画任务图。</strong><br/>
多智能体自主分工协作,在自有环境中运行:关键操作经审批放行,每次运行留有可核验记录。
<strong>Agent 的所有权、审批权与审计权,归于使用它的组织。</strong><br/>
自托管的 TypeScript Agent 运行时:关键操作要等一条持久化、防篡改的审批,每次运行留下一份可离线逐字节核验的记录。
</p>
<p align="center">
@@ -34,7 +34,7 @@
<br />
`open-multi-agent` 是面向 TypeScript 后端的多智能体编排框架,可直接嵌入任意 Node.js 应用。它运行的是**动态工作流(dynamic workflows)**:Coordinator 在运行时将一个目标分解为任务 DAG,由确定性调度器分派给团队执行,整个运行过程始终是可审查、可审批、可回放的数据。下文的动图是内置离线 Run Viewer 对一次真实运行的回放。
不上报遥测,没有托管控制面。你的密钥、你的模型(云端、本地 Ollama / vLLM / llama-server、国产模型)、你的环境。建它的人走了,系统照常跑。
## 快速开始
@@ -55,33 +55,101 @@ npm install @open-multi-agent/core
```
```typescript
import { OpenMultiAgent } from '@open-multi-agent/core'
import { FileStore, 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,
// 密钥与端点都是你自己的:托管模型,或通过 baseURL 接本地服务。
const oma = new OpenMultiAgent({
defaultProvider: 'openai',
defaultModel: 'gpt-5.4',
// 有实际副作用的工具调用(写文件、执行 shell)挂起,等待人工决定。
onToolCall: ({ consequential }) => (consequential ? { action: 'suspend' } : { action: 'allow' }),
})
const result = await oma.runTeam(team, 'Compare three approaches and recommend one.')
const team = oma.createTeam('ops', {
name: 'ops',
agents: [{ name: 'operator', systemPrompt: '核对逾期发票。', toolPreset: 'readwrite' }],
})
console.log(result.agentResults.get('coordinator')?.output)
// checkpoint store 让整次运行和待审批请求一起持久化。
const result = await oma.runTeam(team, '找出逾期发票并起草催款提醒。', {
checkpoint: { store: new FileStore('./.oma/run.json') },
})
// 在审批人处理 result.pendingApprovals 之前,result.status?.code 保持为 'suspended';
// 每条待审批请求都绑定审批人实际看到内容的哈希。
```
运行这段示例需要设置 `OPENAI_API_KEY`。其他云端模型、本地服务、OpenAI 兼容端点与 AI SDK provider 的配置见 [Provider 文档](docs/providers.md)。
`runAgent()` 运行单个 Agent,`runTasks()` 执行显式流水线,`runTeam()` 从目标自动规划。三种模式、Provider 与凭证配置、生产检查清单见[核心包使用指南](packages/core/README_zh.md)。[示例索引](packages/core/examples/README.md)收录全部可运行示例,覆盖基础、cookbook 流程、模式、Provider 与集成。
## 持久化审批
计划、任务派发和工具调用 gate 都可以返回 `suspend`。审批请求写在 checkpoint 旁边,绑定审批人实际看到内容的 SHA-256 哈希,进程重启后从这份内容继续。决定原子、先到先得;内容被篡改,或存储不支持 compare-and-set,直接失败关闭。
[`approval/durable.ts`](packages/core/src/approval/durable.ts) · [`durable-approval.test.ts`](packages/core/tests/durable-approval.test.ts)(16 条)· [`durable-approval-validation.test.ts`](packages/core/tests/durable-approval-validation.test.ts)(7 条)· [文档](docs/durable-approvals.md)
## 可核验日志
接上 journal 后端,运行会记下模型看到的每个 block、每次工具调用及结果、每次上下文改写。`verifyRun()` 离线冷读整份日志,检查每个 block 引用的来源事件是否仍能逐字节复现它;日志窗口被淘汰只报"无法判定",不算失败。它证明的是血缘与内容,不是文件从未被改过。
[`journal/verify.ts`](packages/core/src/journal/verify.ts) · [`journal/hash.ts`](packages/core/src/journal/hash.ts) · [`verify-run.test.ts`](packages/core/tests/verify-run.test.ts)(11 条)· [文档](docs/run-journal.md)
## 治理底线
声明 `governanceIntent: 'required'` 与 `requiredRoles`,运行就按执行回执判定:哪些角色真正执行、先后顺序、依赖边、是否发生独立审查。评估器拿不到 Agent 输出文本;运行可以成功结束,同时报 `unsatisfied`。
[`orchestrator/governance.ts`](packages/core/src/orchestrator/governance.ts) · [`observability/execution-receipt.ts`](packages/core/src/observability/execution-receipt.ts) · [`governance-floor.test.ts`](packages/core/tests/governance-floor.test.ts)(16 条)· [文档](docs/tool-configuration.md#declared-governance-roles-in-runteam) · [执行回执](docs/observability.md#execution-receipts)
## 在你自己的环境里跑
- **不上报遥测,没有托管控制面。** 它是一个库,没有 OMA 后端和账号,也没有这样的计划;不发统计、许可证、更新或任何回连请求。[自托管与数据驻留](docs/self-hosting.md)
- **你的密钥、你的模型。** 内置 Anthropic、OpenAI、Azure OpenAI、Bedrock、Gemini、Grok、Copilot 适配器,以及 DeepSeek、豆包、混元、MiniMax、MiMo、七牛;Ollama、vLLM、llama-server 通过 `baseURL` 接入;另支持任意 OpenAI 兼容端点与 Vercel AI SDK provider。[Provider 文档](docs/providers.md)
- **出网策略。** `offline` 或 `allowlist`,在内置适配器建立连接前生效;下级策略只能收紧上级,无法完整约束的传输层直接失败关闭,process 与 ACP backend 不在覆盖范围内。[LLM 出网策略](docs/egress-policy.md)
## 基于 OMA 构建
`open-multi-agent` 2026-04-01 发布,MIT 协议。当前公开在用与集成的项目:
- **[temodar-agent](https://github.com/xeloxa/temodar-agent)**,作者 [Ali Sünbül](https://github.com/xeloxa)。WordPress 安全分析平台,在 Docker runtime 里直接使用 OMA 内置工具(`bash`、`file_*`、`grep`)。已确认生产环境使用。(约 60 stars)
- **[Mark Galyan](https://github.com/apollo-mg)** 在本地量化模型上完全离线运行 OMA,借助 Coordinator 与上下文压缩,在显存受限的条件下维持自治 Agent 循环持续运行。自框架发布首月起持续贡献。
- **[Engram](https://www.engram-memory.com)**:"AI 记忆的 Git"。在 agent 之间即时同步知识并标记冲突。([repo](https://github.com/Agentscreator/engram-memory),约 80 stars)
<details>
<summary>完整示例:DAG 回读、token 统计与环境变量覆盖</summary>
<summary>更多用户与集成</summary>
**用户**
- **[PR-Copilot](https://github.com/kidoom/PR-Copilot)**,作者 [kidoom](https://github.com/kidoom)。AI pull request 审查助手,运行 OMA 审查 team,用 `defineTool` 定义仓库上下文工具,并加入自定义 `ContextStrategy` 做 token-aware 的 diff 压缩。
- **[StuFlow](https://github.com/znc15/StuFlow)**,作者 [znc15](https://github.com/znc15)。终端 AI 编码助手,以 OMA 为编排内核,通过 `runAgent` / `runTasks` / `runTeam` 驱动自定义 coordinator,搭配 DeepSeek。
- **[Reports to Charts Studio](https://github.com/NARNIX0/Evident-Project)**。把文档和研究表格转换成可直接用于幻灯片的图表,使用由五个角色组成的数据提取评审组,结合结构化输出与确定性校验。
**集成**
- **[@agentsonar/oma](https://github.com/agentsonar/agentsonar-oma)**:Sidecar,检测跨运行的委派环、重复和速率突增。
- **[CodingScaffold](https://github.com/JRS1986/CodingScaffold)**:agentic-coding 脚手架,把 OMA 列为可选编排后端,附带 `runTeam` 工作流模板。
- **[baize-oma](https://github.com/timywel/baize-oma)**:HTTP 适配层,把 OMA 的 `runAgent()` 和 `runTeam()` 暴露为 Baize slot 能力。
</details>
我们为需要的组织在 OMA 上构建由客户自己拥有的 AI 系统。邮件 [jack@yuanasi.com](mailto:jack@yuanasi.com),或微信 13760249135。
## 赞助商
支持 `open-multi-agent` 的付费赞助商。赞助不影响技术决策与模型推荐。
**Provider**
- **[Atlas Cloud](https://www.atlascloud.ai/console/coding-plan)**:全模态 AI 推理平台,单一 API 打通视频、图像与 LLM,覆盖 300+ 精选模型。$5 credit 兑换码面向 OMA 用户开放,先到先得。见 [Atlas Cloud 接入指南](docs/providers-atlascloud_zh.md)。
## 可选的 Coordinator
`runTeam()` 把一个目标分解为跨 Agent 的任务图。一次模型调用把目标转成带负责人和依赖关系的任务规格,确定性调度器负责执行,第二次调用基于已完成任务的输出写出最终答案。Coordinator 在运行中途不会再被咨询,运行结束后整个过程都是可以读回的数据。已经知道要做什么时,用 `runAgent()` 或 `runTasks()`。
```typescript
import { OpenMultiAgent } from '@open-multi-agent/core'
const model = process.env.OMA_MODEL ?? 'gpt-5.4'
const oma = new OpenMultiAgent({ defaultProvider: 'openai', defaultModel: model })
const oma = new OpenMultiAgent({ defaultProvider: 'openai', defaultModel: 'gpt-5.4' })
const team = oma.createTeam('research-team', {
name: 'research-team',
@@ -104,112 +172,21 @@ console.log(result.agentResults.get('coordinator')?.output)
console.log(result.totalTokenUsage)
```
</details>
<details>
<summary>让有副作用的工具调用挂起等待审批</summary>
```typescript
import { FileStore, OpenMultiAgent } from '@open-multi-agent/core'
// 密钥与端点都是你自己的:托管模型,或通过 baseURL 接本地服务。
const oma = new OpenMultiAgent({
defaultProvider: 'openai',
defaultModel: 'gpt-5.4',
// 有实际副作用的工具调用(写文件、执行 shell)挂起,等待人工决定。
onToolCall: ({ consequential }) => (consequential ? { action: 'suspend' } : { action: 'allow' }),
})
const team = oma.createTeam('ops', {
name: 'ops',
agents: [{ name: 'operator', systemPrompt: '核对逾期发票。', toolPreset: 'readwrite' }],
})
// Coordinator 从目标规划任务 DAG;checkpoint store 让整次运行可持久化。
const result = await oma.runTeam(team, '找出逾期发票并起草催款提醒。', {
checkpoint: { store: new FileStore('./.oma/run.json') },
})
// 在审批人处理 result.pendingApprovals 之前,result.status?.code 保持为 'suspended';
// 每条待审批请求都绑定审批人实际看到内容的哈希。
```
</details>
运行这段示例需要设置 `OPENAI_API_KEY`。其他云端模型、本地服务、OpenAI 兼容端点与 AI SDK provider 的配置见 [Provider 文档](docs/providers.md)。
`runTeam()` 从目标自动规划,`runAgent()` 运行单个 Agent,`runTasks()` 执行显式流水线。三种模式、Provider 与凭证配置、生产检查清单见[核心包使用指南](packages/core/README_zh.md)。[示例索引](packages/core/examples/README.md)收录全部可运行示例,覆盖基础、cookbook 流程、模式、Provider 与集成。
## 为什么选择 OMA
**万物皆接口,每次运行皆可回溯。**
OMA 将动态编排与生产所需的控制、证据和恢复能力结合起来,帮助多智能体系统从原型走向生产环境。
- **动态编排。** 只需描述目标,Coordinator 就会在运行时生成任务 DAG、分配工作并合成结果,无需手工维护工作流图。
- **受控执行。** 可预览、审批或持久化挂起计划、任务派发与工具调用,并固化已审批计划以供重放;框架提供审批 API 与持久化审批记录,审批界面与传递通道由接入方自行实现。当拓扑不容漂移时可声明必需的角色与执行顺序,并通过多 Agent 共识验证结果。
- **可靠性。** 通过 Checkpoint 从断点恢复中断的运行,或选择在任务结果屏障处启用仅追加式计划修复;重试、超时、循环检测与 token、成本双预算让执行始终有明确边界。
- **可观测与评测。** 通过稳定的运行标识、执行回执与 Trace 跟踪每次运行,在离线 Run Viewer 中回放任务 DAG 与 span 瀑布,或通过可选的 OpenTelemetry 适配器导出;同一套运行记录可直接支撑版本化 EvalSet、离线报告、CI gate 与线上采样。这套记录可核验执行顺序与血缘,但不提供防篡改保证。
- **安全与隐私。** 内置工具默认拒绝,支持逐次调用 gate,并对遥测与持久化状态应用显式的隐私控制。
- **开放运行时。** Process 与 ACP backend 让 Claude Code、Gemini CLI、Codex 和 LLM Agent 同处一个任务 DAG,并共享记忆与预算,但这类外部 backend 不在逐次工具 gate、文件沙箱与 LLM 出网策略的覆盖范围内;可混用云端模型、本地开源模型、原生接入的国产模型、OpenAI 兼容端点与 AI SDK provider,并通过容错解析支持以文本形式返回工具调用的本地模型;支持使用自有基础设施与凭证,本地、离线或气隙部署,详见[自托管与数据驻留](docs/self-hosting.md)。
<p align="center">
<img src="https://raw.githubusercontent.com/open-multi-agent/open-multi-agent/main/.github/brand/demo-dashboard-hero.gif" alt="OMA Run Viewer 回放真实多智能体运行:任务 DAG 与 span 瀑布双视图,展示每个任务的状态、负责人、token 与工具调用" width="960" height="540" loading="lazy">
<img src="https://raw.githubusercontent.com/open-multi-agent/open-multi-agent/main/.github/brand/demo-dashboard-hero.gif" alt="OMA Run Viewer 回放真实运行:任务 DAG 与 span 瀑布双视图,展示每个任务的状态、负责人、token 与工具调用" width="960" height="540" loading="lazy">
</p>
<p align="center"><em>内置离线 Run Viewer 基于 trace store 回放一次真实运行:任务 DAG、span 瀑布与逐任务证据,不依赖任何托管服务。</em></p>
## 基于 OMA 构建
`open-multi-agent` 2026-04-01 发布,MIT 协议。当前公开在用与集成的项目:
- **[temodar-agent](https://github.com/xeloxa/temodar-agent)**,作者 [Ali Sünbül](https://github.com/xeloxa)。WordPress 安全分析平台,在 Docker runtime 里直接使用 OMA 内置工具(`bash`、`file_*`、`grep`)。已确认生产环境使用。
- **[Mark Galyan](https://github.com/apollo-mg)** 在本地量化模型上完全离线运行 OMA,借助 Coordinator 与上下文压缩,在显存受限的条件下维持自治 Agent 循环持续运行。自框架发布首月起持续贡献。
- **[PR-Copilot](https://github.com/kidoom/PR-Copilot)**,作者 [kidoom](https://github.com/kidoom)。AI pull request 审查助手,运行 OMA 审查 team,用 `defineTool` 定义仓库上下文工具,并加入自定义 `ContextStrategy` 做 token-aware 的 diff 压缩。
- **[StuFlow](https://github.com/znc15/StuFlow)**,作者 [znc15](https://github.com/znc15)。终端 AI 编码助手,以 OMA 为编排内核,通过 `runAgent` / `runTasks` / `runTeam` 驱动自定义 coordinator,搭配 DeepSeek。
- **[Reports to Charts Studio](https://github.com/NARNIX0/Evident-Project)**。把文档和研究表格转换成可直接用于幻灯片的图表,使用由五个角色组成的数据提取评审组,结合结构化输出与确定性校验。
**集成**
- **[Engram](https://www.engram-memory.com)**:"AI 记忆的 Git"。在 agent 之间即时同步知识并标记冲突。([repo](https://github.com/Agentscreator/engram-memory),约 80 stars)
- **[@agentsonar/oma](https://github.com/agentsonar/agentsonar-oma)**:Sidecar,检测跨运行的委派环、重复和速率突增。
- **[CodingScaffold](https://github.com/JRS1986/CodingScaffold)**:agentic-coding 脚手架,把 OMA 列为可选编排后端,附带 `runTeam` 工作流模板。
- **[Bilig WorkPaper](https://github.com/proompteng/bilig)**:公式工作簿 MCP 服务,提供双向收录的 OMA 集成,可编辑输入、重新计算公式、校验回读结果并持久化 WorkPaper JSON。
- **[baize-oma](https://github.com/timywel/baize-oma)**:HTTP 适配层,把 OMA 的 `runAgent()` 和 `runTeam()` 暴露为 Baize slot 能力。
在生产或 side project 中使用了 `open-multi-agent`?[请开个 Discussion](https://github.com/open-multi-agent/open-multi-agent/discussions),我们会将其列在这里。做了集成?收录方式见[集成指南](packages/core/examples/integrations/README.md)。深度集成的产品见 [Featured partner 计划](docs/featured-partner.md)。
## 赞助商
支持 `open-multi-agent` 的付费赞助商。赞助不影响技术决策与模型推荐。
**Provider**
- **[Atlas Cloud](https://www.atlascloud.ai/console/coding-plan)**:全模态 AI 推理平台,单一 API 打通视频、图像与 LLM,覆盖 300+ 精选模型。$5 credit 兑换码面向 OMA 用户开放,先到先得。见 [Atlas Cloud 接入指南](docs/providers-atlascloud_zh.md)。
## OMA 适合什么场景
OMA 面向希望任务图随目标动态生成的 TypeScript 团队。
如果工作流必须逐节点手工设计,图优先框架更合适;如果只需要单个 Agent 调用,一个 LLM 工具库就够了。当多个 Agent、任务依赖、审批或恢复机制需要协同时,OMA 负责这一编排层。
与 LangGraph、Mastra、CrewAI、Vercel AI SDK 等的逐项对比见[对比页](https://open-multi-agent.com/zh/compare/?utm_source=github&utm_medium=readme)。
[Coordinator](docs/coordinator.md) 说明它决定什么、能看到什么。[计划回放](docs/plan-replay.md)固化已审批的计划,[Consensus](docs/consensus.md) 用独立评审 Agent 验证输出,[外部 Agent](docs/external-agents.md) 通过 process 与 ACP backend 把 Claude Code、Gemini CLI、Codex 放到同一张任务图上。
## 包
- **[`@open-multi-agent/core`](packages/core/README_zh.md)**:编排运行时、工具、记忆、checkpoint、trace、CLI 和离线 Run Viewer。
- **[`@open-multi-agent/otel`](packages/otel/README.md)**:面向已建立 OpenTelemetry 统一监控体系的生产团队的可选企业集成。
- **[`@open-multi-agent/core`](packages/core/README_zh.md)**:运行时、工具、记忆、checkpoint、审批、journal、trace、CLI 和离线 Run Viewer。
- **[`@open-multi-agent/otel`](packages/otel/README.md)**:面向已建立 OpenTelemetry 统一监控体系团队的可选 OpenTelemetry 适配器。
- **[`create-oma-app`](packages/create-oma-app/README.md)**:`npm create oma-app` 背后的脚手架;提供自带免 API Key 本地 Demo 的 starter 模板。
Core 用户可以在本地保存 trace,并用离线 Run Viewer 查看。只有当 OMA trace 需要进入应用现有的统一监控平台时,才需要安装 OTel 包。
## 企业服务
面向已有产品或业务系统的团队,提供 AI 场景梳理、Agent 能力嵌入与交付支持。微信扫码联系,或邮件 [jack@yuanasi.com](mailto:jack@yuanasi.com)。
<p align="center">
<img src="https://raw.githubusercontent.com/open-multi-agent/open-multi-agent/main/.github/brand/wechat-qr.jpg" alt="微信扫码添加 JackChen 咨询" width="180">
</p>
## 文档
| 目标 | 从这里开始 |
+1 -1
View File
@@ -2,7 +2,7 @@
"name": "open-multi-agent",
"version": "0.0.0",
"private": true,
"description": "Private workspace root for the open-multi-agent monorepo. The published package is @open-multi-agent/core in packages/core.",
"description": "Self-hosted TypeScript agent runtime with durable approvals and verifiable run records. Own it, approve it, audit it.",
"workspaces": [
"packages/*"
],
+3 -3
View File
@@ -8,8 +8,8 @@
</h1>
<p align="center">
<strong>Describe the goal, not the graph.</strong><br/>
A self-organizing team of agents that runs in your environment, pauses for approval on consequential actions, and leaves a verifiable record of every run.
<strong>Agents your organization can own, approve, and audit.</strong><br/>
A self-hosted TypeScript agent runtime: consequential actions wait for durable, tamper-evident approvals, and every run leaves a record you can verify offline, byte for byte.
</p>
<p align="center">
@@ -283,7 +283,7 @@ persistence boundary.
Core already provides run identity, trace sinks, execution receipts, queryable in-memory/file stores, and an offline Run Viewer. These cover local debugging, audit artifacts, and post-run analysis without OpenTelemetry.
[`@open-multi-agent/otel`](https://github.com/open-multi-agent/open-multi-agent/blob/main/packages/otel/README.md) is an **optional enterprise integration** for teams that already operate a centralized OpenTelemetry stack. It converts OMA traces into standard OTel spans so multi-agent runs can join company-wide monitoring, alerting, and incident workflows. The application owns the provider and its lifecycle; telemetry failures never change the run result.
[`@open-multi-agent/otel`](https://github.com/open-multi-agent/open-multi-agent/blob/main/packages/otel/README.md) is an **optional integration** for teams that already operate a centralized OpenTelemetry stack. It converts OMA traces into standard OTel spans so multi-agent runs can join company-wide monitoring, alerting, and incident workflows. The application owns the provider and its lifecycle; telemetry failures never change the run result.
See the [observability guide](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/observability.md) and the [migration guide](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/observability-migration.md).
+3 -3
View File
@@ -8,8 +8,8 @@
</h1>
<p align="center">
<strong>只描述目标,不画任务图。</strong><br/>
多智能体自主分工协作,在自有环境中运行:关键操作经审批放行,每次运行留有可核验记录。
<strong>Agent 的所有权、审批权与审计权,归于使用它的组织。</strong><br/>
自托管的 TypeScript Agent 运行时:关键操作要等一条持久化、防篡改的审批,每次运行留下一份可离线逐字节核验的记录。
</p>
<p align="center">
@@ -266,7 +266,7 @@ Coordinator -> 任务 DAG -> Scheduler -> AgentPool
Core 已提供运行标识、trace sink、执行回执、可查询的内存/文件存储和离线 Run Viewer,足以完成本地排障、审计留档与运行后分析,无需安装 OpenTelemetry。
[`@open-multi-agent/otel`](https://github.com/open-multi-agent/open-multi-agent/blob/main/packages/otel/README.md) 是面向已有集中式 OpenTelemetry 平台团队的**可选企业集成**。它把 OMA trace 转成标准 OTel span,让多 agent 运行接入企业统一监控、告警和故障处理流程。应用负责 provider 及其生命周期;telemetry 故障不会改变业务运行结果。
[`@open-multi-agent/otel`](https://github.com/open-multi-agent/open-multi-agent/blob/main/packages/otel/README.md) 是面向已有集中式 OpenTelemetry 平台团队的**可选集成**。它把 OMA trace 转成标准 OTel span,让多 agent 运行接入统一监控、告警和故障处理流程。应用负责 provider 及其生命周期;telemetry 故障不会改变业务运行结果。
详见[可观测性指南](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/observability.md)与[迁移指南](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/observability-migration.md)。
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@open-multi-agent/core",
"version": "1.19.0",
"description": "TypeScript multi-agent orchestration that runs in your own environment: one call from goal to result, approval gates on consequential actions, and a verifiable record of every run. Built-in provider adapters plus any OpenAI-compatible endpoint, local models included.",
"description": "Self-hosted TypeScript agent runtime with durable approvals and verifiable run records. Own it, approve it, audit it.",
"files": [
"dist",
"README.md",
@@ -32,7 +32,7 @@
*
* - **Coordinator pattern** — `runTeam()` spins up a temporary "coordinator" agent
* that breaks the high-level goal into tasks, assigns them, and synthesises the
* final answer. This is the framework's killer feature.
* final answer.
* - **Parallel-by-default** — Independent tasks (no shared dependency) run in
* parallel up to `maxConcurrency`.
* - **Graceful failure** — A failed task marks itself `'failed'` and its direct
@@ -1174,7 +1174,7 @@ export class OpenMultiAgent {
}
// -------------------------------------------------------------------------
// Auto-orchestrated team run (KILLER FEATURE)
// Auto-orchestrated team run
// -------------------------------------------------------------------------
/**