Ronne AI Marketplace: self-hosted, curated registry of AI capabilities for AI coding tools.
162
A self-hosted, curated registry of AI capabilities for AI coding tools: skills, agents, rules, commands, hooks, MCP servers and more. Items are reviewed before release and installed into Claude Code, Codex and Cursor with the rmk CLI, or from inside the tool through the registry MCP server.
Open source (MIT). Source, issues and documentation: https://github.com/ronneai/ronne-marketplace
You need Docker with Compose. Nothing else: the image has Node.js, and SQLite needs no server. No clone is needed, only the compose file.
mkdir ronne && cd ronne
curl -fsSLO https://raw.githubusercontent.com/ronneai/ronne-marketplace/main/compose.yaml
docker compose up -d
docker compose exec web pnpm run setup
docker compose restart web
The first command pulls the image and starts Ronne. Setup asks for the database, the public URL and the root account. The restart picks up the new settings.
Open http://localhost:3000, or set RONNE_PORT before up. Until setup has run, every page says the instance isn't set up yet, and /api/health answers 503.
| Tag | Meaning |
|---|---|
latest | The newest stable release |
X.Y.Z | One release, never moved |
X.Y | The newest patch of that minor |
X | The newest release of that major, from major 1 |
A pre-release gets only its X.Y.Z tag, and latest doesn't move.
Every image is built for linux/amd64 and linux/arm64, carries the same version as the npm packages, and has provenance and SBOM attestations:
docker buildx imagetools inspect ronneai/marketplace:latest
To pin a version, set RONNE_IMAGE in the environment or in a .env file next to compose.yaml:
RONNE_IMAGE=ronneai/marketplace:0.1.1
docker compose pull web && docker compose up -d
Pending database migrations run when the container starts. If they fail, the container stops instead of serving a half-migrated database.
The SQLite file, stored items and the settings file live in the ronne-data volume, mounted at /app/data. Recreating or upgrading the container keeps it. Back up that volume.
If the container says the folder isn't writable on start, the volume is owned by root. Fix it once:
docker compose run --rm --user root web chown -R 1000:1000 /app/data
docker compose --profile postgres up -d (or --profile mysql) also starts that database. Set RONNE_DB_PASSWORD first. In setup, use the host postgres (or mysql), and the database and user ronne.
Pass the values as environment variables and add --yes:
docker compose exec -T \
-e DATABASE_URL=file:./data/ronne.db \
-e PUBLIC_URL=https://ronne.example.com \
-e [email protected] \
-e RONNE_ROOT_NAME="Your Name" \
-e RONNE_ROOT_PASSWORD='your-password' \
web pnpm run setup --yes
docker compose exec web pnpm run reset-root-password
With nginx, Caddy or Traefik: proxy HTTPS to port 3000, and set PUBLIC_URL to the public address, for example PUBLIC_URL=https://ronne.example.com docker compose up -d. Set TRUST_PROXY=true too, so Ronne takes the client's address from the proxy's X-Forwarded-For header. Only set it when a proxy you control sits in front of Ronne and adds that header.
Docker Hub allows anonymous pulls of 100 per 6 hours per address, and 200 for a free account that's logged in (docker login). A busy shared address can hit it.
rmk and the registry MCP server are on npm and need Node.js 22.12 or later:
npm install --global @ronneai/rmk @ronneai/mcp
rmk login --registry https://your-ronne-instance.example
rmk install @scope/name
rmk mcp-setup
Packages: @ronneai/rmk, @ronneai/mcp and @ronneai/core.
Content type
Image
Digest
sha256:b832753b6…
Size
99.3 MB
Last updated
about 15 hours ago
docker pull ronneai/marketplace