GeoEngine uses Semantic Versioning for cloud-facing worker releases and a separateDocumentation Index
Fetch the complete documentation index at: https://docs.nikaplanet.com/llms.txt
Use this file to discover all available pages before exploring further.
local_tag for local builds. Every production apply records a local tag and a config snapshot, so any past production build can be reproduced and run later — even after the code has changed.
Versions vs Local Tags
These two concepts are related but distinct:- Version — the semantic version string you set in
geoengine.yaml(e.g.1.2.0). It followsMAJOR.MINOR.PATCHrules and is enforced by GeoEngine during production applies. This is the version sent to the cloud when you push. - Local tag — the local build label GeoEngine uses for Docker tags and saved snapshots. Set it with
local_tagingeoengine.yamlwhen you want a named local build (for examplerelease-candidate). If you omit it during a production apply, GeoEngine asks whether to use theversionvalue as the local tag.
--tag 1.2.0 or --tag release-candidate), not necessarily the raw semantic version.
Version Format
Worker versions follow theMAJOR.MINOR.PATCH format, set in geoengine.yaml:
1.0.0, 0.3.1, 2.10.4. A version like 1.0 or 1 is invalid and will cause a production geoengine apply to fail.
As a general guide:
- PATCH (
1.0.0→1.0.1) — bug fixes, small script tweaks, no change to inputs or outputs - MINOR (
1.0.0→1.1.0) — new optional inputs, improved output, backwards-compatible changes - MAJOR (
1.0.0→2.0.0) — removed or renamed inputs, changed output format, breaking changes
Dev vs Production Applies
GeoEngine has two apply modes. Which one you use determines whether versioning is enforced and whether a snapshot is saved.Dev (--dev) | Production (no flag) | |
|---|---|---|
| Version check | Skipped | Enforced |
| Image tagged as | latest only | <worker-id>:<local_tag> + latest |
| Config snapshot saved | Mutable latest snapshot | Tagged snapshot + latest |
| Reproducible later | No | Yes — via --tag |
| Appears in GIS by version | No — latest only | Yes |
During Development
Use--dev to iterate freely without worrying about version numbers:
latest. Running geoengine apply --dev again overwrites the mutable latest image and latest config, even if a prior production version exists.
For Production Releases
When the worker is ready to share or use in GIS tools, apply without--dev:
- The
versionfield is present ingeoengine.yaml - The version is a valid semver string (
MAJOR.MINOR.PATCH) - The version is greater than or equal to the highest version currently recorded locally
- The selected
local_tagis notlatestand does not already point to different content
local_tag is missing, GeoEngine prompts you to use the version string as the local tag. Accepting this is fine for normal releases; add an explicit local_tag when you need multiple local builds for the same version.
Running a Specific Tag
To run a previously-built local tag instead oflatest:
geoengine.yaml says — the snapshot is self-contained.
If --tag is omitted, geoengine run always uses latest, which tracks the most recent apply (dev or production).
The latest Tag
latest always points to the most recent apply, regardless of mode:
- Running
geoengine apply --devafter a production apply will overwritelatestwith the dev state - Running
geoengine apply(production) also updateslatestto that version
geoengine run (without --tag) and GIS plugin latest entries always reflect the last apply. If you need a stable, pinned version in GIS, always use a production apply and reference it by its local tag.
Deleting a Tag
To remove a specific local tag (its Docker image, mapping entry, and snapshot):geoengine apply always reads the live map.json, so deleting an older tag does not affect the minimum allowed version for the next apply.
To remove a worker entirely, run from the worker directory or pass --id <worker-id>: