oharness
v0.8.0
Published
A model-agnostic agent harness: swappable providers, tool calling, MCP, subagents, compaction, hooks and permissions.
Downloads
1,481
Maintainers
Readme
oharness
A model-agnostic agent harness for the terminal, built the way Claude Code is: the agent loop, tool execution, context management and permissions are one layer, and the model is a replaceable backend.
npm install -g oharness
export ANTHROPIC_API_KEY=sk-ant-... # or OPENAI_API_KEY / GEMINI_API_KEY
oharnessThree commands are installed:
| | |
|---|---|
| oharness | the terminal UI — streaming output, permission prompts, slash commands |
| oharness-headless | no UI, no prompts, JSONL on stdout and nothing else |
| oharness-web | a browser frontend on localhost |
Switching model mid-conversation (/model sonnet → /model gemini) converts
no history, because the history was never held in a vendor's shape.
With no UI there is nobody to ask. oharness-headless denies any call that
would need a prompt and reports why — letting them through silently would make
an unattended run more dangerous than a watched one, which is backwards. Grant
what it needs with permission rules up front, or pass --permission-mode auto
deliberately.
Documentation, architecture and the reasoning behind both: https://github.com/Jet1217/OHarness
