kendex.ai

What kendex is

kendex is a package manager for AI coding harnesses. It manages agents, skills, hooks, commands, MCP servers, plugins, and Pi extensions across Claude Code, Codex, OpenCode, Cursor, Pi, Gemini CLI, and GitHub Copilot. It runs as a desktop app and a CLI over one engine, for your personal setup and per project.

What it does

  • Install a skill, agent, or hook once and it lands in the right place for every tool.
  • Write an agent or skill as one file. kendex builds each tool's own format from it.
  • See every change before it happens, and undo it after.
  • Your edits and removals stay. kendex does not touch files it did not create.
  • Keep a personal setup and a separate setup per project.
  • Manage your existing skills, agents, hooks, or extensions inside kendex.
  • Subscribe to any git repository of skills and install from it.
  • See what is out of date across every tool and fix it in one step.
  • Set skills per agent, add instructions, and change per-tool settings without editing config.
  • Update the app and CLI from inside kendex.

What's supported

Claude CodeCodexOpenCodeCursor*PiGemini CLIGitHub Copilot†
Agents
Skills
Hooks
Commands
MCP servers●‡
Plugins
Pi extensions

● managed · ◐ enable/disable · ○ shown read-only · — no such surface.

*Cursor works per project only.

†Copilot has no file-backed slash commands, so kendex cannot add them. A project can switch a Copilot skill or server off, but cannot switch back on what personal Copilot settings hold down. Copilot reads Claude Code's skills; one file stays one installation, listed under the tool it belongs to.

‡Gemini records MCP server state in one machine-wide file, so a project can declare a server but not switch it off there. Gemini extensions install globally and switch on through an undocumented file, so they stay read-only.

How it works

  MARKETPLACES            YOUR CHOICES               YOUR TOOLS
  git repos of agents,    kendex.toml: what you      each tool's own folders
  skills, hooks, more     want, plus your tweaks     (.claude/ .codex/ .pi/ …)
       │                        │                          ▲
       ▼                        ▼                          │
  ┌──────────┐  render   ┌───────────────┐    apply   ┌────┴─────┐
  │  cached  │ ────────▶ │ finished files│ ─────────▶ │ links,   │
  │  copy    │           │ (your tweaks  │  preview,  │ copies,  │
  └──────────┘           │  baked in)    │  confirm,  │ config   │
                         └───────────────┘  journaled │ entries  │
                                                      └──────────┘

Four steps, always in this order:

  1. scan what every tool has, read-only.
  2. declare what you want in one kendex.toml per place.
  3. diff wanted against actual, on the Sync page.
  4. apply with a preview, in one transaction.

Installing the github skill into a project for Claude Code, Codex, and Pi:

  1. The marketplace repo is fetched into a local cache.
  2. The skill is rendered: marketplace content with your project's instructions baked in.
  3. The rendered copy lands once in the project, at .agents/skills/github.
  4. Claude Code links to it. Codex and Pi read the same folder. One copy, no drift.
  5. A lock file records what was installed, from where, and a content fingerprint.

Agents are generated per tool from one source file. MCP servers and hooks are edits inside a tool's own config that leave every other key untouched. Pi extensions are npm packages, copied and registered. Generated files are safe to regenerate; your intent lives only in kendex.toml.

Engine rules

  1. Generated files are always overwritable. Your intent lives only in kendex.toml.
  2. Nothing you set is clobbered, and nothing you removed is silently re-added.
  3. Unmanaged files are reported, not touched. Foreign symlinks are conflicts, not targets.
  4. An item's recorded source is durable. A name collision across sources is a hard error naming the original.
  5. Enable and disable is a lossless rename or a structured config edit that preserves every unrelated key.
  6. One writer per scope. Concurrent applies get a busy error, never an interleaved write.

These pages are the kendex app’s own documentation. The source lives in the repository.