EarthForge¶
Cloud-native geospatial developer toolkit.
Working with cloud-native geospatial data means juggling gdalinfo for COGs, stac-client for discovery,
geopandas for GeoParquet, and xarray for Zarr — each with its own conventions, output format, and
authentication story.
EarthForge is one composable toolkit that unifies these workflows. One CLI. One config system. One output contract. Every command works locally and against S3, GCS, or Azure. Every command produces both human-readable tables and machine-parseable JSON.
Install¶
GDAL-dependent features (raster convert, vector convert) need reliable binary builds:
Quick Start¶
# Inspect any cloud-native file — format auto-detected
earthforge info s3://sentinel-cogs/sentinel-s2-l2a-cogs/10/T/EK/2024/6/S2A_10TEK_20240601_0_L2A/B04.tif
earthforge info buildings.parquet
earthforge info climate.zarr
# Search a STAC catalog
earthforge stac search sentinel-2-l2a \
--bbox -85,37,-84,38 \
--datetime 2025-06/2025-09
# Convert legacy formats to cloud-native
earthforge vector convert parcels.shp --to geoparquet
earthforge raster convert image.tif --to cog
# Query GeoParquet with predicate pushdown
earthforge vector query buildings.parquet --bbox -85,37,-84,38
# Pipe JSON into other tools
earthforge stac search sentinel-2-l2a -o json | jq '.items[].assets.B04.href'
# Accessibility — high-contrast mode
earthforge raster info scene.tif --high-contrast
Supported Formats¶
| Format | Support | Commands |
|---|---|---|
| COG (Cloud Optimized GeoTIFF) | Full | info, validate, convert, preview, stats, calc, tile |
| GeoParquet | Full | info, validate, convert, query, clip, tile |
| Zarr / NetCDF | Full | info, validate, convert, slice, stats |
| FlatGeobuf | Read/Write | info, convert |
| STAC | Full | search, info, validate, fetch, publish |
| COPC (Cloud Optimized Point Cloud) | Detection | info |
| PMTiles | Write | vector tile |
What EarthForge Is Not¶
EarthForge is not a platform, web server, tile cache, database, or ML pipeline. It is not a replacement for QGIS, ArcGIS, or Google Earth Engine.
If you need a tile server, use TiTiler. If you need a STAC API, use stac-fastapi. EarthForge is the CLI toolkit you reach for alongside those tools.
Python Library¶
Every CLI command is a thin wrapper around an async library function:
import asyncio
from earthforge.core.config import load_profile
from earthforge.stac.search import search_catalog
from earthforge.raster.info import inspect_raster
async def main():
profile = await load_profile("default")
items = await search_catalog(profile, collections=["sentinel-2-l2a"],
bbox=(-85, 37, -84, 38))
info = await inspect_raster("s3://bucket/scene.tif")
print(f"{info.width}x{info.height}, {info.band_count} bands")
asyncio.run(main())
Next: Examples — real-world workflows with Sentinel-2, Copernicus DEM, and more.