Skip to content

The harness command ​

bin/harness is the front door to the tooling. It needs Python 3.11 or later and nothing beyond the standard library. Put bin/ on the PATH, as Installation shows.

Every verb keeps one contract. A verb that changes something is dry by default: it prints its plan and exits 1 when something would change, 0 when nothing would. --apply makes the change. Exit 2 is a usage error or a failure. harness --profile F names the private profile, else $RESEARCH_HARNESS_PROFILE, else ~/.config/research-harness/profile.toml; examples/profile.toml shows every key. harness --help and harness <verb> --help describe each verb. harness --models F names the model tables, which map each tier to its Claude Code, OpenCode and oh-my-pi model, and an agent to its own model, else $RESEARCH_HARNESS_MODELS, else models.toml beside the profile; examples/models.toml shows the layout.

verbdoes
installthe Julia environment of the scripts, the Claude Code layer with the sections permissions, hooks, sandbox and modelSettings of settings.json, the OpenCode configuration, and the oh-my-pi permission layer, instructions, rules, agents, models and MCP entry
permissionsthe OpenCode permission block and path-guard list, from the settings template
settings <sub>measure and check the Claude Code settings: surface, compare, twins, domains, selftest
githooks, wiki-lint-hook, workflowsthe shared git hooks and GitHub workflows, into every repository of the research tree
push-all, ci-protectionpush every repository ahead of its upstream; protect every default branch
formatJuliaFormatter over every tracked .jl file of the tree
trustClaude Code workspace trust for every repository of the tree
render, get, leaks, testrender a template with the profile, read a profile value, search for personal strings, run the tool's own cases
skill-triggersthe triggering test of the skills: whether each skill loads on the queries of tests/skill-triggers/<skill>.toml; --skill <name>, which can repeat, limits it to those skills; --apply --model <alias> runs one claude -p session of 3 turns per query, at the user's cost

development.md describes the cases of harness test, and architecture.md the Claude Code layer that harness install writes.

The Julia environment ​

The Julia scripts load their packages from Project.toml, which harness install --apply instantiates in ~/.local/share/research-harness/julia/; no caller needs --project.