Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.nikaplanet.com/llms.txt

Use this file to discover all available pages before exploring further.

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.
FlagDescription
-v, --verboseShow more detailed command output on commands that expose the global verbose flag.
-y, --yesAccept confirmation prompts and defaults non-interactively. Useful for setup, init, apply, delete, and push workflows.
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 login

geoengine auth logout

Sign out and remove stored credentials.
geoengine auth logout

geoengine auth status

Reads logged in user’s details.
geoengine auth status

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 init [-n|--name <worker>] [-e|--env py|r|py-cuda|r-cuda] [-y|--yes]
FlagDescription
-n, --name <worker>Worker name. Defaults to the current directory name if omitted.
-e, --env pyGenerate a Python environment template (default).
-e, --env rGenerate an R environment template.
-e, --env py-cuda|r-cudaGenerate the environment template for CUDA runtime variants.
-y, --yesOverwrite existing templates when prompted and create the optional tests/ and README.md scaffolds.

geoengine apply

Register the worker, save the current config, reconcile the Dockerfile, build the Docker image, and refresh GIS plugin discovery state.
geoengine apply [<worker>] [--dev] [--no-cache] [--build-arg KEY=VALUE]
FlagDescription
<worker>Worker directory path. Defaults to the worker in the current directory.
--devSkip semantic version validation and update the mutable latest image/config only.
--no-cacheForce a full Docker rebuild, bypassing the layer cache.
--build-arg KEY=VALUEPass a custom Docker build argument into the image build.
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 lint
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.
geoengine run [<worker-id>] --actor <NAME> [-i|--input KEY=VALUE ...] [--json] [--tag <tag>] [--no-history] [-- <extra args>]
FlagDescription
<worker-id>Worker UUID. Defaults to the worker in the current directory via geoengine.lock.
--actor <NAME>Required source label for the run. This is an open string, not an enum. GeoEngine trims whitespace and rejects empty values.
-i, --input KEY=VALUEPass an input to the worker. Repeat for multiple inputs. File/folder paths are auto-mounted into the container.
--jsonStructured output mode: container logs go to stderr, a JSON result is printed to stdout on completion.
--tag <tag>Run a specific previously-built local tag using its snapshotted config. Defaults to latest.
--no-historyDo not persist this run in local history. Use for sensitive, ephemeral, or wrapper-managed runs.
-- <extra args>Pass additional arguments directly to the container command (after the trailing --).
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.
geoengine run --actor CLI --input input-file=/path/to/file.tif
geoengine run <worker-id> --actor QGIS --json --input key=value
geoengine run <worker-id> --actor "ArcGIS Pro" --json --input key=value
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):
{
  "job_id": "01HX4V2Z9B2F4T8H6P9K3N7Q1M",
  "status": "completed",
  "exit_code": 0,
  "files": [
    { "name": "output.geojson", "path": "/path/on/host", "size": 1024, "kind": "output" }
  ]
}
Local run history: By default, every run is recorded under:
~/.geoengine/runs/<worker_id>/<job_id>/
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:
geoengine run <worker-id> --actor "<Wrapper Name>" --json --input key=value
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:
geoengine worker runs list --json --limit 50
To filter by worker:
geoengine worker runs list --worker <worker-id> --json
To fetch one run:
geoengine worker runs show <job-id> --json
To fetch logs:
geoengine worker runs logs <job-id> --stream all
geoengine worker runs logs <job-id> --stream stderr --tail 100
To prune from UI/admin controls:
geoengine worker runs prune --keep 200 --max-size-mb 1024 --json

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.
geoengine push [--id <worker-id>] [--tag <local-tag>] [--tenant <tenant>]
FlagDescription
--id <worker-id>Worker UUID to push. Defaults to the worker in the current directory via geoengine.lock.
--tag <local-tag>Local tag to push. Defaults to the most recently applied production local_tag.
--tenant <tenant>Tenant to publish under. Defaults to your owned tenant.
Requires a prior production geoengine apply (without --dev). See Cloud Push for the full workflow.

Inspecting Workers

geoengine workers

List all registered workers.
geoengine workers [--all] [--json]
FlagDescription
--allExpand all version sub-rows inline below each worker.
--jsonOutput as JSON (includes id, name, has_tool, description).
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 describe [<worker-id>] [--tag <tag>] [--json]
FlagDescription
<worker-id>Worker UUID. Defaults to the worker in the current directory via geoengine.lock.
--tag <tag>Show info for a specific applied tag snapshot instead of the latest.
--jsonOutput as JSON (includes name, description, version, inputs, applied_at, applied_tags, config_hash, plugins_qgis, plugins_arcgis).

geoengine worker runs

List, inspect, stream, and prune local run history. Running geoengine worker runs without a subcommand lists recent runs.
geoengine worker runs
geoengine worker runs list [--worker <id>] [--limit N] [--json]
geoengine worker runs show <job-id> [--json]
geoengine worker runs logs <job-id> [--stream stdout|stderr|all] [--tail N]
geoengine worker runs prune [--worker <id>] [--keep N] [--max-size-mb M] [--json]
CommandDescription
geoengine worker runsList recent runs using the default list view.
geoengine worker runs listList recent runs. Use --worker <id> to filter, --limit N to change the count, and --json for structured output.
geoengine worker runs show <job-id>Show the saved record.json metadata for one run.
geoengine worker runs logs <job-id>Print saved logs. Use --stream stdout, --stream stderr, or --stream all; use --tail N to return only the last N log events.
geoengine worker runs prunePrune local history. Use --worker <id> to prune one worker, --keep N to keep a run count, --max-size-mb M to cap total size, and --json for a structured summary.
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.
geoengine diff
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.
geoengine delete [--id <worker-id>] [--tag <tag>]
FlagDescription
--id <worker-id>Worker UUID to delete. Defaults to the worker in the current directory via geoengine.lock.
--tag <tag>Delete only this local tag (removes its Docker image, map entry, and config snapshot). Omit to delete the entire worker.
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 list [--filter <name>] [--all]
FlagDescription
-f, --filter <name>Filter images by image name.
-a, --allInclude intermediate layers.

geoengine image import

Import a Docker image from a tarball (useful for air-gapped environments).
geoengine image import <file.tar> [--tag <name:tag>]
FlagDescription
-t, --tag <name:tag>Apply a tag to the imported image. Optional.

geoengine image remove

Remove a Docker image and its associated version entry and config snapshot.
geoengine image remove <image:tag> [--force]
FlagDescription
-f, --forceForce removal even if containers are using the image.

Environment Variables

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

geoengine env set

Set one or more global environment variables.
geoengine env set KEY=value
geoengine env set KEY="value with spaces"
geoengine env set KEY1=val1 KEY2=val2
geoengine env set -f path/to/.env   # Load from a .env file
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 unset KEY
geoengine env unset KEY1 KEY2

geoengine env list

List all currently set global environment variables.
geoengine env list

geoengine env show

Show the value of a single global environment variable.
geoengine env show KEY

Worker Tests

geoengine test

Run declarative tests from tests/geoengine.test.yaml.
geoengine test [<worker>] [--case <name>] [--tag <tag>] [--json] [--keep-workdir] [--verbose]
FlagDescription
<worker>Worker directory path or worker UUID. Defaults to the current directory’s worker.
--case <name>Run one named test case.
--tag <tag>Test a specific previously applied local tag.
--jsonOutput the test report as JSON.
--keep-workdirKeep .geoengine-test/ case folders for inspection.
--verboseShow container logs for every test, not only failures.
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 setup skills [--agent <name>]
geoengine setup plugins [--qgis] [--arcgis] [--all]
CommandDescription
geoengine setup skillsInstall GeoEngine skills for one or more supported AI agents.
geoengine setup skills --agent CodexInstall skills for one named agent. Supported names include Claude, Codex, Antigravity, Cursor, Copilot, and NIKA.
geoengine setup plugins --qgisInstall the QGIS plugin.
geoengine setup plugins --arcgisInstall the ArcGIS Pro toolbox. Windows only.
geoengine setup plugins --allInstall all platform-supported 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.
geoengine patch
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 update

geoengine uninstall

Remove the GeoEngine binary and GeoEngine files.
geoengine uninstall

Quick Reference

CommandDescription
geoengine auth login|logout|statusAuthentication-related commands, to login, logout, and see user details
geoengine init [--name] [--env py|r|py-cuda|r-cuda]Create GeoEngine worker templates and optional test scaffolds
geoengine apply [--dev] [--no-cache] [--build-arg K=V]Register the worker, save config, and build/update the image
geoengine lintValidate geoengine.yaml semantic rules
geoengine test [--case C] [--tag T] [--json] [--keep-workdir] [--verbose]Run worker test cases
geoengine push [--id <id>] [--tag T] [--tenant T]Publish a production image to the cloud registry
geoengine run [<worker-id>] --actor <name> --input K=V [--json] [--tag T] [--no-history]Run a worker in a container and record local history
geoengine diffCheck tracked file changes since last apply
geoengine workers [--all] [--json]List registered workers
geoengine describe [<worker-id>] [--tag T] [--json]Show worker details and config hash
geoengine worker runs list|show|logs|pruneInspect and manage local run history
geoengine delete [--id <worker-id>] [--tag T]Delete a worker or a single tag
geoengine image list|import|removeManage Docker images
geoengine env set|unset|list|showManage global environment variables
geoengine setup skills|pluginsInstall local agent skills or GIS plugins
geoengine patchRepair artifacts and sync plugins/agent skills
geoengine updateUpdate to latest version, then run patch
geoengine uninstallRemove GeoEngine binary and data