What is a harness adapter?#
A harness adapter is a directory of instructions, skills, roles, or tools that an existing agent consumes. It also carries a training specification: which files a learner may edit, which must remain fixed, and how a candidate is checked. Training changes the directory rather than the agent’s model weights.
You can write an adapter manually, train it from task feedback, or start from an included adapter.
The consumption end: a plugin definition, plus an optional service#
A minimal context adapter contains ADAPTER.md. More capable adapters export skills, roles, and callable tools:
adapter/
adapter.yaml template identity, exports, learnable/fixed rules
ADAPTER.md instructions consumed by the acting agent
EVOLVER.md editing guidance consumed by the learner
skills/ optional reusable procedures
agents/ optional role definitions
tools.py optional declared tool implementations
The acting pipeline decides how these exports reach its agent. A custom model loop can read the context and call
declared tools through Adapter. A supported host can receive generated workspace files or a converted plugin.
A tool can depend on a separate service, as in Lean collaboration; the generic
manifest-driven service lifecycle remains a proposal.
Two ways to use an adapter#
Route |
Output |
Use when |
|---|---|---|
|
A Codex, Claude Code, or Pi workspace |
You want project instructions, skills, roles, and tool configuration |
|
A native plugin package for a supported target |
You want host-native packaging and can accept that target’s export limits |
Custom pipeline |
Your agent receives the exports directly |
You own the acting loop or need dynamic integration |
hermit deploy --adapter DIR --workspace WS --host codex
hermit convert --adapter DIR --output OUT --target claude-code
Both commands exist in this checkout. They generate files; they do not launch an acting agent or prove that the adapter improves it. Plugin conversion can refuse unsupported exports. See the host capability matrix before choosing a target.
Workspace tool configuration refers to local source paths. Plugin conversion embeds an adapter copy. Tool consumers need the framework and the adapter’s Python dependencies wherever tools execute.
The training end: built-in training support#
The template declares the editable scope in adapter.yaml. The learner reads EVOLVER.md and task feedback,
then edits a working adapter. The Trainer checks those files against the template, records the resulting version,
and supplies the accepted adapter to the next rollout batch.
Training element |
Purpose |
|---|---|
|
Files the learner may change, with optional format and size limits |
|
Files that must stay as the template shipped them |
|
Optional template-owned checker in addition to built-in file checks |
|
Helpers available to the learner, not acting-agent exports |
Adapter tree |
Git history, run branches, checkpoint and final tags |
|
Framework-written provenance and recorded evaluation |
A method may use validation to select candidates, but structural acceptance by the Trainer is not itself a performance gate. Evaluate the selected adapter on held-out tasks.
Where this stands#
The framework supports the context/skills/roles/tools contract, training/versioning, workspace deployment,
native plugin conversion, and a per-session stdio MCP tool server. It does not implement the proposed manifest
serve section, generic standalone service launch/relay lifecycle, or dynamic context delivery in ordinary host
plugins. See Compatibility.
Continue with Quick Start for an executable learning cycle, Using and training adapters for concrete handoffs, or adapter.yaml for the manifest contract.