oar README

The project's README from github.com/botiverse/oar. As one markdown file: README.md.

OAR - programming interface for all agent harnesses

OAR logo

OAR (Open Agent Runtime) is a provider-independent programming interface for coding-agent runtimes: a solid foundation for building agent workspaces and other applications.

Delete harness logic and focus on outcomes and UX.

Supported runtimes


Antigravity

Claude Code

Codex

Cursor

Grok Build

Kimi Code

Pi

Docs

Read To answer
docs/design/ Why oar exists and which design problems it treats as load-bearing
docs/spec/ Record-stream and query contracts
Conversation projection Build a conversation UI from requests, responses and native messages
docs/spec/inventory.md Independent native skills, MCP server and tool queries
docs/spec/subagents.md Subagents on any runtime, from a host or over oar mcp
docs/spec/update.md Update checks and upgrades through each runtime's own updater
docs/runtimes/ What each runtime says natively and how oar maps it
docs/development.md Working in this repo: validate changes, add a runtime, conventions
packages/cli/ The oar executable, published separately as @botiverse/oar-cli
docs/design/system.md How the library, evidence layer, projections, and continuation form one agent-facing system
docs/prior-arts/feature-comparison.md Surveyed projects compared by concrete features and evidence
docs/design/decisions.md Design decisions, their evidence, and conditions for reconsideration
docs/design/roadmap.md Which system improvements are next, and what evidence gates them

Library

import { promptAndWait, runtimes } from "@botiverse/oar";

const grok = runtimes.require("grok");
const installation = await grok.installation?.();

if (installation?.kind === "available") {
  const session = await grok.session(installation, { cwd: process.cwd() });
  session.events((event) => {
    switch (event.kind) {
      case "text_delta": process.stdout.write(event.text); break;
      case "tool_call_started": console.log(`[${event.tool}]`); break;
      case "turn_ended": console.log(event.outcome.kind); break;
    }
  });
  const run = await promptAndWait(session, "Inspect this repository", { timeoutMs: 120_000 });
  console.log(run.kind === "rejected" ? run.code : run.outcome);
  await session.dispose();
}

events() is the flat, attributed reading of the session: one Event per fact (native user message echoes, text, reasoning, background tasks, tool call start / progress / end, turn start and end, usage, model, effort, compaction, retry, app requests, control rejections, the process exit), with seq and agentPath on each. Pass { coalesceText: true } to get text in blocks instead of pieces. When the runtime's own frame matters, session.rawEvents() and session.records() expose the underlying record stream with every native payload verbatim.

CLI

npx @botiverse/oar-cli list
oar run claude "What does this repo do?" --record run.jsonl

ESM-only, requires Node.js 24+, Apache-2.0.

oar (botiverse/oar)

Searching Database…

198 ·GitHub
Что это?OAR (Open Agent Runtime) — независимый от поставщика программный интерфейс для harness-обвязок агентов кодинга вроде Claude Code, Codex и Cursor, благодаря которому вы создаёте одну интеграцию вместо отдельной harness-логики для каждого агента.
Это библиотека или инструмент командной строки?И то и другое: oar — библиотека, которую вы импортируете для чтения и запроса сессий агентов, и в ней же поставляется отдельный исполняемый CLI, опубликованный как @botiverse/oar-cli.
Как начать использовать oar в своём проекте?Подключите библиотеку oar и вызовите session.events(), чтобы получить плоское нормализованное представление сессии агента кодинга, или установите пакет @botiverse/oar-cli, чтобы управлять рантаймами из командной строки.
Что нужно для запуска CLI?Нужен Node.js 24 или новее; пакет CLI — только ESM, поэтому старые установки Node или проекты только на CommonJS не смогут загрузить его напрямую.
Заменяет ли oar моих существующих агентов кодинга?Нет — oar сам не устанавливает и не запускает агентов: он читает и контролирует harness-обвязки, которые у вас уже есть (Claude Code, Codex, Cursor и т.д.), и даже обновления идут через собственный апдейтер каждого рантайма.
Каких агентов кодинга oar поддерживает из коробки?oar сейчас поддерживает в качестве рантаймов Antigravity, Claude Code, Codex, Cursor, Grok Build, Kimi Code и Pi.
Что возвращает events()?events() возвращает плоский список объектов Event — по одному на факт, например текст, начало/прогресс/конец вызова инструмента, начало/конец хода, использование, модель, повторы или завершение процесса, — каждый помечен номером seq и agentPath.
В чём разница между events() и rawEvents()?events() — это нормализованное плоское представление сессии в oar, тогда как session.rawEvents() и session.records() открывают лежащий в основе нативный поток записей с каждым специфичным для рантайма payload дословно — для случаев, когда важен сырой кадр.
Можно ли запускать субагентов на разных рантаймах?Да — oar поддерживает субагентов на любом поддерживаемом рантайме, управляемых либо из приложения-хоста, либо через 'oar mcp', как описано в docs/spec/subagents.md.
Creator
botiverse
Size
7.2 MB
Stars
198
Age
2mo
Commits · 90 Days