OpenHarness is a Python implementation of an agent harness, the infrastructure that wraps an LLM with tool use, skills, memory, permissions, and multi-agent coordination. The oh command opens an interactive React/Ink terminal UI or runs a single prompt non-interactively with text, JSON, or stream-JSON output. ohmo is a personal agent built on it that talks through Feishu, Slack, Telegram, or Discord, forks branches, writes code, runs tests, and opens pull requests, running on an existing Claude Code or Codex subscription.
The agent loop streams a response, executes each tool call through a permission check, pre-hook, execution, and post-hook, runs independent calls in parallel, retries API calls with exponential backoff, and tracks tokens and cost. 43 tools cover file I/O, web and code search, notebooks, subagents and messaging, background tasks, MCP servers, plan and worktree modes, and scheduling. Skills load on demand from SKILL.md directories at user, project, or plugin level in the anthropics/skills layout, and the plugin system accepts Claude Code plugins.
Providers are treated as workflows backed by named profiles: an Anthropic-compatible API (Claude, Kimi, GLM, MiniMax), a Claude subscription bridge, an OpenAI-compatible API (OpenAI, OpenRouter, DashScope, DeepSeek, SiliconFlow, Groq, Ollama, GitHub Models, NVIDIA NIM, Gemini), a Codex subscription bridge, and GitHub Copilot through OAuth device flow. Credentials bind per profile, so different compatible endpoints keep separate keys.
Context handling includes CLAUDE.md discovery and injection, auto-compaction that preserves task state across compression, a MEMORY.md persistent memory, and session resume. Permissions offer default, auto, and plan modes with path-level rules and denied commands. A --dry-run flag resolves settings, auth, skills, commands, tools, and MCP configuration without calling the model and reports a ready, warning, or blocked verdict with next actions.
Features
- Agent loop: streaming tool-call cycle, parallel tool execution, retry with backoff, token and cost tracking
- Tool set: 43 tools including Bash, Read, Write, Edit, Glob, Grep, WebFetch, WebSearch, LSP, NotebookEdit, Agent, and MCP resource tools, each with Pydantic-validated inputs
- Skills and plugins: on-demand SKILL.md knowledge and Claude Code plugin compatibility (commands, hooks, agents, MCP servers)
- Provider workflows: Anthropic-compatible, OpenAI-compatible, Claude and Codex subscription bridges, GitHub Copilot, and Ollama local models
- Memory and context: CLAUDE.md injection, auto-compaction, MEMORY.md, session history
- Governance: permission modes, path rules, denied commands, PreToolUse and PostToolUse hooks, interactive approval dialogs
- Multi-agent coordination: subagent spawning, team registry, task management, background task lifecycle
- ohmo channels: Feishu, Slack, Telegram, and Discord gateway with slash commands and multimodal attachments
- Web tools: DuckDuckGo HTML search by default, configurable SearXNG endpoint, opt-in proxy with SSRF-safe defaults
Integrates with
Claude Code
Terminal-based agentic coding tool that reads your codebase and runs tasks through natural-language commands
Codex
Lightweight coding agent that runs in your terminal
Nanobot
nanobot: The Ultra-Lightweight Personal AI Agent
OpenClaw
Self-hosted single-operator assistant runtime that links models, tools, and messaging channels through one local Gateway
