Omnara 开源智能体平台发布,可自托管并支持任意模型
Show HN: Omnara – Open-source alternative to Claude Managed Agents
Omnara 发布开源托管式智能体平台,作为 Claude Managed Agents 和 OpenAI Agents API 的自托管替代,采用 Apache 2.0 许可,可用 Docker Compose 部署。
可自托管的 Claude Managed Agents 和 OpenAI Agents API 替代方案。
网站 · 快速开始 · 文档 · API · 更新日志 · Discord
Omnara 是一个开源的托管式智能体平台。使用 API 即可在任意模型和任意机器上运行 AI 智能体,内置工具、密钥、权限和流式传输。可在 Apache 2.0 许可下免费自托管,或使用 Omnara Cloud。
快速开始
Omnara Cloud
在 app.omnara.com 登录。你的第一个项目自带一个模型提供商(omnara-openrouter)和一个托管沙箱池
(default-pool),因此此配置可直接运行。将其保存为 agent.yaml:
version: v1 instruction: | You are an engineering assistant. Use your machine to run commands. 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 "Machine assistant" \ --message "Report this machine's operating system and free disk space."
在终端中使用 npx omnara agents chat <agent-id> 与智能体对话,
或在仪表盘中打开它,查看其工具调用并回复。
使用 TypeScript SDK 从代码中启动
在仪表盘中创建 API 密钥并导出为 OMNARA_TOKEN,使用 npm install @omnara/sdk 安装
SDK,并使用
npx omnara config 打印出的组织和项目 ID:
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: "Report this machine's free disk space." }, }) 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。
新实例尚无模型或机器。在控制台中,添加一个模型 提供商和一个模型,在 Machines 下连接此计算机,并将两者 与你的项目共享。一旦你的实例拥有 公共 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 服务器和自定义工具。
- 技能。 只需打包一次指令和文件,即可将其附加到任意 agent,agent 会在需要时加载它们。
- 记忆。 记忆存储为 agent 提供可在对话之间持久保存的文件,并可与其他 agent 共享,每个 agent 可拥有只读或读写权限。
- 子 agent。 一个 agent 可以启动具有全新上下文的子 agent,检查它们的进度,并向它们发送新指令。每个子 agent 都是一个完整的 agent,你可以对其进行检查。
随处运行
- 机器。 机器是 agent 使用的工具。在任意 macOS 或 Linux 笔记本电脑、VM 或容器上安装 Omnara 守护进程,你的 agent 就能在那里运行命令和编辑文件,无需入站端口或 SSH 密钥。或者使用来自十一家提供商的沙箱(Arker、Blaxel、boxd、CreateOS、Daytona、E2B、Freestyle、Modal、Superserve、Tenki、Unikraft)。一个 agent 可以同时使用多台机器(例如一组 GPU 服务器),并在它们之间迁移。如果你的笔记本电脑离线,agent 可以在沙箱中继续运行,并通过 git 将工作同步回来。
- 持久状态。 每一步都会被保存,因此 agent 在崩溃、重启和机器断开后能从上次中断处继续。
- 调度。 带时区的 Cron 触发器可以向现有 agent 发送消息、从配置文件启动新 agent,或启动新的 Slack 或 Discord 线程。
连接它们
- Slack、Discord 和 GitHub。 在 Slack 或 Discord 中提及机器人即可在线程中启动 agent,它会在其中回复、提问并请求批准。在 GitHub 上,agent 可以在拉取请求打开或有人提及时启动,然后读取 diff、发表评论并提交审查。要连接其他服务,可在同一公共 API 上构建自定义集成。
- 流式传输和 webhooks。 将每个事件在发生时流式传输或作为 webhook 接收,并在 agent 工作时发送新消息。
- 权限。 每个工具可以立即运行、先询问人员,或被阻止。平台会强制执行该设置,agent 会等待有人批准或拒绝该调用。
- API、SDK 和 CLI。 在
api/openapi/openapi.yaml中定义的 REST API、一个 TypeScript SDK(@omnara/sdk)、一个 CLI(omnara),以及一个 MCP 服务器。
控制它们
- 基于角色的访问控制 和 密钥。 面向用户和 API 密钥的组织与项目角色。模型、机器和 MCP 服务器的凭据只存储一次,并显式地与每个项目共享。
- 多租户。 一次部署可服务多个组织,每个组织都有自己的成员、项目、密钥、模型提供商和机器。自托管运营者可以为每个新组织提供默认模型和沙箱,就像 Omnara Cloud 所做的那样。
- 你的数据。 自托管部署将每个 agent 的历史记录保存在你自己的 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 创建和更改,而不是重新部署 |
| 智能体 harness,例如 Claude Code、Claude Agent SDK、Codex、OpenCode 或 Pi | 终端或单台机器上的一个智能体循环 | 作为服务运行的云智能体,跨机器和用户,从你的应用、Slack、GitHub 或计划任务启动 |
| 托管智能体平台,例如 Claude Managed Agents 或 Agents API | 在一家公司模型上的托管智能体 | 相同模式的托管智能体,开源,支持任何模型,可自托管 |
示例
每个示例都是一个 agent.yaml 加上 examples/ 中的一个 SKILL.md,
你可以用一条提示将它们中的任何一个部署到你的编码智能体。
- Slack 编码智能体修复你在 Slack、Discord 或 GitHub 拉取请求中提到的问题,并打开一个 PR。
- PR 审查智能体根据仓库检出审查你的 GitHub 拉取请求,并留下行内发现。
- SRE 智能体调查生产问题,例如 5xx 激增。
- 浏览器智能体在真实浏览器中处理 长时间运行的任务。
- PostHog 分析智能体将 昨天的产品使用情况与 7 天平均值进行比较,并报告变化。
- Reddit、X 和 LinkedIn 信号智能体总结过去 24 小时内关于你选定主题的帖子。
- 视频生成智能体可根据简要说明制作短视频。
此外还有基于 TypeScript SDK 构建的 CLI 聊天应用、基于 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
然后在 Claude Code 中使用 /mcp 登录,或在 Codex 中使用 codex mcp login omnara 登录。参见连接 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 运行,然后按照自托管指南进行生产部署。Omnara Cloud 和自托管部署的 API、CLI、SDK 和配置格式完全相同。
支持哪些模型?任何位于 OpenAI Responses、OpenAI Chat Completions 或 Anthropic Messages 兼容端点之后的模型,包括 OpenAI、Anthropic、OpenRouter、Amazon Bedrock、LiteLLM 和 Ollama。
开发
源码开发需要 go.mod 中声明的 Go 版本、Node.js 24 或更新版本(含 Corepack)、ripgrep,以及带 Compose 的 Docker。使用 make verify 运行快速仓库门禁。参见 CONTRIBUTING.md 了解完整测试套件、生成代码工作流和拉取请求要求。
社区
Discord · GitHub Issues · X · 安全
许可证
来源:Hacker News · github.com