Open Harness is a Docker-based agent harness for one project, agent-tended over time. One docker compose up gives you a long-lived sandbox where Claude (or another agent of your choice) runs against a single repo, branch, and identity β not a multi-tenant comparison rig.
- One project, one sandbox. A single container scoped to a single repo. The agent owns its branch and its workspace; you keep your laptop clean.
- Agents that work while you sleep. A tiny croner runtime reads
crons/*.mdmarkdown and wakes the agent on a schedule. - Only host dependency: Docker. No Node, no Python, no toolchain rot on your laptop.
- Composable infra. Cherry-pick Postgres, Cloudflare tunnels, SSH, Caddy gateway via Compose overlays.
- Slack-ready. The in-tree Pi extension at
.pi/extensions/slack/bridges Slack to a Pi agent β see docs/integrations/slack.md. - Multi-agent? Add a pack. Other multi-agent setups ship as separate packs β see
@ryaneggz/mifune.
Option A β Upstream (try it without any setup):
curl -fsSL https://oh.mifune.dev/install.sh | bashClones into ~/.openharness, offers to share your host gh token, writes .devcontainer/.env, and builds the image (~10 min cold, ~30s warm). Only host dependency: Docker.
Option B β Fork and clone (recommended for self-hosting):
# 1. Fork on GitHub, then clone YOUR fork:
git clone https://github.com/<your-org>/<your-fork>.git && cd <your-fork>
# 2. Bootstrap β installer auto-detects the local clone, no env vars needed:
bash scripts/install.shOption C β Clone upstream, then re-point to your repo:
git clone https://github.com/mifunedev/openharness.git my-harness && cd my-harness
git remote set-url origin https://github.com/<your-org>/<your-repo>.git
bash scripts/install.shAdvanced: install directly from your fork without cloning first
OH_GITHUB_REPO=<your-org>/<your-fork> curl -fsSL \
https://raw.githubusercontent.com/<your-org>/<your-fork>/main/scripts/install.sh | bashIf your fork uses a default branch other than main, set OH_GITHUB_REF=<branch> and replace main in the URL. See Installation docs for all environment overrides.
cd ~/.openharness
make shell # enter the isolated sandbox
# inside the sandbox, launch any core agent:
# claude # Claude Code (default)
# codex # OpenAI Codex CLI
# opencode # OpenCode (optional: set install.opencode: true in harness.yaml and rebuild)
# pi # Pi Coding Agent
# deepagents # LangChain DeepAgents (optional: set install.deepagents: true in harness.yaml and rebuild)
# hermes # Nous Research Hermes (optional: set install.hermes: true in harness.yaml and rebuild)
make destroy # stop and remove the sandbox
make help # all targets- Property-based testing convention: docs/property-testing.md
Prefer VS Code or remote SSH? Use the Dev Containers extension's "Attach to Running Container" against openharness, or SSH into your host first and then attach.
harness.yaml is the master config for non-secret settings (sandbox name,
timezone, optional installs, Slack allowlists, compose overlays).
.devcontainer/.env holds secrets only (GH_TOKEN, SLACK_APP_TOKEN,
SLACK_BOT_TOKEN). Apply changes with make destroy && make sandbox.
Manual setup (no installer)
git clone https://github.com/mifunedev/openharness.git && cd openharness
make sandbox
make shell| Core agents | Defaults: Claude Code, Codex, Pi. Optional: OpenCode, DeepAgents, Hermes |
| Runtimes | Node 22, pnpm, Bun, uv (Python) |
| DevOps | Docker CLI + Compose, GitHub CLI, cloudflared, tmux, croner |
| Browser | agent-browser + Chromium (headless) |
| One project, one sandbox | A single container scoped to a single repo and branch |
| Crons | Markdown-defined schedules in crons/*.md driven by the in-container croner runtime |
| Multi-agent | Install a harness pack such as @ryaneggz/mifune for additional multi-agent setups |
- Quickstart β full step-by-step
- Crons β markdown-defined autonomous tasks
make destroyOpen Harness is maintained under the mifunedev org β the canonical repo is github.com/mifunedev/openharness. To run your own, fork it (see Option B above) and open PRs back upstream. Issues and PRs welcome; if Open Harness is useful to you, please give us a star.
MIT.