Omnara Omnara

一个可自托管的 Claude Managed Agents 和 OpenAI Agents API 替代方案。

License: Apache 2.0 npm: @omnara/sdk Discord

网站·快速开始·文档·API·更新日志·Discord

Omnara 是一个开源托管智能体平台。使用 API 可在任意模型和任意机器上运行 AI 智能体,内置工具、密钥、权限和流式传输。可在 Apache 2.0 下免费自托管,或使用Omnara Cloud。

快速开始

Omnara Cloud

登录app.omnara.com。你的第一个项目自带一个模型提供商(omnara-openrouter)和一个托管沙箱池(default-pool),因此此配置可直接运行。将其保存为agent.yaml:

version: v1
instruction: |
你是一名工程助手。使用你的机器运行命令。
model:
  provider_config: omnara-openrouter
  name: anthropic/claude-fable-5.1
machine_sources:
  - machine_pool_name: default-pool

使用 CLI 启动它(Node.js 22 或更高版本)。如果你尚未登录,第一条命令会打开浏览器让你登录。

npx omnara agents launch --file agent.yaml \
  --name "机器助手" \
  --message "报告这台机器的操作系统和可用磁盘空间。"

在终端中与智能体聊天,使用npx omnara agents chat <agent-id>,或在仪表盘中打开它,查看其工具调用并回复。

使用 TypeScript SDK 从代码中启动它

在仪表盘中创建 API 密钥,并将其导出为OMNARA_TOKEN,使用以下命令安装 SDKnpm install @omnara/sdk,并使用由以下命令打印的 org 和 project IDnpx omnara config:

import { readFile } from 'node:fs/promises'
import { bearerToken, createOmnaraClient, openAgentEventStream, sdk } from '@omnara/sdk'

const client = createOmnaraClient({ auth: bearerToken(process。env。OMNARA_TOKEN!) })
const path = { orgID: 'org_...', projectID: 'proj_...' }

const config = await sdk。createAgentConfig({
  client,
  path,
  body: { source: await readFile('agent.yaml', 'utf8'), source_format: 'yaml' },
})
const launched = await sdk。createAgent({
  client,
  path,
  body: { config: config。data。id, message: "报告这台机器的可用磁盘空间。" },
})

const agentID = launched。data。agent。id
for await (const event of openAgentEventStream({ client, path: { ...path, agentID } })) {
  console。log(event)
}

该快速开始展示了使用 REST API 的相同流程。

要让你的编码智能体完成设置,请给它以下提示词:

Help me set up Omnara by following https://www.omnara.com/SKILL.md

自托管

需要带 Compose 的 Docker。

git clone https://github.com/omnara-ai/omnara.git
cd omnara
docker compose -f compose.yaml --profile app up -d

打开http://localhost:8000并注册。本地开发会在以下位置打印验证链接docker compose logs api,因此不需要电子邮件提供商。要从源码构建而不是使用已发布的镜像,请运行docker compose --profile app up -d --build。

新实例还没有任何模型或机器。在控制台中,添加一个模型提供商和一个模型,在机器下连接这台计算机,并将两者都共享给你的项目。实例拥有公共 URL后,沙箱也能正常工作。

将 CLI 指向你的实例并登录:

npx omnara config --api-url http://localhost:8000/api/v1 --issuer-url http://localhost:8000
npx omnara login

在agent.yaml中,使用你的提供商和模型名称,并将machine_pool_name条目替换为machine_name: <your machine>。然后用与上面相同的命令启动它。

本地默认配置有意设置为不安全。对于真实部署,请遵循自托管指南和配置参考。

工作原理

你的产品与 Omnara 通信,Omnara 使用其配置中的模型、工具和机器来运行每个智能体。

flowchart TB
    subgraph yours["Your side"]
        users(["Your users"]) --> app["Your app<br/>REST API · TypeScript SDK"]
        team["Your team<br/>CLI · dashboard<br/>Slack · Discord · GitHub"]
    end
    subgraph omnara["Omnara"]
        api["API<br/>launch · input<br/>event stream · approvals"] <--> pg[("Postgres<br/>each agent's event log")] <--> worker["Workers<br/>run the agent loop"]
    end
    subgraph plug[" "]
        models["Models<br/>OpenAI · Anthropic<br/>OpenRouter · self-hosted"]
        tools["Tools<br/>built-in · skills<br/>MCP · custom"]
        machines["Machines<br/>sandboxes or your own<br/>laptop, VM, container"]
    end
    app --> api
    team --> api
    worker --> models
    worker --> tools
    worker --> machines

    classDef side fill:none,stroke:#8b949e,stroke-width:1px
    classDef core fill:#506FCF,stroke:#3D5BB5,stroke-width:1px,color:#ffffff
    classDef store fill:#3D5BB5,stroke:#2E4794,stroke-width:1px,color:#ffffff
    classDef plugin fill:none,stroke:#85A0E6,stroke-width:1.5px
    class users,app,team side
    class api,worker core
    class pg store
    class models,tools,machines plugin
    style yours fill:none,stroke:#8b949e,stroke-dasharray:4 3
    style omnara fill:#506FCF14,stroke:#506FCF,stroke-width:1.5px
    style plug fill:none,stroke:#85A0E6,stroke-dasharray:4 3
    linkStyle default stroke:#8b949e,stroke-width:1.5px
加载
  • API。你的应用、CLI 和仪表盘都使用同一个 REST API 来启动智能体、发送消息和应答审批。事件会在发生时实时流式返回。
  • Postgres。每个智能体的每一步都保存在这里。该记录就是智能体的状态,因此任何工作进程都能在崩溃或重启后重新接管某个智能体。
  • 工作进程。无状态进程,负责构建模型上下文、调用模型并运行工具。智能体只在执行一轮时使用工作进程,因此一个工作进程可以服务多个智能体。添加工作进程以同时处理更多轮次。
  • 机器。每台机器运行omnarad守护进程,它向外连接到 Omnara,因此智能体可以在那里运行命令,而无需任何入站端口。

Omnara 还使用 Redis、用于附件和工具输出的 blob 存储,以及内存文件系统。架构文档涵盖了详细信息。

功能

构建智能体

  • 任意模型。自带密钥,支持 OpenAI、Anthropic、OpenRouter、Amazon Bedrock、LiteLLM、Ollama 或任何兼容端点,包括你自己托管的模型。
  • 工具。内置工具支持 shell 命令、文件、网页搜索与抓取,以及向人提问,此外还有MCP 服务器和自定义工具,它们在你自己的系统中运行。
  • 技能。将指令和文件打包一次,附加到任何智能体,智能体会在需要时加载它们。
  • 记忆。记忆存储为智能体提供可在对话之间持久保存的文件,并可与其他智能体共享,每个智能体可拥有只读或读写权限。
  • 子智能体。一个智能体可以启动具有全新上下文的子智能体,检查它们的进度,并向它们发送新指令。每个子智能体都是一个完整的智能体,你可以对其进行检查。

在任何地方运行它们

  • 机器。机器是智能体使用的工具。在任何 macOS 或 Linux 笔记本电脑、虚拟机或容器上安装 Omnara 守护进程,你的智能体就能在那里运行命令和编辑文件,无需入站端口或 SSH 密钥。或者使用来自十一家提供商的沙箱(Arker、Blaxel、boxd、CreateOS、Daytona、E2B、Freestyle、Modal、Superserve、Tenki、Unikraft)。一个智能体可以同时使用多台机器(例如一组 GPU 服务器)并在它们之间迁移。如果你的笔记本电脑离线,智能体可以在沙箱中继续工作,并通过 git 将工作同步回来。
  • 持久状态。每一步都会被保存,因此智能体在崩溃、重启和机器断开后能从上次中断的地方继续。
  • 定时调度。带时区的 Cron 触发器可以向现有智能体发送消息、从配置文件启动新智能体,或启动一个新的 Slack 或 Discord 线程。

连接它们

  • Slack、Discord 和 GitHub。在 Slack 或 Discord 中提及该机器人,即可在线程中启动一个智能体,它会在其中回复、提问并请求批准。在 GitHub 上,智能体可以在拉取请求打开或有人提及时启动,然后读取 diff、发表评论并提交审查。要连接其他服务,可在同一公共 API 上构建自定义集成。
  • 流式传输和webhook。将每个事件在发生时实时流式传输,或作为 webhook 接收,并在智能体工作时发送新消息。
  • 权限。每个工具都可以立即运行、先询问人员,或被阻止。平台会强制执行该设置,智能体会等待有人批准或拒绝该调用。
  • API、SDK 和 CLI。一个 REST API,定义于api/openapi/openapi.yaml,一个@omnara/sdkTypeScript SDK(omnara)、一个 CLI(

)以及一个 MCP 服务器。

  • 控制它们基于角色的访问控制和密钥。面向用户和 API 密钥的组织与项目角色。模型、机器和 MCP 服务器的凭据只存储一次,并显式地与每个项目共享。
  • 多租户。一次部署可服务多个组织,每个组织都有自己的成员、项目、密钥、模型提供商和机器。自托管运营者可以为每个新组织提供默认模型和沙箱,就像 Omnara Cloud 所做的那样。
  • 你的数据。自托管部署将每个智能体的历史记录保存在你自己的 Postgres 中,你可以在那里查询它用于分析、评估和训练数据集。

Omnara 与 Claude Managed Agents 和 OpenAI 的 Agents API 对比

Claude Managed Agents以及 OpenAI 的Agents API都是托管服务,用于在一家公司的模型上运行智能体。Omnara 做的是同样的事,但作为一个开源平台,你可以在任何地方运行它,并使用任何模型。

Omnara Claude Managed Agents OpenAI 的 Agents API
来源 开源(Apache 2.0) 闭源 开源 harness(Codex)。托管服务由 OpenAI 提供。
模型 任何兼容模型 Claude OpenAI
智能体循环 Omnara 的,可与任何模型配合使用 Anthropic 的,专为 Claude 构建 Codex,由 OpenAI 运行和更新
平台运行位置 Omnara Cloud,或你自己的基础设施 Anthropic 的云 OpenAI 的云
智能体运行位置 来自多个提供商的沙箱,或你自己的机器 Anthropic 沙箱,或你自己的沙箱 OpenAI 沙箱、合作伙伴沙箱,或你自己的机器
运维 由 Omnara Cloud 托管。自托管时由你运维。 由 Anthropic 托管。如果你自托管沙箱,则由你运行沙箱侧。 由 OpenAI 托管。如果你自带环境,则由你运行环境。
智能体历史记录 在 Omnara Cloud 上由 Omnara 存储,可通过 API 查询。自托管时存储在你自己的 Postgres 中。 由 Anthropic 存储,可通过 API 读取和删除。目前不符合零数据保留或 HIPAA BAA 覆盖的条件。 由 OpenAI 存储。不支持零数据保留。仅限美国数据驻留。
定价 自托管免费。在 Omnara Cloud 上,使用你自己的密钥和机器免费,或按用量付费使用我们的模型和沙箱。 Claude token 费率加每活跃会话小时 $0.08 OpenAI 模型费率,外加 OpenAI 工具和托管沙箱的标准费率

如果你使用一家公司的模型并希望该公司为你运行一切,请选择 Claude Managed Agents 或 Agents API。如果你想自选模型和机器、自行运行平台,或将智能体数据保存在你自己的数据库中,请选择 Omnara。

Omnara 的适用场景

如果你使用 它适合 Omnara 增加
工作流构建器,例如 n8n 或 Zapier 可预测的、逐步的自动化 在机器上运行代码并保持状态数天的开放式智能体
智能体框架,例如 Mastra、LangChain 或 OpenAI Agents SDK 应用代码中的智能体逻辑 托管、状态、机器、权限和集成,智能体通过 API 创建和变更,而不是重新部署
智能体运行框架,例如 Claude Code、Claude Agent SDK、Codex、OpenCode 或 Pi 在终端中或单台机器上运行的一个智能体循环 作为服务运行的云端智能体,跨机器和用户,从你的应用、Slack、GitHub 或定时计划启动
托管式智能体平台,例如 Claude Managed Agents 或 Agents API 基于单一公司模型的托管智能体 与托管智能体相同的模型,开源,可运行于任意模型,且可自托管

示例

其中每一个都是一个agent.yaml外加一个SKILL.md位于examples/,你可以用一条提示词将它们中的任何一个部署到你的编码智能体。

此外还有代码示例,包括一个CLI 聊天应用基于 TypeScript SDK 构建,通过 webhook 的自定义工具,以及一个SharePoint 文件系统挂载。

从你的编码智能体使用 Omnara

MCP 服务器。连接 Claude Code、Codex、Cursor 或任何支持 OAuth 的 MCP 客户端到https://app.omnara.com/mcp以启动和管理 Omnara 智能体。你通过浏览器登录,因此无需粘贴令牌。在 Claude 中,从连接器目录添加它。Omnara 也以com.omnara/omnara的身份列在官方 MCP Registry 中。

claude mcp add --transport http omnara https://app.omnara.com/mcp
codex mcp add omnara --url https://app.omnara.com/mcp

然后使用/mcp在 Claude Code 中登录,或使用codex mcp login omnara在 Codex 中登录。参见连接 MCP 客户端。

CLI。 omnara从你的终端或编码智能体的 shell 管理智能体、配置文件、机器、模型提供商、密钥、技能和 cron 触发器。运行npx omnara --help以开始。

设置技能。 skills/setup-omnara-agent,同时也提供于omnara.com/SKILL.md,引导编码智能体为你的项目设置 Omnara。

面向 LLM 的文档。 docs.omnara.com/llms.txt。

常见问题

Omnara 是什么?一个开源托管式智能体平台,可在任意模型和任意机器上运行 AI 智能体。

费用是多少?无需自托管。Omnara Cloud 没有平台费用。你可以免费自带模型密钥和机器,或者按提供商 token 费率按需付费使用我们的模型,并按活跃时间和保留存储为我们的沙箱付费。参见定价。

我可以自托管吗?可以。在本地用 Docker Compose 运行,然后按照自托管指南进行生产部署。API、CLI、SDK 和配置格式在 Omnara Cloud 和自托管部署中完全相同。

支持哪些模型?任何兼容 OpenAI Responses、OpenAI Chat Completions 或 Anthropic Messages 端点的模型,包括 OpenAI、Anthropic、OpenRouter、Amazon Bedrock、LiteLLM 和 Ollama。

开发

源码开发需要 中声明的 Go 版本、go.mod、Node.js 24 或更新版本(含 Corepack)、ripgrep,以及带 Compose 的 Docker。用 运行快速仓库门禁。参见make verify。CONTRIBUTING.md了解完整测试套件、生成代码工作流和拉取请求要求。

社区

Discord·GitHub Issues·X·安全

许可证

Apache License 2.0