Skip to content

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 statusGA 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

FormatPackageStatusSupported operations
MavenmavenGAPublish, pull, promote
HelmhelmGAPublish, pull, promote
Debian (apt)debianGAPublish, pull, promote
RPM (yum/dnf)rpmGAPublish, pull, promote
Alpine (apk)alpineGAPublish, pull, promote

Tier 2 — REST/JSON registry protocols

FormatPackageStatusSupported operations
npmnpmGAPublish, pull, promote
PyPIpypiGAPublish, pull, promote
CargocargoGAPublish, pull, promote
NuGetnugetGAPublish, pull (V2), promote — V3 search/autocomplete endpoints are stubbed
RubyGemsrubygemsGAPublish, pull, promote
Composer (PHP)composerGAPublish, pull, promote
ConanconanGAPublish, pull, promote
CondacondaGAPublish, pull, promote
Pub (Dart)pubGAPublish, pull, promote
Hex (Elixir)hexGAPublish, pull, promote
SwiftswiftGAPublish, pull, promote
Hugging FacehuggingfaceGAPublish, pull, promote
DenodenoGAPublish, pull, promote

Tier 3 — custom data model / store

FormatPackageStatusSupported operations
Docker / OCIinternal/docker (separate from the format-plugin system)GAPush, pull, promote (full v2 API incl. chunked upload, cross-repo mount, OCI 1.1 referrers)
Go modulesgomodGAPublish, pull, promote
Git LFSlfsGAPublish, pull, promote (content-addressable pass-through)
Terraform registryterraformGAPublish, pull, promote

Specialized — AI / policy / workflow

FormatPackageStatusSupported operations
OllamaollamaGAPublish, pull, promote (OCI-distribution-shaped)
OPA bundlesopaGAPublish, pull, promote
KustomizekustomizeGAPublish, pull, promote (OCI-distribution, KEP-2299)
Argo WorkflowsargoworkflowGAPublish, pull, promote
Agent/Skill PackagesagentskillExperimentalPublish, 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.

FormatPackageStatusSupported operations
BazelbazelGAPublish, pull, promote, HTTP remote cache (ac/cas)
BowerbowerDeprecatedRead-only name index (register still accepted for existing integrations — see migration guide); no artifact hosting
CocoaPodscocoapodsGAPublish, pull, promote, trunk-CDN spec repo (sharded index, ETag revalidation)
NVIDIA NIMnimGAPublish, pull, promote
NixnixGAPublish, pull, promote, signed narinfo (Sig: co-signing + nix-cache-pubkey trust line when a nix_narinfo Ed25519 key is configured)
Opkg (OpenWrt)opkgGAPublish, pull, promote, per-architecture feeds (/<arch>/Packages[.gz|.sig], Architecture: all in every feed) (local repos only)
P2 (Eclipse)p2GAPublish, pull, promote, composite repositories (virtual repos serve compositeContent.xml/compositeArtifacts.xml), p2.mirrorsURL mirror lists (item 167)
Chef SupermarketsupermarketGAPublish, pull, promote, /universe dependency graph (Berkshelf/Policyfile resolution, ETag revalidation, underscored version routes) (item 168)
VagrantvagrantGAPublish, 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 MarketplacejetbrainsGAPublish, pull, promote, updatePlugins.xml custom-repository index (full element set, ?build= compatibility filter, <idea-version> ranges, ETag revalidation) (item 170)
Nimble (Nim)nimbleExperimentalPackage-list index (packages.json) publish/pull/promote; nimble fetches sources from each entry's upstream VCS URL (item 164)
CRAN (R)cranExperimentalArchive browsing only (archive.rds stub); no live PACKAGES index generation yet
Puppet ForgepuppetExperimentalPublish, pull, promote; some Forge metadata fields are stubbed
VSIX (VS Code)vsixExperimentalUpload and download work; namespace/publisher creation is a stub
Homebrew TaphomebrewGAPublish, pull — formula/cask/bottle upload (PUT), tap.json index, tap.tar.gz offline-tap snapshot (item 159)
Generic VCSvcsExperimentalRead-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.

Released under the Apache-2.0 License.