Skip to main content

geodeploy

Command-line client and Python API for GeoDeploy — the self-hosted spatial data platform and geoportal builder.

Upload data, style it, build a portal and publish it, without opening a browser:

pip install geodeploy

geodeploy login https://geodeploy.example.org --token gdp_…
geodeploy upload roads.gpkg sites.csv dem.tif --wait
geodeploy portals create "Field sites 2026" --publish

No dependencies. Python 3.9+. Every request goes through the standard library, so installing this pulls in nothing else — and a QGIS plugin can vendor the same client without asking anyone to pip-install into QGIS.

If your shell cannot find geodeploy after installing, pip's scripts directory is not on your PATH — python -m geodeploy works regardless, and pipx install geodeploy or a virtual environment avoids it.

What it covers

  • Uploads — shapefile, GeoPackage, GeoJSON, CSV (X/Y or WKT), GeoParquet, GeoTIFF. Many files in one command; the route is chosen per file, and anything over 48 MB goes direct to object storage in parallel presigned parts, so a multi-gigabyte upload survives a proxy that caps request bodies.
  • Layers — list, inspect, rename, share (STAC / OGC API - Features opt-in), share links per tool, download, delete, restart a stalled ingest.
  • Symbology — colour, opacity, outlines, dashes, markers, raster colormaps and stretches, plus data-driven styling: --color-field pop --classify jenks --classes 6 --ramp magma, proportional size, and attribute-driven 3D. Classification is computed by the instance, with the same code the portal editor uses, so the CLI and the editor can never disagree about a class.
  • Portals — create (web map, story map or catalog), arrange and style layers, folders, About page, assets, access tiers, publish, and a whole-configuration JSON round trip for version control.
  • Everything else — external WMS/XYZ/WFS services, registering data already in PostGIS or the bucket, the public STAC and OGC API - Features catalog, ingest jobs, users, and instance administration (health, services, updates, backups, activity log).

Every command takes --json, where stdout is exactly one JSON document, and exit codes distinguish authentication (3) from network (4) from server (5) so a scheduled job can alert on the right thing.

As a library

from geodeploy import Client

gd = Client("https://geodeploy.example.org", token="gdp_…")
result = gd.uploads.upload("roads.gpkg", wait=True)
portal = gd.portals.create("Roads")
gd.portals.add_layer(portal["id"], result.layer_id, "vector", {"color": "#e11d48"})
gd.portals.publish(portal["id"])

Typed exceptions (AuthError, PermissionError_, NotFoundError, ValidationError, ServerError, TransportError, JobFailed), progress callbacks and cancellation on uploads, and a swappable transport so a desktop application can route requests through its own network stack.

Documentation

Full guide: https://docs-geodeploy.kndev.org/cli/

Source and issues: https://github.com/bravemaster3/GeoDeploy

Licensed under the Apache License 2.0.

Metadata

Release files for geodeploy 1.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for geodeploy 1.6.1
File Size Uploaded
geodeploy-1.6.1.tar.gz 164.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for geodeploy 1.6.1
File Interpreter ABI Platform
geodeploy-1.6.1-py3-none-any.whl Python 3 none any Details

Total release size: 296.2 kB

Release files / geodeploy-1.6.1.tar.gz

Download URL geodeploy-1.6.1.tar.gz
Size 164.0 kB
Tags Source
SHA-256 checksum
How to use checksums
aee44606b7d66d4f0c0fcfa826adadbd3d0ae94e29a5b15e00e618320aafe082
BLAKE2b-256 checksum
How to use checksums
6d4d027d4988342212511a49f42eeba7ffd686ca823a6de107bc0ec1e73cd772
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / geodeploy-1.6.1-py3-none-any.whl

Download URL geodeploy-1.6.1-py3-none-any.whl
Size 132.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8db1f6f76ec433a3f5e4642d6a0b11e994e87e5a5abc4e8c775c6ea4faf9468b
BLAKE2b-256 checksum
How to use checksums
d3b9ebbb50176f5d85a796a4f17eda51f67597ffaebaca307d083277db79197c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.6.1 This release

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page