One local dashboard for every AI coding agent's MCP servers and skills: Claude Code, Codex, Cursor, Copilot, Antigravity, Kiro, opencode, Goose, Zed and 20+ more. It runs on localhost only and never sends anything to the cloud.
npx aidit startThat one command scans your machine, finds every AI agent it knows about, and opens a dashboard. From there you can read, edit, diff and sync MCP server configs and Agent Skills across all of them.
Every agent keeps MCP servers in its own file, and the formats differ:
mcpServersin JSON for Claude, Cursor, Kiro and othersserversfor VS Codemcpfor opencode, Kilo Code and Crush[mcp_servers]TOML tables for Codexcontext_serversfor Zedextensions:YAML for Goose- a YAML list for Continue
Skills are spread across ~/.claude/skills, ~/.agents/skills, ~/.cursor/skills, ~/.kiro/skills and more. If you run three agents, you keep three configs in sync by hand.
aidit shows all of it in one window. It also writes changes back in each agent's own format, keeping your comments and formatting.
- Agent overview. See every agent installed on your machine and the files that belong to it.
- MCP editor that understands each dialect. Add, edit, rename, enable/disable and delete servers in nine config layouts across JSON, JSONC, YAML and TOML.
- JSON/JSONC edits are surgical, so comments and key order survive.
- Diff & Sync. Compare two agents side by side and copy servers between them. Copying from Cursor to Codex is translated from JSON to TOML for you.
- Skills browser. View, edit and create
SKILL.mdskills in every agent's skills folders, including the shared~/.agents/skills. - Safe writes. Every write follows the same steps: validate, back up, write atomically, log. Each file keeps its own history and can be restored with one click.
- Live updates. Edits made on disk show up in the UI immediately, over WebSocket.
- Path registry. Comes with ~100 built-in paths. You can add your own paths per project or per OS, and import or export the registry.
- Command palette for keyboard-driven navigation.
| Agent | MCP config | Format / key | Skills |
|---|---|---|---|
| Claude Code | ~/.claude.json, .mcp.json |
JSON mcpServers |
~/.claude/skills, .claude/skills |
| Claude Desktop | claude_desktop_config.json (macOS, Windows via WSL) |
JSON mcpServers |
— |
| OpenAI Codex | ~/.codex/config.toml, .codex/config.toml |
TOML mcp_servers |
~/.agents/skills, ~/.codex/skills |
| Google Antigravity | ~/.gemini/config/mcp_config.json, .agents/mcp_config.json |
JSON mcpServers (serverUrl) |
~/.gemini/config/skills |
| Gemini CLI (legacy) | ~/.gemini/settings.json, .gemini/settings.json |
JSON mcpServers (httpUrl) |
~/.gemini/skills |
| GitHub Copilot CLI | ~/.copilot/mcp-config.json, .github/mcp.json |
JSON mcpServers |
~/.copilot/skills, .github/skills |
| VS Code (Copilot) | user mcp.json, .vscode/mcp.json |
JSON servers |
— |
| Cursor | ~/.cursor/mcp.json, .cursor/mcp.json |
JSON mcpServers |
~/.cursor/skills, .cursor/skills |
| Devin Desktop (Windsurf) | ~/.config/devin/mcp_config.json, legacy ~/.codeium/windsurf/ |
JSON mcpServers (serverUrl) |
~/.config/devin/skills, .devin/skills |
| Kiro | ~/.kiro/settings/mcp.json, .kiro/settings/mcp.json |
JSON mcpServers |
~/.kiro/skills, .kiro/skills |
| Amazon Q Developer | ~/.aws/amazonq/mcp.json, .amazonq/mcp.json |
JSON mcpServers |
— |
| Cline | CLI + VS Code extension settings | JSON mcpServers |
~/.cline/skills, .cline/skills |
| Roo Code (archived) | VS Code extension settings, .roo/mcp.json |
JSON mcpServers |
~/.roo/skills, .roo/skills |
| Kilo Code | ~/.config/kilo/kilo.jsonc, .kilo/kilo.jsonc |
JSONC mcp |
— |
| Continue | ~/.continue/config.yaml, .continue/config.yaml |
YAML mcpServers list |
— |
| Zed | ~/.config/zed/settings.json |
JSONC context_servers |
— |
| opencode | ~/.config/opencode/opencode.json[c], opencode.json |
JSON mcp |
~/.config/opencode/skills, .opencode/skills |
| Crush | ~/.config/crush/crush.json, .crush.json (legacy JSON) |
JSON mcp |
~/.config/crush/skills, .crush/skills |
| Amp | ~/.config/amp/settings.json, .amp/settings.json |
JSON amp.mcpServers |
~/.config/amp/skills |
| Goose | ~/.config/goose/config.yaml |
YAML extensions |
.goose/skills |
| Qwen Code | ~/.qwen/settings.json, .qwen/settings.json |
JSON mcpServers |
— |
| Factory Droid | ~/.factory/mcp.json, .factory/mcp.json |
JSON mcpServers |
~/.factory/skills, .factory/skills |
| Augment (Auggie) | ~/.augment/settings.json |
JSON mcpServers |
— |
| JetBrains Junie | ~/.junie/mcp/mcp.json, .junie/mcp/mcp.json |
JSON mcpServers |
— |
| Warp | ~/.warp/.mcp.json, .warp/.mcp.json |
JSON mcpServers |
— |
| Mistral Vibe | ~/.vibe/config.toml, .vibe/config.toml |
TOML [[mcp_servers]] |
~/.vibe/skills, .vibe/skills |
| Kimi Code | ~/.kimi/mcp.json |
JSON mcpServers |
— |
| Grok Build | ~/.grok/config.toml, .grok/config.toml |
TOML mcp_servers |
~/.grok/skills |
| Trae | ~/Library/Application Support/Trae/User/mcp.json, .trae/mcp.json |
JSON mcpServers |
— |
| LM Studio | ~/.lmstudio/mcp.json |
JSON mcpServers |
— |
| Shared Agent Skills | — | — | ~/.agents/skills, ~/.config/agents/skills, .agents/skills |
Project paths resolve against the directory you run aidit from. Paths that are missing on your machine are skipped. You can add any other file under Settings → Paths: aidit detects its MCP layout from the content and the file name.
Is your agent missing, or has a path changed? Open an agent-support issue. Adding an agent usually takes three small edits; see CONTRIBUTING.md.
npx aidit start # no install needed
# or
npm install -g aidit
aidit startRequirements:
- Node.js 22.13 or later. aidit uses the built-in
node:sqlite, so nothing native has to compile. - macOS or Linux. Windows works through WSL.
To install from source:
git clone https://github.com/onurceri/aidit.git
cd aidit
pnpm install
pnpm build
node bin/aidit.js startaidit start # start the server and open the dashboard
aidit start --port 4000 # custom port (if it's taken, the next free one is used)
aidit start --no-open # don't open a browser
aidit start --token # require a random auth token for API requests
aidit scan > agents.json # print a JSON scan of all agents and exit
aidit --help | --versionThe dashboard is served at http://127.0.0.1:3001 by default.
| Environment variable | Purpose |
|---|---|
AIDIT_DATA_DIR |
Where aidit keeps its state (default ~/.config/aidit) |
XDG_CONFIG_HOME |
Base for $XDG_CONFIG_HOME paths (default ~/.config) |
EDITOR |
Editor used by "Open in editor" for skills |
┌─────────────────────┐ ┌──────────────────────────────┐
│ packages/frontend │ HTTP │ packages/backend │
│ React + Vite │ ◀────▶ │ Express on 127.0.0.1 │
│ Tailwind + Monaco │ /api │ scanner → dialects → writer │
│ │ /ws │ node:sqlite + chokidar │
└─────────────────────┘ └──────────────────────────────┘
│
▼
~/.config/aidit/
├── aidit.db # path registry, settings, scan + write history
├── backups/ # per-file backups before every write
└── token # only with --token
- Scanner. Resolves the path registry for the current OS and project, then parses each file (JSON, JSONC, YAML or TOML).
- Dialects (
packages/backend/src/scanner/dialects.ts). Each dialect decodes one agent's MCP layout into a common server model and encodes it back. One mutation API (POST /api/config/:id/servers) therefore works for every agent. - Safe writer. Validates, backs up, writes to a temp file next to the target and renames it into place. The file mode is preserved and every write is logged.
- Watcher. Pushes file changes to the UI over WebSocket.
aidit edits files that tell your agents which commands to run, so it is locked down:
- Localhost only. The server binds to
127.0.0.1and is never exposed to your LAN. - Blocks drive-by and DNS-rebinding attacks. Requests with a foreign
HostorOriginare rejected, and writes must beapplication/json. A website you visit can't reach your aidit and change your MCP config. WebSocket upgrades get the same checks. - Optional token auth.
aidit start --tokenrequires a bearer token on every API and WebSocket request. The CLI hands the token to the browser once, via the URL fragment. - No telemetry, no outbound requests. The editor (Monaco) is bundled with the app, not loaded from a CDN.
- Safe writes. Every change is validated and backed up first, and can be restored from history.
- Confined file access. Skills are only read or written inside registered skills folders, and symlinks are resolved before that check.
Please report vulnerabilities through a private security advisory, not a public issue. See SECURITY.md.
pnpm install
pnpm dev # frontend on :3000 (proxied), backend on :3001
pnpm test # vitest (backend)
pnpm lint # eslint
pnpm typecheck # tsc --noEmit for both packages
pnpm format # prettier
pnpm build # production buildTests never touch your real ~/.config/aidit: packages/backend/src/test/setup.ts points aidit at a temp directory and an in-memory database.
See CONTRIBUTING.md for the project layout, commit conventions and how to add an agent.
- Claude Code local-scope servers (
projects[...]in~/.claude.json) and Continue's.continue/mcpServers/*.yaml - Structured editing for headers and OAuth settings of remote servers
- Secrets masking for
envvalues in the UI - Export and import of MCP server bundles across machines
- Windows-native paths (outside WSL)
MIT © 2026 Onur Ceri and aidit contributors
