Skip to content

Research Harness

The configuration, the safety settings and the working environment for coding agents on research software.

The tools of the harness are for Julia, but most of its ideas apply to any language. Dependencies says what needs Julia.

How the parts fit together ​

The research tree, the components and the frontendsThe harness surrounds three parts. At the top is the research tree, with the library, the knowledge, the packages, the experiments, the projects and the papers. In the middle are the components: agents, skills, commands, rules, guard hooks, git hooks and workflows, scripts and settings. At the bottom are the frontends: Claude Code, OpenCode, oh-my-pi and Antigravity.Research HarnessThe research treeLibraryKnowledgePackagesExperimentsProjectsPapersThe componentsAgentsagents/Skillsskills/Commandscommands/Rulesrules/Guard hookshooks/Git hooks and workflowsgithooks/Scriptsscripts/Settingssettings/The frontendsClaude Code~/.claude/OpenCode~/.config/opencode/oh-my-pi~/.omp/agent/Antigravity~/.gemini/config/

The research tree, the components and the frontends. The research tree is where the work is, the components are what the harness supplies, and the frontends are the agents that read them. The figure shows the tree of the harness's author, as an example; your tree holds your own directories. The research tree describes the six directories and the components that serve each.

From the sources to the frontendsThe sources of this repository, the agents, skills, rules, commands and instructions, the guard hooks, the settings template and the adapters, and two private inputs, the profile with the model tables and the tree instructions, go into harness install. Its steps, in order: it reads the profile and the model tables, renders the sources into a plan for each frontend, installs the Julia packages for the Julia scripts, syncs the Python environment from uv.lock with uv, merges the settings template into ~/.claude/settings.json, writes the files of Claude Code into ~/.claude/ and then the stamp of that layer, and writes the files of OpenCode into ~/.config/opencode/, those of oh-my-pi into ~/.omp/agent/ and those of Antigravity into ~/.gemini/config/. harness install is the one install path of every frontend.1Inputs2Install3FrontendsPrivate, on your machineProfile and model tables~/.config/research-harness/Tree instructionsThe sources, in this repositoryAgents, skills, rulescommands, instructionsGuard hookshooks/Adapters of the frontendsadapters/Settings templatesettings/harness installRead the profileand the model tablesRender the sourcesa plan for each frontendInstall Julia packagesfor the Julia scriptsSync Python environmentfrom uv.lock, with uvMerge the settingsinto ~/.claude/settings.jsonWrite Claude Codethe files of ~/.claude/Write the stampof the Claude Code layerWrite the other layersOpenCode, oh-my-pi, AntigravityOpenCode~/.config/opencode/oh-my-pi~/.omp/agent/Antigravity~/.gemini/config/Claude Code~/.claude/

From the sources to the frontends. harness install writes the configuration of each frontend from the sources and your private files. Architecture describes the layers and what each frontend receives.