Hacker News AI · 2026/10/22 00:44:53
Omnara 开源发布 提供自托管智能体管理平台
Omnara 推出开源智能体管理平台,作为 Claude Managed Agents 和 OpenAI Agents API 的自托管替代方案。该平台支持在任意模型和机器上运行 AI 智能体,内置工具调用、权限管理及流式传输功能,采用 Apache 2.0 协议并支持云端或本地部署。
报道全文原始报道全文
本文目录4 个章节
The open-source managed agent platform
A self-hostable alternative to Claude Managed Agents and OpenAI's Agents API.
Website · Quickstart · Docs · API · Changelog · Discord
Omnara is an open-source managed agent platform. Use the API to run AI agents on any model and any machine, with tools, secrets, permissions, and streaming built in. Self-host it for free under Apache 2.0, or use Omnara Cloud.
Quickstart
Omnara Cloud
Sign in at app.omnara.com. Your first project comes
with a model provider (omnara-openrouter) and a pool of managed sandboxes
(default-pool), so this config runs as is. Save it as 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-poolLaunch it with the CLI (Node.js 22 or newer). If you're not logged in, the first command opens your browser to sign in.
npx omnara agents launch --file agent.yaml \
--name "Machine assistant" \
--message "Report this machine's operating system and free disk space."Chat with the agent in your terminal with npx omnara agents chat <agent-id>,
or open it in the dashboard to watch its tool calls and reply.
Create an API key in the dashboard and export it as OMNARA_TOKEN, install the
SDK with npm install @omnara/sdk, and use the org and project IDs that
npx omnara config prints:
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)
}The quickstart shows the same flow with the REST API.
</details>To have your coding agent do the setup, give it this prompt:
Help me set up Omnara by following https://www.omnara.com/SKILL.mdSelf-host
Requires Docker with Compose.
git clone https://github.com/omnara-ai/omnara.git
cd omnara
docker compose -f compose.yaml --profile app up -dOpen http://localhost and sign up. Local
development prints the verification link in docker compose logs api, so no
email provider is needed. To build from source instead of using published
images, run docker compose --profile app up -d --build.
A new instance has no models or machines yet. In the console, add a model provider and a model, connect this computer under Machines, and share both with your project. Sandboxes also work once your instance has a public URL.
Point the CLI at your instance and log in:
npx omnara config --api-url http://localhost:8000/api/v1 --issuer-url http://localhost:8000
npx omnara loginIn agent.yaml, use your provider and model names, and replace the
machine_pool_name entry with machine_name: <your machine>. Then launch it
with the same command as above.
The local defaults are intentionally insecure. For a real deployment, follow the self-hosting guide and the configuration reference.
How it works
Your product talks to Omnara, and Omnara runs each agent with the model, tools, and machines in its config.
- API. Your app, the CLI, and the dashboard all use the same REST API to launch agents, send messages, and answer approvals. Events stream back as they happen.
- Postgres. Every step of every agent is saved here. That record is the agent's state, so any worker can pick an agent back up after a crash or restart.
- Workers. Stateless processes that build the model context, call the model, and run tools. An agent only uses a worker while it's taking a turn, so one worker can serve many agents. Add workers to handle more turns at once.
- Machines. Each machine runs the
omnaraddaemon, which connects out to Omnara, so agents can run commands there without any inbound ports.
Omnara also uses Redis, blob storage for attachments and tool outputs, and a memory filesystem. The architecture docs cover the details.
(注:更多技术实现细节与完整 API 文档请查阅原项目 README)
作者发帖说明(HN):
Hey y'all, Kartik from Omnara (https://omnara.com) here. We're building an open-source API for running durable agents. You create an agent with an API call, and Omnara runs the agent loop, gives the agent sandboxes to run commands in, and handles secrets, permissions, and RBAC. Each agent's state is stored in Postgres, so agents survive restarts and cost nothing while idle. You can message them and stream their events over the API.
You may remember us from our early days, when we made a remote-control phone app for Claude Code and Codex. Since the harness ran on a laptop back then, we had to build a relay to reach it, it stopped when the laptop closed, and moving it to a cloud sandbox meant syncing code and agent state between machines. We didn't think remote-controlling a local agent was end-game for how people would run agents, so we built a new product where the agent runs in the cloud, any client can talk to it through an API, and it can still use your laptop as one of its machines.
Anthropic and OpenAI are building hosted versions of this, like Claude Managed Agents and the OpenAI Agents API. Omnara is an open-source version you can run on your own servers and use your own models. It's basically a harness server like the opencode or codex servers, but durable, scalable, with the usual harness features like file and shell tools, subagents, compaction, permission prompts, MCP, skills, memory, yada yada yada.
Here's some interesting architectural de...