Skip to main content
All GeoEngine commands follow the form geoengine <command> [options]. Run any command with --help to see its usage inline.

Global Options

These options are accepted by most GeoEngine commands unless a command documents more specific behavior. For geoengine test, use the command-specific long flag geoengine test --verbose to show container logs for every case.

Authentication

geoengine auth login

Sign in to GeoEngine with your Nika account. Credentials are stored securely on your machine and persist across sessions. Required before worker build, run, registry, and cloud commands. Setup, lint, patch, update, uninstall, and auth commands can run without an active login.

geoengine auth logout

Sign out and remove stored credentials.

geoengine auth status

Reads logged in user’s details.

Worker Setup

geoengine init

Create a new geoengine.yaml and pixi.toml template in the current directory. It also creates geoengine.lock, ensures .dockerignore exists, and can scaffold tests/ and README.md. Normal Python/R workers get their generated Dockerfile during geoengine apply; CUDA init may write a CUDA runtime marker Dockerfile earlier.

geoengine apply

Register the worker, save the current config, reconcile the Dockerfile, build the Docker image, and refresh GIS plugin discovery state.
What apply does:
  1. Runs the same semantic checks as geoengine lint
  2. Reconciles pixi.toml and the Dockerfile with the current runtime image
  3. Builds the Docker image (skipped automatically if config and image are unchanged)
  4. Registers the worker if new
  5. Saves the current config snapshot and updates latest
  6. For production applies, records the selected local_tag so it can be run, tested, deleted, or pushed later
See Your First Worker: Step-by-Step and Versioning Workers for full details.

geoengine lint

Validate the current directory’s geoengine.yaml before applying.
geoengine apply runs this check internally and rejects lint errors. Running geoengine lint first gives you the full error list up front. Warnings, such as deprecated fields, do not block apply.

Running Workers

geoengine run

Execute a worker in a Docker container. File and folder inputs are auto-mounted, and local run history is recorded by default.
Recommended actor values include CLI, QGIS, ArcGIS Pro, NIKA, or a properly capitalized agent/app name such as Codex or Field Review App. Agents and app wrappers should invoke runs as --actor "<Agent Name>" using proper capitalization.
Input mounting:
  • file inputs are mounted at /inputs/<key>/<filename>
  • folder inputs are mounted at /mnt/input_<key>/
  • Non-path values are passed through as plain string arguments
JSON result format (with --json):
Local run history: By default, every run is recorded under:
Each run directory includes:
  • record.json — structured metadata for the run
  • logs.ndjson.gz — compressed streamed stdout/stderr log events
record.json stores the job ID, worker ID/name, actor, local/requested tag, image tag, start/end time, duration, status, exit code, error, command, inputs, extra args, output files, and log stats. Older records created before actor stamping may show actor as Unknown. GeoEngine keeps the latest 200 runs per worker and keeps total local history under 1 GiB by default. The current run is always preserved even if it exceeds the cap. History write and prune failures are warnings; they do not fail the worker run.

Frontend Wrapper Integration

To run a worker from a frontend wrapper, invoke the CLI with a clear actor label and JSON output:
Parse stdout as JSON for the structured run result, and treat stderr as live logs/progress. The JSON result includes job_id; use it to fetch run details or logs later. To show recent runs:
To filter by worker:
To fetch one run:
To fetch logs:
To prune from UI/admin controls:

Publishing Workers

geoengine push

Publish a previously-applied production worker image to the cloud registry, making it available for team members to run via the QGIS or ArcGIS Pro plugin without a local setup.
Requires a prior production geoengine apply (without --dev). See Cloud Push for the full workflow.

Inspecting Workers

geoengine workers

List all registered workers.
Output columns (default): ID, NAME, LATEST TAG, LAST APPLIED
  • LATEST TAG — most recently applied local tag plus the total number of applied tags, e.g. claude-1.0.0 (3)
  • LAST APPLIED — relative time since last apply (e.g. 3 min 42 s ago)
With --all, the column header changes to TAG — expanding each worker with sub-rows for every applied tag.

geoengine describe

Show detailed information about a specific worker.

geoengine worker runs

List, inspect, stream, and prune local run history. Running geoengine worker runs without a subcommand lists recent runs.
Existing geoengine workers and geoengine describe remain unchanged for now, though they may later move under geoengine worker list and geoengine worker describe.

geoengine diff

Check which tracked files have changed since the last apply.
Checks geoengine.yaml, the Dockerfile, and build-relevant worker directory files against the last apply.

Managing Workers

geoengine delete

Delete a worker or a specific local tag.
Running without --tag shows a confirmation prompt before deleting the worker’s registration, all saved configs, and all state.

Image Management

geoengine image list

List all GeoEngine-managed Docker images.

geoengine image import

Import a Docker image from a tarball (useful for air-gapped environments).

geoengine image remove

Remove a Docker image and its associated version entry and config snapshot.

Environment Variables

Global environment variables are injected into every worker container at runtime.

geoengine env set

Set one or more global environment variables.
Inline variables override file variables if both are provided in the same command.

geoengine env unset

Remove one or more global environment variables.

geoengine env list

List all currently set global environment variables.

geoengine env show

Show the value of a single global environment variable.

Worker Tests

geoengine test

Run declarative tests from tests/geoengine.test.yaml.
Read-only fixture paths are resolved relative to tests/. Output file/folder inputs are resolved inside .geoengine-test/<case>/. See Designing Worker Tests for the manifest schema and examples.

Maintenance & Updates

geoengine setup

Initial installation for GeoEngine add-ons. Includes skills and GIS plugins.

geoengine patch

Validate all GeoEngine artifacts and repair anything that is broken or out of date. Safe to run at any time; exits with a non-zero status if issues are found.
Run this after upgrading GeoEngine to sync workers, GIS plugins, and agent skills with the new binary. geoengine patch --init remains as a deprecated compatibility alias for geoengine setup skills.

geoengine update

Update GeoEngine to the latest version using the original install method (Homebrew, curl, or PowerShell), then automatically run geoengine patch.

geoengine uninstall

Remove the GeoEngine binary and GeoEngine files.

Quick Reference