One config to rule them all. Practical standard layer for multi-LLM development.
Обзор
One config to rule them all. Practical standard layer for multi-LLM development.
README
agents
One config to rule them all.Practical standard layer for multi-LLM development.
Quick Start · Integrations · Commands · FAQ
The Problem
Every AI coding tool wants its own config format:
| Codex | Claude Code | Claude Desktop | Gemini | Cursor | Copilot VS Code | Copilot CLI | Antigravity | Windsurf | OpenCode | Junie | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Config | .codex/config.toml |
CLI commands | Global claude_desktop_config.json |
.gemini/settings.json |
.cursor/mcp.json |
.vscode/mcp.json |
.mcp.json |
.agents/mcp_config.json |
Global mcp_config.json |
opencode.json |
.junie/mcp/mcp.json |
| Instructions | AGENTS.md |
CLAUDE.md |
— | AGENTS.md |
.cursorrules |
— | AGENTS.md |
AGENTS.md |
AGENTS.md |
AGENTS.md |
AGENTS.md |
| Format | TOML | JSON (via CLI) | JSON | JSON | JSON | JSON | JSON | JSON | JSON | JSON | JSON |
Result: Duplicated configs, team drift, painful onboarding.
agents gives you one source of truth in .agents/ and syncs MCP servers, skills, and instructions to every tool automatically.
For Claude Code, it keeps AGENTS.md canonical and generates a minimal root CLAUDE.md wrapper (@AGENTS.md) when the Claude integration is enabled.
For Claude Desktop, it syncs local stdio MCP servers into the global claude_desktop_config.json while preserving non-agents entries already in that file. Remote Claude MCP servers are managed by Claude custom connectors, not by this file.
Quick Start
# 1. Install
npm install -g @agents-dev/cli
# 2. Interactive setup — picks integrations, adds MCP servers, syncs everything
agents start
# 3. Re-sync whenever config changes
agents sync
That’s it. Your .agents/agents.json is now the single source of truth.
Using agents in this repository
This repository uses @agents-dev/cli to keep MCP servers, skills, and instructions aligned across supported AI tools.
Quick commands
agents status
agents mcp add
agents mcp test --runtime
agents sync
agents sync --check
One MCP setup for all tools
Add a server once in .agents/agents.json, then run agents sync to materialize it for enabled integrations.
References
- MCP Protocol Docs: https://modelcontextprotocol.io
- MCP servers catalog: https://mcpservers.org
- Project examples:
docs/EXAMPLES.md
Supported Integrations
Antigravity note: agents manages the workspace MCP config used by Antigravity CLI and materializes a physical flat copy at .gemini/skills when Antigravity is enabled. Nested source skills remain under .agents/skills; duplicate skill names are rejected for the flat bridge. Global Antigravity editor/CLI profile files are left user-owned.
Project Layout
your-project/
├── AGENTS.md ← Canonical instructions for all tools
├── CLAUDE.md ← Generated Claude wrapper (`@AGENTS.md`)
├── .agents/
│ ├── agents.json ← MCP servers & config (commit this)
│ ├── local.json ← Secrets & overrides (gitignored)
│ ├── mcp_config.json ← Generated Antigravity CLI MCP (gitignored in source-only mode)
│ ├── skills/ ← Reusable workflow definitions
│ │ └── my-skill/SKILL.md
│ └── generated/ ← Auto-generated artifacts (gitignored)
│ ├── codex.config.toml
│ ├── claude-desktop.mcp.json
│ ├── copilot.cli.mcp.json
│ ├── gemini.settings.json
│ ├── antigravity.mcp_config.json
│ ├── cursor.mcp.json
│ ├── windsurf.mcp.json
│ ├── opencode.json
│ └── ...
│
│ ┌─── Generated by `agents sync` ───┐
├── .codex/config.toml │ Materialized tool configs
├── .gemini/settings.json │ (gitignored in source-only mode)
├── .cursor/mcp.json │
├── .vscode/mcp.json │
├── .mcp.json │ Copilot CLI
├── .agents/mcp_config.json │ Antigravity CLI
├── opencode.json │
├── .claude/skills/ → .agents/skills │ Claude workspace bridges
├── .cursor/skills/ → .agents/skills │
├── .gemini/skills/ │ Gemini symlink; physical flat copy for Antigravity
├── .windsurf/skills/ → .agents/skills│
└── .junie/skills/ → .agents/skills │
Git strategy: By default only
.agents/agents.json,.agents/skills/, andAGENTS.mdare committed. GeneratedCLAUDE.mdand tool-specific outputs are gitignored in source-only mode and regenerated withagents sync. Claude Desktop MCP is materialized into the user’s globalclaude_desktop_config.json, not into the project tree.
Command Overview
Setup & Sync
| Command | Description |
|---|---|
agents start |
Interactive setup wizard — integrations, MCP servers, skills, first sync |
agents start --inject-docs |
Also upsert an agents guide block in README.md (+ CONTRIBUTING.md if present) |
agents start --reinit |
Reinitialize existing .agents/agents.json with fresh wizard/default choices |
agents init |
Scaffold .agents/ directory without guided setup |
agents sync |
Regenerate and materialize all tool configs |
agents sync --check |
Strict read-only drift check — exits 2 if config is out of sync |
agents watch |
Auto-sync on .agents/ file changes (--once exits non-zero on sync failure) |
Diagnostics
| Command | Description |
|---|---|
agents status |
Show integrations, MCP servers, file states, and live probes |
agents status --fast |
Skip external CLI probes for quicker output |
agents doctor |
Validate configs, check for issues, suggest fixes |
agents doctor --fix |
Auto-fix what can be fixed |
agents update |
Check for newer CLI version on npm |
MCP Server Management
| Command | Description |
|---|---|
agents mcp add |
Add a server interactively |
agents mcp add |
Import a server from URL (mcpservers.org, GitHub, etc.) |
agents mcp import --file config.json |
Bulk import from JSON/JSONC file |
agents mcp list |
List all configured servers |
agents mcp remove |
Remove a server (--no-sync skips auto-sync for add/import/remove) |
agents mcp test |
Validate server definitions |
agents mcp test --runtime |
Live connectivity check via tool CLIs |
Integrations
| Command | Description |
|---|---|
agents connect --llm cursor,claude |
Add integrations to the currently enabled set |
agents disconnect --llm codex |
Disable integrations |
agents reset |
Remove generated files, keep .agents/ |
agents reset --hard |
Full cleanup — removes all agents-managed setup |
How It Works
┌──────────────────────────────────────────────────────────────┐
│ agents sync │
├──────────────────────────────────────────────────────────────┤
│ │
│ .agents/agents.json ─── merge ──→ Resolved ──→ Codex │
│ (shared) ↑ Registry TOML │
│ │ │ │
│ .agents/local.json ──────┘ ├────────→ Claude │
│ (secrets) │ CLI + root │
│ │ CLAUDE.md │
│ ├────────→ Claude │
│ │ Desktop │
│ │ Global JSON│
│ ├────────→ Gemini │
│ ${ENV_VARS} ─── resolve ─────────────┤ JSON │
│ ${PROJECT_ROOT} ├────────→ Cursor │
│ │ JSON + CLI │
│ ├────────→ Copilot │
│ │ VS Code + CLI │
│ ├────────→ Antigravity│
│ │ .agents/ │
│ │ mcp_config │
│ ├────────→ Windsurf │
│ │ Global MCP │
│ ├────────→ OpenCode │
│ │ opencode.json │
│ └────────→ Junie │
│ .junie/mcp/ │
│ │
│ .agents/skills/ ── symlink ──→ .claude/skills │
│ .cursor/skills │
│ .gemini/skills │ (flat copy for Antigravity)
│ .junie/skills │
│ .windsurf/skills │
└──────────────────────────────────────────────────────────────┘
- Load — reads
.agents/agents.json+ merges secrets from.agents/local.json - Resolve — expands
${PROJECT_ROOT},${ENV_VAR}placeholders, filters byenabledandrequiredEnv - Route — sends each server to its target integrations (or all, if no
targetsspecified) - Generate — renders tool-specific config formats (TOML for Codex, JSON for others)
- Materialize — writes configs atomically (project-local and global targets), calls CLIs for Claude Code/Cursor, writes global configs with scoped merge/cleanup, and manages Claude Code’s root
CLAUDE.mdwrapper - Bridge skills — creates symlinks from tool directories to
.agents/skills/where needed; Antigravity receives a physical flat copy at.gemini/skillsso nested skills are discoverable
MCP Server Examples
Add from mcpservers.org
agents mcp add https://mcpservers.org/servers/context7-mcp
Add a stdio server
agents mcp add my-server \
--command npx \
--arg @my-org/mcp-server \
--arg /path/to/project
Add an HTTP server with secrets
agents mcp add company-api \
--url "https://api.company.com/mcp" \
--secret-header "Authorization=Bearer YOUR_API_TOKEN"
Secrets are automatically detected and split: placeholders go to
agents.json(committed), real values tolocal.json(gitignored).
Target specific tools
# Only for Claude Code
agents mcp add claude-only-server --url "https://..." --target claude
# Only for Claude Desktop
agents mcp add desktop-only-server --command npx --arg @my-org/server --target claude_desktop
# Only for Cursor and Copilot in VS Code
agents mcp add ide-server --command ide-mcp --target cursor --target copilot_vscode
# Only for Copilot CLI
agents mcp add copilot-cli-server --command npx --arg @my-org/server --target copilot_cli
Security
| What | Where | |
|---|---|---|
| 🔓 | Server definitions, team config | .agents/agents.json — committed |
| 🔒 | API keys, tokens, secrets | .agents/local.json — gitignored |
How secrets work:
- When you add a server,
agentsdetects secret-like values (API keys, tokens, JWTs) - Secrets are moved to
local.jsonand replaced with${PLACEHOLDER}inagents.json agents doctorwarns if it finds literal secrets in committed config- All env keys and header names are validated to prevent injection
Team Workflow
Lead sets up the project:
agents start
agents mcp add https://mcpservers.org/servers/context7-mcp
agents mcp add company-api --url "https://api.company.com/mcp" \
--secret-header "Authorization=Bearer YOUR_API_TOKEN"
git add .agents/agents.json .agents/skills/ AGENTS.md && git commit -m "Add agents config"
New member onboards:
git clone && cd
agents start # Preserves team config and syncs local tool files
# Add your local secrets in .agents/local.json if required by project MCP servers
One command. Same MCP servers, same skills, same instructions. No drift.
FAQ
Docs
| Resource | |
|---|---|
| 📖 | Usage Examples — solo dev, teams, monorepos, scripting |
| 🏗️ | System Architecture — sync internals, file formats, security model |
| 📋 | Changelog — version history and migration notes |
Community
Установка
This server does not publish a one-line install command.
Open the repository installation guide