geoengine.yaml, pixi.toml, your script, and a geoengine.lock. Putting them in a Git repository lets your whole development team work on the same worker, review changes, and push new versions independently.
Step 1: Create a GitHub Repository
Go to github.com and create a new repository. Name it after your worker (e.g.land-cover-classifier). Leave it empty — no README, no .gitignore — you’ll push the worker directory as the initial commit.
Step 2: Initialise Git in Your Worker Directory
From inside the worker directory, run:<repo_link> with the HTTPS or SSH URL from your GitHub repo (e.g. https://github.com/your-org/land-cover-classifier.git).
Then add the rest of the worker files:
Commit
geoengine.lock — it stores the worker UUID that ties local builds to the cloud registry. Without it, teammates who clone the repo will get a fresh UUID and create a separate worker instead of sharing yours.Step 3: Teammates Clone and Apply
Anyone on the team can clone the repo and apply the worker locally:geoengine.lock is committed, everyone works against the same worker UUID. Local builds stay on each person’s machine — nothing is shared until someone runs geoengine push.
Step 4: Pushing Changes
The normal development loop for each contributor:geoengine push and the worker will appear under the same entry in the cloud registry — no extra setup needed.
Known Limitations
Versioning is on you. GeoEngine enforces that each production apply uses a version that is greater than or equal to the highest version already recorded locally — but it does not enforce coordination between different machines. If two developers both bump to1.1.0 in their local geoengine.yaml and try to push, GeoEngine will accept both applies locally. Agree on version numbers with your team before doing a production apply, and use the Git commit as the source of truth for what version is current.
First push wins for a given version. If two teammates both apply and push the same version (e.g. 1.1.0), only the first push will succeed; subsequent pushes of the same version will be rejected. Coordinate releases, or use a simple rule: the person who merged the PR does the push.
Dev builds are local only. geoengine apply --dev never touches the cloud. Only production applies (geoengine apply without --dev) produce images that can be pushed.
