A unified launcher for AI coding agent harnesses
Start Claude Code, Copilot CLI, Kiro CLI, or Pi from a single command.
One config. Every harness.
$ uv tool install harnyard
AI coding tools are converging on the same concepts: skills, plugins, MCP servers, hooks, and project context files. But each tool looks for config in different places and uses slightly different formats.
Harnyard manages the translation layer so you can maintain one source of truth and launch any harness.
hy claude
Config lives in .claude/
hy copilot
Reads .claude/ natively
hy kiro
Symlinks from .claude/
hy pi
Symlinks from .claude/
All your skills, plugins, agents, and context live under .claude/
Harnyard knows where each tool looks for its config files
hy setup <harness> creates symlinks so each tool finds what it needs
hy <harness> starts the tool with the right flags and environment
# Install $ uv tool install harnyard # or: pip install harnyard # Run without installing $ uvx harnyard list # Start a harness in the current project $ hy claude # Start Claude Code $ hy copilot # Start Copilot CLI $ hy kiro # Start Kiro CLI $ hy pi # Start Pi Coding Agent # Setup symlinks for a harness $ hy setup kiro # Create .kiro/ symlinks pointing to .claude/ $ hy setup --all # Setup all harnesses # Show what each harness sees $ hy status # Show config mapping for all harnesses
.claude/ # Canonical (Claude Code + Copilot CLI read natively) CLAUDE.md # Project context settings.json # Hooks, permissions skills/ # Skills (SKILL.md format) agents/ # Agent definitions plugins/ # Plugin manifests .kiro/ --> symlinks # Created by: hy setup kiro steering.md --> ../.claude/CLAUDE.md skills/ --> ../.claude/skills/ .pi/ --> symlinks # Created by: hy setup pi agent/extensions/ --> ../.claude/plugins/ mcp.json --> ../.claude/mcp.json
Other harness configs are derived, never canonical
hy setup only creates symlinks, never modifies .claude/
Each harness still works standalone if you prefer manual config
Contributions welcome for new harnesses