Your name. Your AI.
brew tap eyelock/tap && brew install ynh
ynh install github.com/eyelock/ynh
ynh-guideThat gets you a guided session that teaches you ynh — and helps you create your own harness. Once you have one:
ynh install github.com/myorg/david
daviddavid is now a command. It knows your skills, your team's rules, your coding standards. It works on Claude today. Switch to Codex with -v codex: same harness, but Codex does not yet get everything (see Known gaps).
You become a command. Not "claude with some config files." A named identity that carries your entire AI working environment — tools, standards, style — all behind your name.
david # your configured AI
david "review this PR" # it knows how you review
david -v codex # same harness, different vendorCompose from anywhere. Cherry-pick skills from community repos, your team's private config, open-source libraries — and mix them with your own. Like a package manager for AI capabilities, backed by Git.
ynh claims more than each vendor yet gets. In v0.16.0:
- Codex does not yet receive commands. Hooks and session context reach it under
ynh runfor an accepted harness only, not underynh agent run(Codex hook trust). Instructions (written toAGENTS.md), rules (folded into them), MCP servers, skills, agents, focuses and profiles do. Underynh run, Codex starts in the run directory without-C, so the project's ownAGENTS.mdis never read. - Rules reach Claude Code, Codex and Copilot only by being folded into their instructions under
ynh run: always on, with no path scoping. - OpenCode: delegates cannot run as subagents (a harness's own agents can),
on_session_startdoes not fire,on_session_endcannot fire (OpenCode has no such event, a vendor limit), session context is not injected, and workspace folders are not granted.ynd export -v opencodedrops delegates silently. - Cursor: workspace folders are not granted, and print mode skips
before_promptandon_stop. - Delegates carry only their instructions on Codex, Cursor and Copilot. On Claude Code a delegate also carries its MCP servers, not its hooks or workspace. A delegate does not run on OpenCode. "A full harness" holds for includes, not yet for delegates.
- Resume: Cursor and Copilot refuse a prompt on resume. On Codex a resume with a prompt passes workspace folders as
writable_roots, which takes effect only under theworkspace-writesandbox (ynh warns on stderr otherwise; ynh does not change Codex's sandbox, andcodex execdefaults to read-only). - Telemetry:
ynh runemits none on any vendor; onlyynh agent rundoes. - Project instructions (the project's own
AGENTS.mdorCLAUDE.mdunderynh run) are unverified on every vendor except Codex, where they are not read.
These are fixed in v0.17.0 (parity) and later, except what a vendor cannot do. See ynh #679.
# Install ynh
brew tap eyelock/tap && brew install ynh
# Try the ynh harness — it teaches you ynh
ynh install github.com/eyelock/ynh
ynh-guideInside the session, use /ynh-create-harness to build your own. Or do it manually:
# Create a harness
mkdir -p david/.agents/harness && cat > david/.agents/harness/plugin.json << 'EOF'
{"name":"david","version":"0.1.0","default_vendor":"claude"}
EOF
# Install and run
ynh install ./david
davidAdd skills, agents, rules, and commands to the harness directory. Pull from Git repos. Compose across sources. Switch vendors. Delegate to team harnesses.
Agent = Model + Harness. Weak results are usually harness problems, not model problems.
The term "harness" was formalized by Martin Fowler and adopted by OpenAI and Anthropic. A harness is everything in an AI coding agent except the model itself — the skills, rules, context, and constraints that shape its behavior.
ynh manages the guide layer of that harness: the proactive steering that happens before the agent acts. One harness definition, assembled for Claude, Codex, Cursor, Copilot or OpenCode. Read more in Harness Engineering.
Build: create harnesses with skills, agents, rules, and commands. Pull artifacts from any Git repo with cherry-picking (pick). Declare hooks, MCP servers, environment-specific profiles, focuses (named prompt-and-profile bindings for repeatable runs) and sensors, the observation surfaces that loop drivers consume between agent turns. Let a harness request sibling workspace folders that you grant with an allow-list or ynh trust accept.
Refine — Scaffold with ynd create, lint and validate with ynd lint/ynd validate, compress prompts with ynd compress, preview assembled output with ynd preview, diff across vendors with ynd diff. Edit focuses, profiles, hooks, MCP servers, includes, and delegates from the CLI with ynh focus/profile/hook/mcp/include/delegate — the same surface a GUI consumer drives.
Share: export as vendor-native plugins with ynd export, or as one portable Agent Plugins package with ynd export --format agent-plugin. Build team marketplaces with ynd marketplace build. Publish to registries. Bake harnesses into Docker images for CI/CD.
Full docs at eyelock.github.io/ynh:
- Getting Started — Create and run your first harness
- Harness Engineering — Why harness management matters
- Tutorials — 18 progressive tutorials from first harness to sensors
- Artifacts Guide — Skills, agents, rules, commands
- CLI Reference — Full command reference for ynh and ynd
- Agent Skills Standard — Cross-platform spec, discovery paths, catalog budget
- Vendor Support — Claude, Codex, Cursor, Copilot and OpenCode capabilities