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.
Not every vendor gets every feature of a harness yet: some gaps are ynh's to fix, and some are things a vendor cannot do. Vendor Feature Parity has the matrix for ynh run, ynh agent run and ynd export, and says for each gap whose it is and the evidence, with its tracking issue where one exists.
On Cursor, grant Workspace Trust once for each harness: ynh starts Cursor in that harness's run directory, and a one-shot run stops until it is trusted. Vendor Support says what to run.
# 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