Community Marketplace
Browse community-published apps, skills, widgets, themes, and MCP plugins from a single gallery. Install in one click. Leave reviews. Verified authors publish through Control Center; every plan can browse, with per-category install caps on community.
Phase З.3 update. The single-category Phase Б.4 skill marketplace expanded into a unified gallery. The Skills tab now lives next to Apps, Widgets, Themes, and Plugins — each category has its own permission whitelist, install cap, and dispatch path on the OS side. Existing skill manifests authored before З.3 keep working: an empty
kindfield defaults toskills, and Phase Б.4 permission names are still on the whitelist.
This is the final instalment of Phase Б (AI as operational plane), alongside zero-shot provisioning, proactive Molly, and voice mode — extended in Phase З.3 to the multi-category gallery.
Categories
- Apps — one-click templates for Docker, Compose, and Helm workloads.
- Skills — AI skills that extend Molly with tools and workflows.
- Widgets — dashboard widgets for the Cosmic shell.
- Themes — UI themes, palettes, and animated backgrounds (no permissions allowed).
- Plugins — MCP outbound plugins and external tool integrations.
Each category is gated by a per-category install cap on the community plan and an unlimited cap on Pro+. The CP-side moderator queue is shared across every category — flagged or pending items appear in /admin/marketplace/queue until a global admin approves or rejects them.
What you get
- Skills → Browse tab — search, filter by category, sort by popularity / recent / rating.
- Skill cards with author + verified badge, install count, 1-5 star rating, install button. Yellow ribbon on cards from unverified authors so you read the manifest before installing.
- Skill detail drawer — slide-over with full description, manifest, permissions list, reviews. Install button verifies the Ed25519 manifest signature and SHA-256 of the package before unpacking.
- Reviews + ratings — 1-5 stars with a body. Aggregate updates atomically on every review.
- Pro+ publishing — verified authors publish through Control Center. Per-author Ed25519 keypair lives on CP and never leaves.
Installing a skill
- Open Skills in the OS dock.
- Click the Browse tab.
- Search for what you want, or pick a category. Sort by popularity / recent / rating.
- Click any card to open the detail drawer. Review the manifest, the permissions the skill is requesting, and the reviews from other users.
- Click Install. Quazzar:
- Downloads the package from the CP-configured storage backend (S3 / R2 / local disk).
- Verifies the SHA-256 of the package against the manifest’s
package_sha256. - Verifies the Ed25519 signature on the manifest using the author’s public key (fetched from
/api/v1/marketplace/keys/{author_id}and cached for 7 days). - Unpacks into
~/.quazzar/skills/<name>-<version>/with directory-traversal protection. - Writes a
marketplace.jsonsource marker and registers the skill with the existing skill registry, markedsource: "marketplace".
Sandbox limits enforced at install: the manifest’s permissions list maps to sandbox capabilities. The installer rejects on permission mismatch (e.g. a skill that asks for network when your tier doesn’t allow it).
Plans
| Tier | Browse | Install | Publish |
|---|---|---|---|
| Free (Community) | ✅ | ≤5 active | ❌ |
| Pro | ✅ | unlimited | ✅ (verified author required) |
| Team / Enterprise | ✅ | unlimited | ✅ (verified author required) |
Surfaced in /api/license/orbit-features as marketplace_install (always-on; cap enforced at install time) and marketplace_publish (Pro+ only).
Author verification
Verified-author status is set by Control Center. The current criteria:
- Email + phone confirmed.
- Paid plan ≥ Pro for ≥ 30 days.
- Manual review for skills that request sensitive permissions (
network,chat_inject).
A green check appears next to verified-author names everywhere they appear (cards + detail drawer + reviews). Unverified authors get a yellow “Unverified” ribbon — discoverable, but the user knows.
Trust + sandbox
- Manifest signing: every published skill manifest is canonicalised (JSON with sorted keys,
signaturefield excluded) and signed server-side at publish time using the author’s Ed25519 keypair. The keypair lives on CP and never leaves it. Authors cannot self-sign — CP is the issuance authority. - Package integrity: the installer fetches
package_sha256from the manifest and verifies the package bytes before unpacking. Mismatch → the install aborts withErrSHAMismatch. - Sandbox: the existing
internal/plugin/sandboxenforces CPU / RAM / network limits per skill. Permissions in the manifest map to sandbox capabilities; the installer rejects on permission mismatch.
API surface
Public (no auth required):
GET /api/v1/marketplace/skills— list with filters (q, category, sort, page, limit).GET /api/v1/marketplace/skills/{name}— latest version with manifest.GET /api/v1/marketplace/skills/{name}/versions/{version}— pinned version.GET /api/v1/marketplace/skills/{name}/reviews— reviews list.GET /api/v1/marketplace/skills/{name}/ratings— aggregate (cheap poll surface).GET /api/v1/marketplace/keys/{author_id}— author Ed25519 public key (raw 32 bytes, base64 in JSON).
Authenticated:
POST /api/v1/marketplace/skills— publish (requiresverified_author=true).POST /api/v1/marketplace/skills/{name}/reviews— post a review (rating 1-5 + body).
Limitations & roadmap
- No paid skills / revenue share — Pro+ later.
- No auto-update channels — manual update only in MVP. Periodic update notifications come in v2.
- No private skill registries — single canonical CP marketplace.
- OS-side REST proxy not yet wired — the marketplace client + installer are constructed in main.go but a thin OS-side
/api/skills/marketplace/...proxy that the frontend hooks talk to is a follow-up. The web hooks already call those paths so the swap is small.