A CLI tool for managing cloud-native geospatial data
Project description
Portolan enables organizations to share geospatial data in a low-cost, accessible, sovereign, and reliable way. Built on cloud-native geospatial formats, a Portolan catalog is as interactive as any geospatial portal—but faster, more scalable, and much cheaper to run.
This CLI converts data to cloud-native formats (GeoParquet, COG), generates rich STAC metadata, and syncs to any object storage—no servers required.
Quick Start
# Initialize a catalog
portolan init
# Add files (creates collections from directories)
portolan add demographics/
# Validate and convert to cloud-native formats
portolan check --fix
# notest - requires S3 credentials
# Push to remote storage
portolan push s3://my-bucket/catalog --collection demographics
# Later: pull updates from remote
portolan pull s3://my-bucket/catalog -c demographics
# Or sync everything (pull → init → scan → check → push)
portolan sync s3://my-bucket/catalog -c demographics
All Commands
portolan init # Initialize catalog
portolan scan <path> # Scan for issues (--fix for filenames)
portolan add <path> # Track files
portolan rm <path> # Untrack files (--keep to preserve data)
portolan check # Validate catalog (metadata + geo-assets)
portolan check --fix # Convert to cloud-native + update metadata
portolan list # List tracked files
portolan info <path> # Show file/collection info
portolan push <remote> # Push to remote storage
portolan pull <remote> # Pull from remote storage
portolan sync <remote> # Full roundtrip sync
portolan clone <remote> <path> # Clone remote catalog
portolan config <set|get|list|unset> # Manage configuration
portolan metadata init # Create metadata.yaml template
portolan metadata validate # Validate required metadata fields
portolan readme # Generate README.md from STAC + metadata
portolan clean # Remove Portolan metadata
Installation
# Recommended: uv (fast, isolated, project-aware)
uv tool install portolan-cli
# Alternative: pipx (isolated environment)
# pipx install portolan-cli
# Alternative: pip (global/user site-packages, may conflict)
# pip install portolan-cli
For Development
git clone https://github.com/portolan-sdi/portolan-cli.git
cd portolan-cli
uv sync --all-extras
uv run portolan --help
See Contributing Guide for full development setup.
License
Apache 2.0 — see LICENSE
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file portolan_cli-0.7.0.tar.gz.
File metadata
- Download URL: portolan_cli-0.7.0.tar.gz
- Upload date:
- Size: 6.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
08d9518f1fb588ebb3857ffb792e6b9781a9bb7fabba46f1df2c63587f1a57c5
|
|
| MD5 |
70825faefe91bec56899a602981cb151
|
|
| BLAKE2b-256 |
39e370a657b607e83f1091b2bfdeb4b958a2838336d191f71c1c07b179de882e
|
Provenance
The following attestation bundles were made for portolan_cli-0.7.0.tar.gz:
Publisher:
release.yml on portolan-sdi/portolan-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
portolan_cli-0.7.0.tar.gz -
Subject digest:
08d9518f1fb588ebb3857ffb792e6b9781a9bb7fabba46f1df2c63587f1a57c5 - Sigstore transparency entry: 1459106299
- Sigstore integration time:
-
Permalink:
portolan-sdi/portolan-cli@7bd12afb9bd94c564445008ee2fc6f64414e992d -
Branch / Tag:
refs/heads/main - Owner: https://github.com/portolan-sdi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7bd12afb9bd94c564445008ee2fc6f64414e992d -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file portolan_cli-0.7.0-py3-none-any.whl.
File metadata
- Download URL: portolan_cli-0.7.0-py3-none-any.whl
- Upload date:
- Size: 477.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df4160df791d5e029644b86a5d0ec6983fd73fc4d35dad3f1dc7c948a8db378b
|
|
| MD5 |
6019293f7cd5b6681b2632a34386f5b7
|
|
| BLAKE2b-256 |
9380c4a83ef41b50382ef6d0808a7f0a964f042ae6aeea11f3585200d0e9bf61
|
Provenance
The following attestation bundles were made for portolan_cli-0.7.0-py3-none-any.whl:
Publisher:
release.yml on portolan-sdi/portolan-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
portolan_cli-0.7.0-py3-none-any.whl -
Subject digest:
df4160df791d5e029644b86a5d0ec6983fd73fc4d35dad3f1dc7c948a8db378b - Sigstore transparency entry: 1459106424
- Sigstore integration time:
-
Permalink:
portolan-sdi/portolan-cli@7bd12afb9bd94c564445008ee2fc6f64414e992d -
Branch / Tag:
refs/heads/main - Owner: https://github.com/portolan-sdi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7bd12afb9bd94c564445008ee2fc6f64414e992d -
Trigger Event:
workflow_dispatch
-
Statement type: