Overview
OpenHarness is the infrastructure layer under an agent rather than a finished assistant: the streaming tool-call loop, a toolkit, on-demand skill loading, context and memory handling, a permission system and multi-agent coordination. One command — `oh` — launches it, and it integrates with CLI agents including OpenClaw, nanobot and Cursor. It is written in Python (3.10+) with a React + Ink terminal UI, and is MIT licensed.
The harness bundles 43 tools spanning file, shell, search, web and MCP access, loads skills on demand from markdown files, and is compatible with the anthropics/skills and plugin formats. Context handling covers CLAUDE.md discovery and injection, auto-compaction, MEMORY.md persistence, and session resume. Governance is first-class: multi-level permission modes, path- and command-level rules, PreToolUse / PostToolUse hooks and interactive approval dialogs. For multi-agent work it spawns and delegates to subagents with a team registry and background task lifecycle.
Shipping alongside it is **ohmo**, a personal agent built on OpenHarness that lives in Feishu, Slack, Telegram or Discord: you chat with it and it forks branches, writes code, runs tests and opens PRs. ohmo runs on an existing Claude Code or Codex subscription with no extra API key. The provider layer treats backends as named workflow profiles, covering Anthropic-compatible and OpenAI-compatible APIs, the Claude and Codex subscription bridges, and GitHub Copilot OAuth.
What it does
- Agent loop with a streaming tool-call cycle, parallel tool execution, exponential-backoff retries, and token/cost tracking
- 43 built-in tools (file, shell, search, web, MCP) plus on-demand markdown skill loading, compatible with anthropics/skills and plugins
- Context and memory: CLAUDE.md discovery and injection, auto-compaction, MEMORY.md persistence, session resume and history
- Governance layer — multi-level permission modes, path and command rules, PreToolUse/PostToolUse hooks, approval dialogs
- Swarm coordination: subagent spawning and delegation, a team registry, and background task lifecycle management
- ohmo, a chat-native personal agent that runs on an existing Claude Code or Codex subscription from Feishu, Slack, Telegram or Discord
- Non-interactive mode with `text` / `json` / `stream-json` output, and a `--dry-run` preview that resolves settings, auth, skills and MCP config without calling the model
Getting started
Python 3.10 or higher. Windows is natively supported, but in PowerShell you must use `openh` rather than `oh`, because `oh` resolves to the built-in Out-Host alias.
Install
Either the install script or the PyPI package.
curl -fsSL https://raw.githubusercontent.com/HKUDS/OpenHarness/main/scripts/install.sh | bash
# or:
pip install openharness-aiConfigure a provider
The interactive wizard covers Claude, OpenAI, Copilot, Codex, Moonshot (Kimi), GLM, MiniMax, NVIDIA NIM and any compatible endpoint.
oh setupRun it
Launch the interactive terminal UI.
ohPreview before executing
Dry-run resolves settings, auth status, prompt assembly, skills, commands, tools and MCP config, and reports a readiness level of ready / warning / blocked — without calling the model or running any tool.
oh --dry-run -p "Review this bug fix and grep for failing tests"Script it
Non-interactive mode writes to stdout, or emits JSON / streaming JSON events for programmatic use.
oh -p "Explain this codebase"
oh -p "List all functions in main.py" --output-format json
oh -p "Fix the bug" --output-format stream-jsonBring up ohmo
Initialise the workspace, configure your chat channels and provider, then start the gateway — ohmo is then live in your chat app.
ohmo init
ohmo config
ohmo gateway startCommands and code are distilled from the project's own documentation — always check the official repo for the latest.
When to use it
- Build your own agent on a ready-made loop, toolkit and permission model instead of writing the harness yourself
- Run a personal agent from Slack or Telegram that opens PRs against your repos, on a subscription you already pay for
- Drive an agent from CI or a script with structured JSON or streaming-JSON output
- Coordinate subagents on a larger task with a team registry and background task lifecycle
How OpenHarness compares
OpenHarness alongside other open-source agent frameworks & builders tools AI/TLDR tracks, ranked by GitHub stars.
| Tool | Stars | What it does |
|---|---|---|
| DeepSeek Harness | ★ 219k | DeepSeek AI's open-source agent harness (dsh), built on Cordis, where models, tools, skills, sessions, sandboxes, storage and the UI are all plugins composed through profiles. |
| AutoGPT | ★ 187k | One of the earliest autonomous agent projects, now a platform for building and running agents from reusable blocks and workflows. |
| DeerFlow | ★ 82.2k | ByteDance's open-source super agent harness built on LangGraph: skills, sub-agents, sandboxes, a filesystem and long-term memory for long-horizon research, coding and content tasks. |
| nanobot | ★ 48k | Lightweight self-hosted personal AI agent framework in Python, with a WebUI, terminal and chat-app channels, tools, long-term memory, MCP and scheduled automations. |
| Agno | ★ 42.1k | A fast Python framework (formerly Phidata) for building agents with memory, tools, and multimodal inputs, plus a runtime for deploying them in production. |
| LangGraph | ★ 41.4k | A library from the LangChain team for building stateful, graph-based agent workflows with explicit control over steps, memory, and human-in-the-loop checkpoints. |
| AgentGPT | ★ 36.3k | AgentGPT lets you name a custom AI, give it a goal, and watch it plan tasks, run them, and learn from the results, all from a web browser. |
| OpenHarness | ★ 15.7k | A lightweight agent harness — tools, skills, memory and swarms — plus ohmo |