agentsync
One source of truth for your AI-agent instructions. Stop hand-syncing CLAUDE.md, AGENTS.md, Cursor rules, and Copilot instructions — and fail CI when they drift.
Every coding agent wants its own file: CLAUDE.md, AGENTS.md, .cursor/rules/*.mdc,
.github/copilot-instructions.md. Teams keep duplicate copies that silently diverge —
the most-requested gap in the ecosystem.
agentsync generates them all from one source and gives you a CI check that fails the
build the moment they fall out of sync.
pipx install mujin-agentsync # command: agentsync
agentsync sync # AGENTS.md -> CLAUDE.md (zero config), or per .agentsync.json
agentsync check # exit 1 if any generated file has drifted (drop into CI)
Zero config
If you have an AGENTS.md (or CLAUDE.md), agentsync sync mirrors it to the other one.
That's the whole "Claude Code won't read my AGENTS.md" problem solved in one command.
Find what you already have — discover
Not sure which agent-config files are scattered around your repo? Let agentsync find them:
agentsync discover # scan the project tree
agentsync discover --global # also check ~/.claude, ~/.codex, …
found 5 agent-config file(s):
AGENTS.md AGENTS.md standard (Codex, Gemini, Cursor, Zed, …)
CLAUDE.md Claude Code
.cursor/rules/main.mdc Cursor
.github/copilot-instructions.md GitHub Copilot
packages/api/CLAUDE.md Claude Code
It recognizes CLAUDE.md, AGENTS.md, GEMINI.md, Cursor .mdc rules, Copilot
instructions, and legacy .cursorrules/.clinerules/.windsurfrules — and skips
node_modules, .git, etc. (Pattern-based on your project tree, not a full-disk crawl.)
Choose your source of truth
You decide which file is canonical. Precedence: --source flag › source in
.agentsync.json › auto (first of AGENTS.md, CLAUDE.md).
agentsync sync --source CLAUDE.md # make CLAUDE.md the source, generate the rest
More targets — .agentsync.json
{
"source": "AGENTS.md",
"targets": [
{ "path": "CLAUDE.md", "format": "markdown" },
{ "path": ".github/copilot-instructions.md", "format": "markdown" },
{ "path": ".cursor/rules/agents.mdc", "format": "cursor" }
]
}
agentsync init writes a starter config. cursor targets get the right .mdc frontmatter
(alwaysApply: true); markdown targets are mirrored with a "generated — don't edit" header.
CI drift gate
# .github/workflows/agent-config.yml
jobs:
agentsync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with: { python-version: "3.11" }
- run: pipx install mujin-agentsync
- run: agentsync check # fails the build if a generated file was hand-edited
Now nobody can quietly edit CLAUDE.md and let AGENTS.md rot — the source stays canonical.
Why this design
- Deterministic. Targets are reproducible from the source, so
checkis exact — no guessing, no LLM, no network. Zero dependencies (Python ≥3.9). - Source-first. You pick the one file you actually maintain; everything else is generated.
- Local and offline — it reads and writes files, nothing else.
Next to this
Once your agent config is consistent, audit it for security & quality with
agentaudit (pipx install mujin-agentaudit) —
it flags curl|bash, secret access, prompt injection, and more in skills / MCP servers / plugins.
Built by Mujin Labs — tooling for the autonomous-agent era. MIT.
Release files for mujin-agentsync 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mujin_agentsync-0.2.0.tar.gz | 8.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mujin_agentsync-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.6 kB
Release files / mujin_agentsync-0.2.0.tar.gz
| Download URL | mujin_agentsync-0.2.0.tar.gz |
|---|---|
| Size | 8.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
92b70bae10d2701e4e0b54fa27f0c5173e7e04fbb34d340ddc6d79d5d89d4dc8
|
|
BLAKE2b-256 checksum How to use checksums |
86d0ec3be450e8a6dc85730fe3c18fc30d59a0011c845cb5e640f5be931edeb5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.3
|
Release files / mujin_agentsync-0.2.0-py3-none-any.whl
| Download URL | mujin_agentsync-0.2.0-py3-none-any.whl |
|---|---|
| Size | 9.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8ebde98242fbf59184a01327aad1d68bd67ae70a9d70bf03156db50bcc6dfe30
|
|
BLAKE2b-256 checksum How to use checksums |
791fbac90ddb34c8aced87cb1f88edc097720edc006e1823609c3a72cc1a9390
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.3
|