Skip to main content

Portolan CLI

PyPI version CI codecov Python 3.10+ License

Portolan is an opinionated specification for serverless spatial data infrastructures. It defines how publishers store, organize, document, and serve geospatial data as static files in their own storage. Every Portolan catalog should offer a predictable, high-quality experience for publishers, people, and agents.

Portolan builds on existing standards instead of replacing them. GeoParquet and PMTiles serve vector data, while COG serves raster data. STAC provides a consistent catalog structure and index. Required README and AGENTS.md files explain each catalog to people and agents. The specification also covers operational details such as spatial ordering, bounding boxes, and CORS.

This repository contains the Portolan CLI, an implementation of the specification. It helps publishers:

  • Build STAC catalogs with GeoParquet and COG assets.
  • Extract ArcGIS, WFS, and Carto sources.
  • Generate thumbnails, PMTiles, MapLibre styles, and STAC GeoParquet indexes.
  • Track collection versions and checksums without a database.
  • Validate catalog metadata, structure, and assets against the Portolan specification.
  • Push, pull, sync, and clone catalogs through S3, GCS, Azure, or S3-compatible storage.
  • Use structured JSON output, a typed Python API, or backend plugins.

Installation

Portolan CLI is pre-1.0 software, as breaking changes are expected for the time being.

uv tool install portolan-cli

Or with pip:

pip install portolan-cli

Documentation

Start with the end-to-end publishing example. We plan to add more tutorials over time.

See the full documentation. It includes an auto-generated CLI reference and Python API reference.

Development

git clone https://github.com/portolan-sdi/portolan-cli.git
cd portolan-cli
uv sync --all-extras
uv run pytest

See the contributing guide for details.

License

Apache 2.0

Metadata

Release files for portolan-cli 0.8.0

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

Source distribution (sdist)

Source distribution for portolan-cli 0.8.0
File Size Uploaded Provenance
portolan_cli-0.8.0.tar.gz 6.8 MB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for portolan-cli 0.8.0
File Interpreter ABI Platform
portolan_cli-0.8.0-py3-none-any.whl Python 3 none any Details

Total release size: 7.5 MB

Release files / portolan_cli-0.8.0.tar.gz

Download URL portolan_cli-0.8.0.tar.gz
Size 6.8 MB
Tags Source
SHA-256 checksum
How to use checksums
edf5e9c92d1dced3f073a4e9af15836590fdc1ca5b62e355858306c20888de83
BLAKE2b-256 checksum
How to use checksums
d92dd26e9b68415297259d0fff53b65d666d8dc3bf42ccdc2785b3ec2175b479
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 Aug 31, 2026.

Transparency log

Release files / portolan_cli-0.8.0-py3-none-any.whl

Download URL portolan_cli-0.8.0-py3-none-any.whl
Size 749.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
faae665b2902688711beb00cb02488eb106d116c35a4cfe6699ea5d3b88dd1e1
BLAKE2b-256 checksum
How to use checksums
e2829565b6076456605d28315cb5102bb85e1bfc25aacf4927dcd446c7ff8d59
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 Aug 31, 2026.

Transparency log

Security for portolan-cli 0.8.0

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for portolan_cli-0.8.0.tar.gz

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 Aug 31, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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