Format support matrix
Single-source reference for every format adapter OrbitalReg ships: 42 api/internal/formats/<name> packages plus Docker/OCI (api/internal/docker, kept separate from the format-plugin system — see CLAUDE.md §4). This page answers one question per format: is it officially supported, and with which operations?
Two independent axes:
- Maturity tier — how much of the adapter is implemented, per the grouping in
CLAUDE.md§5.1 (Tier-1 full index generation, Tier-2 REST/JSON registry protocol, Tier-3 custom data model, Specialized, or Minimal/partial/stub). This describes implementation depth, not whether the format is safe to rely on. - Support status — GA or Experimental, sourced directly from
frontend/src/lib/formats.ts, the same list the create-repository dropdown and dashboard tiles read. Experimental formats carry the exact caveat text the UI itself surfaces. A format can sit in the "Minimal/partial/stub" maturity tier and still be marked GA here — that only means the thinner implementation is documented, not withheld from production use (Bazel, Cocoapods, Nim, Nix, OPKG, P2, Chef Supermarket, Vagrant, and JetBrains Marketplace are all in that bucket: real adapters, real integration-test coverage, just a narrower feature set than the Tier-1/2 formats). A third status, Deprecated, covers formats whose upstream ecosystem is dead rather than merely thinner-than-peers (Bower — see below); the adapter keeps working for existing repos, it's just not the right choice for a new one.
See docs/PRODUCT-ROADMAP.md item 148 for how the GA/Experimental classification was originally derived, and item 123 for this matrix.
Tier 1 — full index generation
| Format | Package | Status | Supported operations |
|---|---|---|---|
| Maven | maven | GA | Publish, pull, promote |
| Helm | helm | GA | Publish, pull, promote |
| Debian (apt) | debian | GA | Publish, pull, promote |
| RPM (yum/dnf) | rpm | GA | Publish, pull, promote |
| Alpine (apk) | alpine | GA | Publish, pull, promote |
Tier 2 — REST/JSON registry protocols
| Format | Package | Status | Supported operations |
|---|---|---|---|
| npm | npm | GA | Publish, pull, promote |
| PyPI | pypi | GA | Publish, pull, promote |
| Cargo | cargo | GA | Publish, pull, promote |
| NuGet | nuget | GA | Publish, pull (V2), promote — V3 search/autocomplete endpoints are stubbed |
| RubyGems | rubygems | GA | Publish, pull, promote |
| Composer (PHP) | composer | GA | Publish, pull, promote |
| Conan | conan | GA | Publish, pull, promote |
| Conda | conda | GA | Publish, pull, promote |
| Pub (Dart) | pub | GA | Publish, pull, promote |
| Hex (Elixir) | hex | GA | Publish, pull, promote |
| Swift | swift | GA | Publish, pull, promote |
| Hugging Face | huggingface | GA | Publish, pull, promote |
| Deno | deno | GA | Publish, pull, promote |
Tier 3 — custom data model / store
| Format | Package | Status | Supported operations |
|---|---|---|---|
| Docker / OCI | internal/docker (separate from the format-plugin system) | GA | Push, pull, promote (full v2 API incl. chunked upload, cross-repo mount, OCI 1.1 referrers) |
| Go modules | gomod | GA | Publish, pull, promote |
| Git LFS | lfs | GA | Publish, pull, promote (content-addressable pass-through) |
| Terraform registry | terraform | GA | Publish, pull, promote |
Specialized — AI / policy / workflow
| Format | Package | Status | Supported operations |
|---|---|---|---|
| Ollama | ollama | GA | Publish, pull, promote (OCI-distribution-shaped) |
| OPA bundles | opa | GA | Publish, pull, promote |
| Kustomize | kustomize | GA | Publish, pull, promote (OCI-distribution, KEP-2299) |
| Argo Workflows | argoworkflow | GA | Publish, pull, promote |
| Agent/Skill Packages | agentskill | Experimental | Publish, pull, promote work; no MCP server yet (roadmap item 149 Phase C) |
Minimal / partial / stub
Real adapters with real integration-test coverage, but a narrower feature set than their peers. Five of the sixteen formats in this maturity tier are also marked Experimental in the UI because the gap is user-visible (missing an operation entirely, not just a secondary endpoint); one (Bower) is Deprecated — its upstream ecosystem is dead, not just thinner than its peers (roadmap item 162); the other ten are GA — their thinner spot is internal (e.g. no CVE scanner adapter) rather than a missing publish/pull/promote path.
| Format | Package | Status | Supported operations |
|---|---|---|---|
| Bazel | bazel | GA | Publish, pull, promote, HTTP remote cache (ac/cas) |
| Bower | bower | Deprecated | Read-only name index (register still accepted for existing integrations — see migration guide); no artifact hosting |
| CocoaPods | cocoapods | GA | Publish, pull, promote, trunk-CDN spec repo (sharded index, ETag revalidation) |
| NVIDIA NIM | nim | GA | Publish, pull, promote |
| Nix | nix | GA | Publish, pull, promote, signed narinfo (Sig: co-signing + nix-cache-pubkey trust line when a nix_narinfo Ed25519 key is configured) |
| Opkg (OpenWrt) | opkg | GA | Publish, pull, promote, per-architecture feeds (/<arch>/Packages[.gz|.sig], Architecture: all in every feed) (local repos only) |
| P2 (Eclipse) | p2 | GA | Publish, pull, promote, composite repositories (virtual repos serve compositeContent.xml/compositeArtifacts.xml), p2.mirrorsURL mirror lists (item 167) |
| Chef Supermarket | supermarket | GA | Publish, pull, promote, /universe dependency graph (Berkshelf/Policyfile resolution, ETag revalidation, underscored version routes) (item 168) |
| Vagrant | vagrant | GA | Publish, pull, promote, box-version release lifecycle (unreleased/active/revoked — metadata JSON lists active only) + Vagrant Cloud "Atlas" API-v1 publish subset (api/v1: version create → provider upload → release, item 169) (local repos only) |
| JetBrains Marketplace | jetbrains | GA | Publish, pull, promote, updatePlugins.xml custom-repository index (full element set, ?build= compatibility filter, <idea-version> ranges, ETag revalidation) (item 170) |
| Nimble (Nim) | nimble | Experimental | Package-list index (packages.json) publish/pull/promote; nimble fetches sources from each entry's upstream VCS URL (item 164) |
| CRAN (R) | cran | Experimental | Archive browsing only (archive.rds stub); no live PACKAGES index generation yet |
| Puppet Forge | puppet | Experimental | Publish, pull, promote; some Forge metadata fields are stubbed |
| VSIX (VS Code) | vsix | Experimental | Upload and download work; namespace/publisher creation is a stub |
| Homebrew Tap | homebrew | GA | Publish, pull — formula/cask/bottle upload (PUT), tap.json index, tap.tar.gz offline-tap snapshot (item 159) |
| Generic VCS | vcs | Experimental | Read-through HEAD-probe proxy only (e.g. go get); no full clone/fetch proxying |
Definitions
- Publish — the format's native write path (
mvn deploy,npm publish,docker push, …) accepts and stores an artifact. - Pull — the format's native read path (
npm install,docker pull, …) serves a previously published artifact, including through remote/virtual repos where the format supports those repository kinds. - Promote — the generic, format-aware metadata-only cross-repo copy (
internal/handlers/promotions.go) works for this format; it reuses the existing S3 blob rather than re-uploading (CLAUDE.md §5.7).
Adding a new format
See Package formats → Adding a new format. When a new adapter lands, add its row here in the tier that matches its implementation depth, alongside the existing entry in frontend/src/lib/formats.ts.