跳到正文
Hacker News· kmansm27·· 16 小时前AI 评分72

Omnara 开源智能体平台发布,可自托管并支持任意模型

Show HN: Omnara – Open-source alternative to Claude Managed Agents

AI 导读

Omnara 发布开源托管式智能体平台,作为 Claude Managed Agents 和 OpenAI Agents API 的自托管替代,采用 Apache 2.0 许可,可用 Docker Compose 部署。

正文 · AI 翻译

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: |
  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, 你可以用一条提示将它们中的任何一个部署到你的编码智能体。

此外还有基于 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 · 安全

许可证

Apache License 2.0

来源:Hacker News · github.com