Skip to content

Harnesses

A harness is an agent CLI agedum drives. Each has its own page documenting two things:

  • Wrapper resolution — where wrapper mode lands the agent-neutral source (which files are injected, which are read in place, any appended flags).
  • Provider config — how to write a provider config for it (the config block mapping, with a working recipe).
Harness Reads project AGENTS.md Global instructions land at extra_args Provider token
Claude injected → CLAUDE.md ~/.claude/CLAUDE.md none ANTHROPIC_AUTH_TOKEN / ANTHROPIC_API_KEY env
kimi read in place a generated --agent-file --agent-file env (requiredEnv export)
opencode read in place ~/.config/opencode/AGENTS.md none OPENCODE_CONFIG_CONTENT doc (or own auth)
Cline read in place ~/.agents/AGENTS.md none --key argv flag
reasonix read in place ~/.config/reasonix/AGENTS.md none env via api_key_env (requiredEnv export)
aider injected → --read a second --read --read (×N) env (litellm, requiredEnv export)
pi read in place ~/.pi/agent/AGENTS.md none env by name (requiredEnv export)
codex read in place ~/.codex/AGENTS.md none env via env_key (requiredEnv export)

Skills are binds at the harness's own skills dir, compiled with the matching SKILL.<harness>.md overlay — in every harness except aider, which has no skills mechanism (agedum injects only its AGENTS.md, via --read). The shared mechanics — scopes, overlays, the namespace launch — live in Wrapper mode and Source & scopes.

Adding a harness

A new harness is a single compiler function compile_<harness>(project, global_, dest) -> Plan plus, for provider mode, an env/command builder. The launcher and safety rules are shared, so it inherits the namespace, git-safety, and cleanup for free. See Internals.