For a layer-by-layer debugging workflow, start with Debug pushes and deployments.Documentation Index
Fetch the complete documentation index at: https://grounds-feat-grounds-runtime-libraries.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
CLI
not logged in
grounds login. The CLI didn’t find a credentials.json (or GROUNDS_TOKEN).
session expired
grounds login to start fresh.
api Get "https://platform.grnds.io/healthz": …
The CLI can’t reach forge. Check:
- Network connectivity (can you
curl https://platform.grnds.io/healthz?). - Are you on a VPN that blocks the domain? Try with VPN off.
- Did you set
--api-urlorGROUNDS_API_URLto a typo? Unset it. - status.grounds.gg for ongoing platform issues.
gradle wrapper not found
grounds push outside a Gradle project. cd to the directory with gradlew / build.gradle.kts.
Manifest
grounds.yaml: missing required field 'name'
Add the missing field. Required fields are name, type, baseImage — see manifest reference.
grounds.yaml: 'resources' must be a mapping
You wrote resources: 500m instead of:
groundsTestLocal only supports baseImage=paper|velocity
Local mode only runs Paper and Velocity. Use grounds push --target=dev for minestom / service workloads.
Runtime consumer starts without plugin-grounds-runtime
Runtime-consumer artifacts do not have a standalone fallback. Install the matching plugin-grounds-runtime Paper or Velocity plugin in local, dev, test, and production environments.
Use /grounds-runtime to confirm the runtime plugin is loaded and to inspect the runtime version, platform, manifest source, and provided libraries.
Runtime consumer bundles shared libraries
Runtime-consumer builds fail when the final shadow JAR includes shared runtime packages such asio/grpc, com/google/protobuf, kotlinx/coroutines, or kotlin.
Remove those libraries from implementation and rely on the runtime-consumer compile-only baseline. Keep plugin-private dependencies, such as NATS or Jackson, as implementation. If tests need a shared runtime library on the test runtime classpath, add it to testImplementation.
unknown baseImage
Your manifest references a base image source key that Forge does not know, or that is not allowed for the selected type.
Check:
- The spelling in
grounds.yaml. - The allowed source keys for your workload type in the manifest reference.
- Whether a platform admin recently renamed or deleted a source in the base image catalog.
No stable base image version
Forge found the source key, but there is no stable version to build from. Ask a platform admin to open Platform → Base images, select the source, and promote an available version to stable. If the version list is empty, sync the source or add a version manually.Base image source sync failed
Manual or automatic source sync failed in Portal. Common causes:- Forge cannot reach the registry or GitHub release API from the cluster.
- The registry requires credentials that are not configured for the source.
- The discovery configuration points at the wrong repository, release, or tag pattern.
- The registry returns HTML or an auth challenge instead of OCI registry JSON.
Build (build_failed)
kaniko: failed to push to registry
Transient registry hiccup. Retry:
#grounds-platform for a registry incident.
kaniko: COPY failed: no source files were found
Your manifest’s jar: glob doesn’t match any file. Check:
./gradlew shadowJarproduces something atbuild/libs/.- The glob in
grounds.yaml(or auto-detected) matches it. - The Gradle plugin successfully built before upload (look at the build output).
Build hangs in building for >5 minutes
The pipeline’s hard timeout is 30 minutes per step; the CLI’s SSE inactivity timeout is 5 minutes. If the latter triggers, the build is still running on the cluster — re-attach by tailing logs:
#grounds-platform.
Deploy (deploy_failed)
ImagePullBackOff
Most often: the build “succeeded” but the image isn’t actually at the registry. Symptoms align with a registry that ran out of disk or the image push happened-after the deploy started.
Retry: grounds push retry <pushId>. If it keeps failing, the registry needs platform attention.
CrashLoopBackOff
Your pod is starting and immediately exiting. Look at the deployment logs:
- Plugin throws on
onEnable— fix the code, push again. - Java version mismatch (you compiled for 22, base image runs 21).
- Missing dependency at runtime (you assumed a library would be present that isn’t).
OOMKilled
Pod exceeded its memory limit. Bump resources.memory in grounds.yaml (within project quota), or shrink your heap. Check Grafana for the JVM heap usage that led up to the OOM.
Quota exceeded at admission
#grounds-platform.
Preview environments
”My preview was working yesterday and now it’s gone”
Default TTL is 7 days. Check:deleted status, the janitor swept it. Push again or pin the new one.
Public URL returns 502
The pod isn’tready. Tail deployment logs:
ready pod — during a redeploy or crashloop you’ll see 502 from the ingress.
Auth & Grounds Account
403 Forbidden from forge on every call
You’re authenticated but not a member of the project the request targets. Check:
- The project ID in
--project/GROUNDS_PROJECT/config.toml. - Your role in the portal on the Members page.
Browser opens to “invalid_redirect_uri”
The CLI’s redirect URI must match what’s configured for Grounds Account. If you self-host the identity provider or the CLI binary is stale, this can drift. Re-install the CLI.Where to ask for help
#grounds-platformSlack channel — fastest path. Include push ID, manifest, and last 30 lines of logs.- GitHub issue at groundsgg/grounds-platform — for reproducible bugs.
- status.grounds.gg — to confirm whether it’s a known incident before reporting.
