The Problem
Applying deep learning to geospatial data typically requires stitching together separate tools for data download, preprocessing, model training, and inference. Practitioners end up writing glue code across PyTorch, GDAL, and visualization libraries, with no unified workflow. GeoAI addresses this by providing a single Python package that covers the full pipeline—from satellite imagery search to trained model deployment—with high-level APIs that hide the ML complexity.
What This Does
GeoAI is a Python package for AI-driven geospatial analysis, forked from the actively maintained opengeos/geoai project (3,267 stars). The core functionality lives in agent-harness/clianything/geoai/core/, with modules for change detection (change.py), classification (classify.py), object detection (detect.py), segmentation (segment.py), and vector/raster processing (vector.py, raster.py). The geoaicli.py file exposes a command-line interface.
The repo includes 155 documentation files, primarily Jupyter notebooks under docs/examples/ covering use cases like building footprint extraction, water detection, and land cover classification. There is also an "agent harness" component (agent-harness/) that provides a CLI wrapper for AI agents to interact with GeoAI. CI/CD is configured via GitHub Actions across Ubuntu, macOS, and Windows, with Docker support via the root Dockerfile.
How To Use It
Setup: Install from PyPI or conda-forge per the README badges: pip install geoai-py or conda install -c conda-forge geoai. The setup.py in agent-harness/ handles the CLI package installation. A Dockerfile exists for containerized deployment, though the README does not document a specific build command.
Configuration: No environment variables are documented in the README. GPU acceleration is handled automatically by the package. For the agent harness, configuration lives in agent-harness/clianything/geoai/—specifically the SKILL.md file that defines agent capabilities.
Running it: Use the Python API for interactive work or the CLI for scripted pipelines:
from geoai import downloaddata, trainmodel, predict or use the CLI: geoai --help
The CLI entry point is agent-harness/clianything/geoai/main.py; install via pip install -e agent-harness/ to use it directly. The docs at docs/cli.md document available commands, though exact syntax is not visible in the README.
Real-World Use
A typical workflow: download Sentinel-2 imagery for a region, train a water segmentation model, then run inference on new scenes. The notebooks under docs/examples/waterdetections2.ipynb and trainsegmentationmodel.ipynb demonstrate this end-to-end. For production, the pipelines/ directory contains YAML/JSON configs (e.g., semanticsegmentation.yaml) that define repeatable batch processing workflows.
Code Health & Issues
Med – Documentation-heavy, code-light: 155 docs vs. 21 Python files. Most functionality is demonstrated in notebooks, not packaged modules. The actual package code may be thinner than the docs suggest. Med – Fork without clear delta: No changelog or diff from upstream opengeos/geoai. Unclear what this fork adds or changes; the JOSS paper DOI suggests upstream is already well-documented. Low – Agent harness is experimental: The agent-harness/ directory (26 files) appears to be a separate, less mature component. Its SKILL.md and replskin.py suggest an interactive agent interface that may not be production-ready. Low – Test coverage: Only 6 test files exist, concentrated in agent-harness/. The main geoai package itself appears to have minimal direct test coverage. CI runs on three OSes, which is good, but test depth is unclear.
The repo has a license (MIT), CI, and structured docs—no obvious red flags like secrets or missing configs.
The Bottom Line
GeoAI is a practical, well-documented toolkit for geospatial ML, and the upstream project's maturity shows in its extensive notebooks and CI setup. This fork adds an agent-harness CLI but lacks a clear statement of what distinguishes it from upstream. Teams already invested in PyTorch geospatial work will find the notebooks valuable as reference implementations; others should evaluate the upstream opengeos/geoai directly before committing to this fork.