You write
- A Python or R script with command-line arguments
- A manifest: name, version, typed inputs
- Any extra packages it needs
- Local tests, run with GeoEngine CLI
NIKA GeoEngine handles
- GDAL, PROJ, CUDA and core geo libraries
- Mounting inputs and collecting outputs
- Placement, scaling, access and metrics
The worker manifest
Workers are built with GeoEngine CLI, the companion command-line tool, in itsgeoengine.yaml format. A worker you build and test on a laptop runs unchanged in the cluster.
geoengine.yaml
Input types
Every input becomes a
--name value argument, so the script is an ordinary command-line program you can run anywhere.
Dependencies
The geo runtime already includes GDAL withosgeo, fiona, shapely, pyproj, geopandas, numpy, scipy, pandas, xarray and zarr for Python, and sf, terra and stars for R. List anything else, from conda-forge or PyPI, in the worker’s pixi.toml. For GPU work choose the CUDA runtime when you create the worker; never add CUDA packages yourself.
Machine class
Start small and move up on evidence from real runs.
Versions and publishing
Patch for fixes, minor for a new optional input, major for removed or renamed inputs or changed outputs. Build and test locally with GeoEngine CLI, then push the version to your cluster’s worker catalogue.Run a job
A job names a worker, an exact version, a machine class and the inputs, and returns an ID at once. It movesqueued → running → completed or failed.
A task completes when the script exits 0 and fails on any other exit code, with its log kept. A stopped task is sent SIGTERM, and its metrics are saved before it exits. Worker containers run as a non-root user.
Batch jobs
One request covers many items. The orchestrator fans it out into parallel tasks, the pool scales to fit, and you track one job.Four habits for fan-out
1
One item in, one result out
A worker that loops over a folder cannot be parallelised.
2
Unique output paths
Name results after the input (
scene_001_ndvi.tif). Overwriting one fixed name is the most common fan-out bug.3
Safe to rerun
Overwrite or skip existing outputs, never append.
4
Tasks sized for one machine
Tile big mosaics. Many small tasks schedule and recover better.
Control who can run what
Workers are open by default. Mark one restricted and only roles you grant can run it. Others are refused at the gateway, before any pod exists.
Role-based access to workers is part of the full licence.
- Restrict by data sensitivity, not by team, and name roles after the capability (
sensitive-analysis, notteam-b). - Grant service accounts like people. A pipeline that runs a restricted worker needs the role too.
- Review grants on a schedule, like any privileged group.