Skip to content

Ronne AI Marketplace

An open-source, self-hosted, curated registry of AI capabilities: skills, agents, rules, commands, hooks, MCP servers and more.

Today those files live in personal dotfiles. They drift between teammates, nobody reviewed them, and each AI tool wants its own format. The marketplace gives a team one reviewed catalogue that installs into each tool's own files.

What is an AI capability registry?
$ rmk install @scope/name

At a glance

Version
0.7.0
Licence
MIT
Databases
SQLite, PostgreSQL 15+, MySQL 8.4+, MariaDB 10.11+
Installs into
Claude Code, Codex, Cursor
Runtime
Node.js 24 (22.12+ works)

What it looks like

Screenshots of version 0.7.0, with the sample items from the repository and sample accounts. The usage counts in them are simulated.

The page of the MCP server @examples/github-mcp: installs and runs in the last 30 days, the three tools it works in, two review flags, the install commands with one for Claude Code's plugin manager, and usage for the last 14 days by day, by tool (Claude Code, Codex and Cursor), by what started the runs and by how they ended.The page of the MCP server @examples/github-mcp: installs and runs in the last 30 days, the three tools it works in, two review flags, the install commands with one for Claude Code's plugin manager, and usage for the last 14 days by day, by tool (Claude Code, Codex and Cursor), by what started the runs and by how they ended.
An item's page: usage, the tools it works in, what review found, and how to install it. The usage counts are simulated.
A moderator's review of a change to @examples/code-reviewer: the tabs Overview, Files, Conversation and Security scan, the checks on the revision, and Approve, Request changes and Reject.A moderator's review of a change to @examples/code-reviewer: the tabs Overview, Files, Conversation and Security scan, the checks on the revision, and Approve, Request changes and Reject.
A change in review, shown line by line against the released version.
The Canvas view of a draft change to the bundle @examples/starter-kit: the bundle in the middle, joined to the items it contains, each with its version range.The Canvas view of a draft change to the bundle @examples/starter-kit: the bundle in the middle, joined to the items it contains, each with its version range.
The Canvas view of an agent: the items it uses and the version range of each.
See every screen

From dotfiles to a catalogue

What changes when the team's AI configuration has one reviewed home.

In personal dotfiles

  • Each person keeps their own prompts, rules and MCP settings, and they drift apart.
  • Nobody reviewed what a hook or an MCP server can do before it ran.
  • The same rule is rewritten for Claude Code, Codex and Cursor, three times.

In the marketplace

  • Items live under scopes such as @team/code-review, and someone who isn't the author approves each one.
  • One canonical manifest, ronne.yaml, is rendered into each tool's own files at install time.
  • A committed rmk.lock with checksums means every teammate and CI job gets the same files.

What you can publish

Eleven kinds of item, each written once in a tool-neutral form.

Skillskill
A SKILL.md folder, in the Agent Skills standard.
Agentagent
A sub-agent with its own instructions.
Rulerule
Steering instructions for a project or a domain.
Commandcommand
A slash command.
Hookhook
Runs at a point in the session: before a tool, after a prompt, on stop.
MCP servermcp-server
A server configuration; secrets are referenced by environment variable, never stored.
Permission policypermission-policy
What a tool may do, allowed and denied.
Output styleoutput-style
How the assistant writes. Claude Code only.
Status linestatusline
The status line of the terminal tool.
LSP serverlsp-server
A language server the tool can use.
Bundlebundle
Several items installed together.

Hooks, permission policies and MCP servers are flagged as high-risk in review. Output styles exist only in Claude Code; where a tool has no place for a type, rmk warns and skips it.

How a change gets in

Every item goes through the same steps before anyone can install it.

  1. DraftWritten in the web app (a form, a file editor, a canvas, or a .zip import), or sent from an AI tool with rmk export. Private until submitted.
  2. SubmittedWaiting in the review queue. It can be withdrawn until it is approved.
  3. ReviewDiff, comments and risk flags. Changes can be requested, then resubmitted.
  4. ApprovedBy one moderator or root who isn't the author. The content is frozen.
  5. ReleasedA semver version with a dist-tag, packed with a sha256 checksum.

Versions are immutable once published. latest is the default tag and pre-releases go under next. A version can be deprecated (still installs, with a warning) or yanked (new installs can't resolve it; existing lockfiles still can). Change proposals show a diff against a base version and go stale if a newer version ships first. Someone who edited an installed item in their AI tool can send the change back as a proposal with rmk export.

Root runs the instance. In each workspace, users propose items, moderators review, approve and release them, and admins also manage the workspace's members.

From the registry to your tools

A command line, or the AI tool itself: either one installs items, and either one sends items you wrote back to the registry.

The rmk command line

rmk installs approved items into your AI coding tools and keeps them current. It resolves the tree, downloads the tarballs, verifies each sha256, renders each tool's files and writes rmk.lock, which is meant to be committed.

  • login
  • logout
  • whoami
  • platforms
  • search
  • info
  • list
  • install
  • update
  • outdated
  • remove
  • mcp-setup
  • export
  • telemetry

It never overwrites a file or setting you made by hand, never stores secret values, and answers in JSON with --json. On npm as @ronneai/rmk; the command is rmk.

rmk export goes the other way. It sends a skill, agent, command, rule or MCP server you wrote for Claude Code, Codex or Cursor to the registry as a private draft, after showing you everything it would upload, and never an MCP server's credentials. An installed item you edited goes back as a change proposal.

$ rmk export my-skill --to @scope
@ronneai/rmk on npm (opens in a new tab)

The registry MCP server

rmk-mcp lets the assistant search the marketplace, read items, and install, update or remove them from the conversation. It first shows a plan of every file it would change, and only then applies exactly that plan. It exports items you wrote the same way: it asks which scope, shows every file it would upload, and creates the draft once you've approved.

  • search_items
  • get_item
  • list_installed
  • check_outdated
  • plan_install
  • plan_update
  • plan_remove
  • apply_plan
  • list_local_items
  • plan_export
  • export_items

A plan lasts 10 minutes and is applied once. rmk mcp-setup registers the server with each tool. On npm as @ronneai/mcp.

@ronneai/mcp on npm (opens in a new tab)

Usage counts. Root decides whether rmk and the MCP server report installs and runs: off (the default), on unless each person turns it off, or required. Only counts are sent, only to the instance the items came from, and they're kept as daily totals for 90 days. Each item's page shows them.

Installs into today: Claude Code, Codex, Cursor. Planned: GitHub Copilot, Gemini CLI, Antigravity CLI, Devin.

Run it

Three ways to start. None installs a database server for you: SQLite needs nothing, and for the others you create an empty database first.

With Node.js

You need Node.js 22.12 or later. One command downloads Ronne and starts it: no clone, no Docker and no build. It listens on this computer only.

Then open http://localhost:7650 and follow the setup. The settings, the SQLite database and stored items go in a data folder in your user account.

Port, data folder and running it as a service
$ npx @ronneai/marketplace

With Docker

The image is on Docker Hub. It has Node.js, and SQLite needs no server. Whatever you run it with, it needs the same three settings:

Image
ronneai/marketplace
Port, host:container
7650:3000
Volume, mounted at
/app/data
ronneai/marketplace on Docker Hub (opens in a new tab)
  • Docker Desktop. Search for the image, pull it and run it. In the optional settings, set the host port to 7650 and add a volume for the path above.
  • Portainer. Add a container with the image name, publish host port 7650 to container port 3000 and map a volume to the path above.
  • Command line. One line pulls the image and starts it.

    $ docker run -d --name ronne-marketplace -p 7650:3000 -v ronne-data:/app/data ronneai/marketplace

Set it up, once. Open http://localhost:7650 in the browser. The setup page asks for the database, the public address and the root account, shows the installation as it runs, and sends you to sign in. Nothing needs a restart. Whoever opens the address first sets the instance up, so open it right after the container starts.

Your data lives in the volume; back it up. To upgrade, pull the image again and recreate the container with the same volume. Pending database migrations run when the container starts. Already running it with -p 3000:3000? Keep that port when you recreate the container: the address is saved in its settings.

From a clone

You need Node.js 24 (22.12 or later works) and pnpm, installed directly rather than through Corepack.

Then open http://localhost:3000 and follow the same setup. It writes apps/web/.env and, with SQLite, the database file. pnpm run setup does the same in a terminal, and running it again is safe.

$ git clone https://github.com/ronneai/ronne-marketplace.git
$ cd ronne-marketplace
$ pnpm install
$ pnpm build && pnpm start

Databases: SQLite, PostgreSQL 15+, MySQL 8.4+, MariaDB 10.11+. Reverse proxies, setup without prompts and the root password reset are in the README. (opens in a new tab)

Open source, early

The marketplace is MIT-licensed and built in the open. The design, the feature index and every decision are in the repository.

It is in early development, at version 0.7.0. Planned: renderers for GitHub Copilot, Gemini CLI, Antigravity CLI and Devin.

Try it, open an issue, or send a pull request.