One private repo for all your coding agents.
dotagents is a public CLI that keeps your skills, MCP servers, hooks,
agent roles, root instructions, and memory tooling in a private
~/.agents repository, then syncs each supported surface into its
harness-native format.
$ dotagents status canonical config: ~/.agents (user owned) skills synced native skill roots agent roles synced native role formats MCP servers synced targeted config entries hooks synced supported lifecycle events root instr. synced AGENTS.md linked per harness memory tools built rem + knowledge-sync to ~/.local/bin
Supported harnesses
Managed harnesses get each surface they natively support. Compatibility harnesses get documented paths.
Get started
Install the public CLI, then create a private canonical configuration you control.
Install dotagents
Homebrew, npm, release binary, or Go. No personal configuration ships with the tool.
$ brew install yourconscience/tap/dotagents # or npm install -g @your_conscience/dotagents # or go install github.com/yourconscience/dotagents/cmd/dotagents@latest
Set up your home
Detect harnesses, import existing content by copy, offer git init, and run the first native sync. Removals are previewed per harness before anything is touched.
$ dotagents setup $ git -C ~/.agents remote add origin <your-private-repo>
Then add a skill and sync it everywhere:
$ dotagents skill new my-skill $ dotagents sync synced configured surfaces to detected harnesses
Author the canonical file with dotagents config in the terminal or dotagents view in a loopback browser. The effective local overlay stays separate, and sync is always an explicit reviewed action.
What syncs
Not just skills. The full config surface that fragments across agents.
Sync surface by harness
| Harness | Skills | Agent roles | MCP | Hooks | Root instructions |
|---|---|---|---|---|---|
| Amp | yes, config | --⁑ | yes | --⁑ | AGENTS.md |
| Claude Code | yes | yes | yes | yes | CLAUDE.md shim |
| Codex | yes | yes | yes | yes | AGENTS.md |
| Factory Droid | yes | yes | yes | yes | AGENTS link |
| Hermes | yes | -- | yes | yes | native ctx |
| OpenCode | yes† | yes | yes | -- | native AGENTS.md |
| Qwen Code | yes | yes | yes | yes | QWEN.md link |
| OMP (pi fork) | yes | yes | yes | --‡ | AGENTS.md |
| Pi* | yes | yes* | yes* | -- | skills + MCP* |
* Vanilla Pi uses pi-subagents for managed roles and pi-mcp-adapter for MCP and Agent Plugin projection. OMP remains a separate target.
† OpenCode reads ~/.agents/skills/ natively — skills need no mirror when the config root is ~/.agents. Its only hook surface is a JS plugin API.
‡ OMP has no managed hook surface in dotagents.yaml yet; register memory hooks manually if needed.
⁑ Amp's hook and role surfaces use plugin-based models incompatible with dotagents' script-based hooks and per-agent role files.
Landscape
Project-level generators win on tool breadth. dotagents is user-level: one private repo across machines, nine targets deep, pinned and audited externals, review-first memory (rem) built in.
How it compares
| dotagents | rulesync | ruler | openskills | |
|---|---|---|---|---|
| Scope | user-level | project-level | project-level | user + project |
| Skills sync | yes | yes | experimental | yes |
| MCP sync | yes | yes | yes | no |
| Hooks sync | yes | yes | no | no |
| Agent roles | rendered native | yes | experimental | no |
| Pinned + audited externals | lock file + audit | no pinning | no pinning | tracks source, no pin |
| Harness coverage | 9 deep | broad | broad | narrow |
| Install | curl / mise / go | npm / brew | npm | npm |
dotagents' own harness coverage is shown above; competitor breadth is described qualitatively, since their exact tool counts drift over time. Different tools for different jobs: rulesync and ruler generate per-project config for many tools; dotagents carries one personal setup deeply into the harnesses you live in.