grounds.yaml selects a base image source by key, such as paper or velocity; Forge resolves that key to the current stable catalog version when it builds the final workload image.
The catalog keeps runtime selection server-side. Developers choose the runtime family in the manifest, while platform admins manage which OCI image versions are available, stable, deprecated, or removed.
How it fits into a push
grounds.yaml
grounds push, this happens:
- The CLI or Gradle plugin validates the manifest and uploads it to Forge.
- Forge checks that
baseImageis allowed for the selectedtype. - Forge loads the matching catalog source, for example
paper. - Forge selects the source’s stable version and resolves its OCI tag or digest.
- Forge builds your app image from that runtime image and deploys the result.
The manifest stores the source key, not a registry tag. This lets platform admins update the stable Paper, Velocity, gamemode, or service runtime without asking every project to edit
grounds.yaml.Catalog model
Sources
A source describes where Forge discovers runtime image versions. Common fields are:
Sources can point at any OCI registry that Forge can reach. GitHub release discovery is supported for images published from GitHub releases, and OCI tag discovery is supported for registries that expose tags through the standard registry API.
Versions
Each version belongs to one source and records the OCI tag or digest Forge verified during import. Platform admins can:- Add a version manually when a registry tag exists but discovery should not be used.
- Promote a version to stable so new pushes use it.
- Deprecate a version to keep it visible for history but discourage use.
- Undeprecate a version when it should become available again.
- Delete a version when it is not used by a channel.
Syncing
Syncing imports new versions from the source’s configured discovery provider. There are two sync paths:- Manual sync — a platform admin starts sync from Portal.
- Auto sync — Forge periodically refreshes enabled sources based on their configured interval.
Portal management
Portal exposes the catalog under Platform → Base images.- Overview shows all sources as cards, including the source key, supported workload type, and version count.
- Source detail shows the paginated version list for one source.
- Sources lets platform admins add, edit, delete, and sync sources.
- Version actions live on the source detail page: add version, promote, deprecate, undeprecate, and delete.
BASE_IMAGES_MANAGE platform permission can manage catalog sources and versions. Regular project members only see the effect through manifest validation and push behavior.
Audit log
Base image catalog changes are written to the project audit feed withbase_image.* event kinds.
Recorded actions include:
- Source create, update, delete, and sync.
- Version add, promote, deprecate, undeprecate, and delete.
Audit metadata includes source details and action-specific fields such as imported/skipped sync counts or the promoted channel.
Operational guidance
- Keep manifest values stable. Developers should rarely need to change
baseImage. - Promote one stable version per source. Multiple versions can be available, but stable is the default build input.
- Deprecate before deleting when a version may still matter for investigation.
- Use the audit feed to answer who changed a runtime source or promoted a runtime version.
- After promoting a new runtime, make a fresh push to build app images from it.
