index.yaml — that lists the plugins you publish, their versions, and per-platform download URLs and checksums. Users register your catalog with datumctl plugin index add, then search, browse, and install from it like any other.
This guide covers the manifest format, validation, hosting, and versioning guidance.
If you’re writing the plugin itself (not just publishing a catalog), start with Building plugins. This guide assumes you already have released plugin binaries to point at.
The catalog manifest
A catalog manifest is aPluginList document. It has an optional catalog-level identity header followed by an items list of plugin entries. Here is a complete, annotated example:
Field reference
Catalog header (all optional):
A manifest with no header still parses — the only required content is the plugin list.
Each entry under
items (spec):
Each entry under
spec.platforms:
The binary inside each archive should be named
datumctl-<name> (or datumctl-<name>.exe on Windows). datumctl runs it as datumctl <name>.
Validating before you publish
Lint a manifest before you ship it. The validator reports missing plugin names or versions, missing or non-HTTPS download URIs, missing checksums, and invalid platform selectors:owner/repo. A clean manifest reports OK: manifest is valid.
Hosting your catalog
datumctl fetches catalog manifests over HTTPS only. You can hostindex.yaml in either of these ways:
-
A GitHub repository. Place
index.yamlat the repository root. Users then add it with theowner/reposhorthand:datumctl fetches from the default branch (main, falling back tomaster). -
Any HTTPS host. Serve
index.yamlfrom your own site and have users add the full URL:
Publisher scoping for enterprises
Enterprises can constrain which catalogs their users may add through an allow-list, and GitHub sources are scoped by owner (and optionally repository). To make your catalog easy for enterprises to approve:- Host it under a stable GitHub owner or repository so it can be allow-listed as
github.com/<owner>orgithub.com/<owner>/<repo>, or under a stable dedicated hostname for a host-pattern allow-list entry. - Avoid moving the catalog between owners or hosts, which would require every enterprise to update their allow-list.
Versioning guidance
spec.version is the version datumctl installs when a user runs datumctl plugin install <name> without pinning. Users can pin a specific version with datumctl plugin install <name>@<version>.
To make pinning reliable for your users:
- Use consistent, sortable version strings (semantic versioning, e.g.
v1.2.0) so newer releases are recognized as updates. - Keep
spec.version, the archiveuri, and itssha256in lockstep — bump all three together for each release. - Publish immutable release archives at stable URLs so a pinned version keeps resolving to the same bytes.
Next steps
- Building plugins — write the plugin binaries your catalog points at
- Adding catalogs — how users register and trust your catalog