Skip to main content

geolens (CLI)

Apache-2.0 command-line interface for the GeoLens API.

Login, scan local directories of spatial data, apply manifest-driven catalogs, publish vector or raster files, refresh remote service datasets, inspect source status, run PostGIS analysis operations, and export STAC metadata against any GeoLens instance.

See docs.getgeolens.com for the full command reference.

Quickstart

pip install geolens-cli
geolens login https://geolens.example.com/api
geolens scan ./data
geolens init
geolens validate geolens.yaml
geolens schema --output geolens-manifest-v1.schema.json
geolens apply --dry-run geolens.yaml
geolens apply geolens.yaml
geolens publish ./data/cities.geojson
geolens status <dataset-id>
geolens refresh <dataset-id> --wait
geolens analysis preview <dataset-id> --operation buffer --distance 500 > ring.geojson
geolens analysis materialize <dataset-id> --operation buffer --distance 500 --title "500 m ring"  # waits for the job; --timeout to bound it
geolens export stac <dataset-id> -o cities.stac.json

For a one-command quickstart, run geolens publish examples/manifests/first-catalog/city-parks.geojson against a running stack. See the full walkthrough at docs.getgeolens.com.

The CLI consumes the geolens Python SDK package. Manifest apply posts to the generated POST /ingest/manifest/apply contract through the SDK-owned client transport rather than a hand-rolled HTTP client.

Apply versus refresh

geolens apply reconciles declared catalog configuration. It re-imports a manifest entry only when that entry's fingerprint changes; applying an unchanged manifest returns skip_complete and does not re-fetch a remote source whose data changed independently.

geolens refresh <dataset-id> is the explicit data-refresh path. It re-pulls the dataset from the origin binding stored by GeoLens, without accepting a URL, layer, or client-selected trigger. Add --wait to poll the refresh job to a terminal state without an implicit deadline; pass --timeout when automation needs a finite bound. This is the supported command for scheduled cron or CI refresh jobs; use apply when the declared source configuration itself changes.

Protected services can receive a transient credential with --token. Use bare --token to open a hidden-input prompt, which keeps the value out of terminal output and shell history. Supplying a token value directly is supported for automation but can expose it through process arguments or shell history, so inject it only through an appropriately protected runner. GeoLens never stores the credential in the dataset binding.

geolens status <dataset-id> reports the catalog status together with source origin, freshness, health, and the last successful refresh time. Use --json before the command for a machine-readable status payload.

Manifest schema distribution

The versioned manifest JSON Schema is intentionally distributed inside geolens-cli, rather than as a separate package. A second artifact would add a release/version-skew surface without a demonstrated independent consumer; the CLI is already the canonical manifest authoring and validation tool. Editors and non-Python tooling can obtain the exact installed schema with geolens schema or geolens schema -o schema.json. Its stable $id identifies manifest v1.

This decision should be revisited if multiple consumers need schema releases on a cadence independent from the CLI. Until then, schema changes and CLI versions ship atomically and the wheel test locks resource inclusion.

Environment variables

The CLI normally stores its active instance through geolens login and keeps tokens in the OS keyring. Ephemeral CI jobs can avoid persistent state with:

Variable Purpose
GEOLENS_INSTANCE GeoLens instance URL. The CLI normalizes the URL and appends /api when needed. An explicit --instance option takes precedence.
GEOLENS_TOKEN Bearer token used instead of the keyring/credentials file. Treat it as a secret and inject it from the CI secret store.

For load-test and seed-script variables, use the documented Tooling / Load Tests section in the repository's .env.example.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

geolens_cli-1.11.1.tar.gz (83.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

geolens_cli-1.11.1-py3-none-any.whl (62.1 kB view details)

Uploaded Python 3

File details

Details for the file geolens_cli-1.11.1.tar.gz.

File metadata

  • Download URL: geolens_cli-1.11.1.tar.gz
  • Upload date:
  • Size: 83.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for geolens_cli-1.11.1.tar.gz
Algorithm Hash digest
SHA256 775ce72c7369c11c77795efc3a3cbc1ba24f333f4e0ca3af6fdb8b16e4bca4b7
MD5 0d9d62d659389e0ace9cd68e0afa9c18
BLAKE2b-256 4b030374a5c321f2107c51a8490f7e365d5c156baa8f79ae28e18b2c5ad626d1

See more details on using hashes here.

File details

Details for the file geolens_cli-1.11.1-py3-none-any.whl.

File metadata

  • Download URL: geolens_cli-1.11.1-py3-none-any.whl
  • Upload date:
  • Size: 62.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for geolens_cli-1.11.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bf56afd7f72ec5ee92a4c0568d542d85e17118d77dc0b07dbf2f36281b010021
MD5 0beebaab2a6d7e6ae71fb5a20ae55ccd
BLAKE2b-256 b8a4a4a962dbca7439dc7d9587d2e197bed1831e8c351adbea30a094723373c0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page