Providers
Anthropic, OpenAI and every OpenAI-compatible endpoint, Google Gemini. Native fetch and SSE against each vendor's HTTP API — no vendor SDKs, no adapters to update.
A model-agnostic agent harness. The agent loop, tool calling, MCP, subagents, context compaction, hooks and permissions live in one layer — so switching provider mid-session costs nothing.
npm install -g oharness
Anthropic, OpenAI and every OpenAI-compatible endpoint, Google Gemini. Native fetch and SSE against each vendor's HTTP API — no vendor SDKs, no adapters to update.
Define a tool with zod. JSON Schema is generated and arguments validated for you, and whether calls run in parallel or in sequence comes from the tool's own declaration.
A JSON-RPC client built in — stdio and Streamable HTTP, no MCP SDK. Servers are discovered and their tools namespaced automatically.
Compaction that cuts at a safe point rather than mid-exchange, sessions persisted and resumable, and recall across transcripts already archived.
Deny beats allow, and even bypass. Four modes, rules that fail at parse time instead of at 3am, and a prompt that is injected — so a scheduled run never waits on a human.
Delegate to isolated contexts, run them in parallel, and keep the conclusion instead of the transcript that produced it.
Connect a vendor with a key, or point at Ollama, LM Studio or your own vLLM server. Models are discovered from each vendor's own endpoint, so the list is never a stale copy shipped inside the package.
Read the docs