Skip to content

mifunedev/openharness

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

889 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ—οΈ Open Harness

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/*.md markdown 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.

πŸ“¦ Install

Option A β€” Upstream (try it without any setup):

curl -fsSL https://oh.mifune.dev/install.sh | bash

Clones 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.sh

Option 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.sh
Advanced: 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 | bash

If 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.

πŸš€ Use it

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

πŸ§ͺ Testing

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.

βš™οΈ Configure (optional)

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

✨ What you get

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

πŸ“š Where to go next

  • Quickstart β€” full step-by-step
  • Crons β€” markdown-defined autonomous tasks

🧹 Cleanup

make destroy

🀝 Contributing & community

Open 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.

πŸ“„ License

MIT.


Full documentation