Files
geointel/docs/DEPENDENCY_POLICY.md
Jens faeb58ef6d
GeoIntel release gates / Compile, test, contracts and builds (push) Successful in 1m49s
GeoIntel release gates / Python and npm vulnerability policy (push) Successful in 21s
GeoIntel release gates / Production AI image, SBOM and container scan (push) Successful in 5m39s
GeoIntel release gates / Deploy exact gated revision to Unraid (push) Failing after 58m43s
Initial public release
2026-08-31 21:56:53 +02:00

2.9 KiB

Dependency Policy

GeoIntel deliberately uses technologies matching the GeoAI Engineer profile. Dependencies must support the core goal: geospatial processing, remote sensing, AI inference, QA/QC, and professional frontend visualization.

Approved backend core

  • FastAPI
  • Uvicorn
  • Pydantic
  • SQLAlchemy
  • Alembic
  • GeoAlchemy2
  • psycopg
  • python-multipart
  • RDFLib for standards-compliant parsing of bounded official RDF/DCAT source catalogues. It is pure Python and does not fetch provider distributions.

Approved GIS/remote-sensing

  • GeoPandas
  • Shapely
  • PyProj
  • Rasterio
  • GDAL where available
  • Fiona or pyogrio where needed
  • NumPy
  • OpenCV when needed for image processing

Docker GIS runtime

The backend Docker image may install the approved gis optional dependency group so the deployed workbench has real raster/vector runtime capability:

  • rasterio
  • numpy
  • pillow
  • geopandas
  • pyogrio

The Docker image may also install GDAL, GEOS and PROJ system packages required by those GIS libraries. This does not enable new product behavior by itself; it only allows existing raster/vector endpoints to run when requested.

AI dependencies remain separate in the ai optional dependency group and must not be installed by the default Docker backend image unless an explicit AI image or profile is introduced later.

The opt-in Unraid all-in-one AI build is NVIDIA-GPU-oriented. It installs the pinned PyTorch/torchvision pair from the CUDA 12.8 wheel index before installing the ai extra. The production runtime exposes the NVIDIA device, selects YOLO_DEVICE=cuda:0 and sets YOLO_REQUIRE_CUDA=true, so missing CUDA fails closed instead of silently falling back to CPU. The index and versions remain explicit Docker build arguments and require live driver/runtime validation on Tower before release promotion. CUDA 12.8 is deliberately below the Tower driver's reported CUDA 12.9 capability; a newer wheel index may not be promoted merely because it exists when torch.cuda.is_available() fails on that driver.

Docker dependency metadata is copied before application source. Backend source changes therefore reuse the dependency layer while changes to pyproject.toml still invalidate it correctly. Runtime GIS and YOLO import/preflight smokes run after the complete backend source is copied.

Approved AI

  • PyTorch
  • Ultralytics
  • Segment Anything only after detection foundation works

Approved frontend

  • React
  • TypeScript
  • Vite
  • MapLibre GL
  • Deck.gl
  • TanStack Query
  • Zustand or React context for local UI state
  • Recharts for charts

Add-dependency rule

Before adding a dependency:

  1. Explain why existing dependencies are insufficient.
  2. Add it to this document.
  3. Add setup notes if it has native/system requirements.
  4. Ensure Docker build still works.

Avoid in V1

  • Heavy MLOps platforms.
  • User auth frameworks.
  • Full workflow orchestration stacks beyond simple queueing.
  • Unnecessary UI component mega-libraries.