Aja

Earth Observation for Everyone

An open, composable platform for satellite analysis — the expressiveness of Earth Engine, the extensibility it can never have, and the offline capability it will never offer. Named for the Yoruba spirit of the forest.

import aja

ndvi = (aja.ImageCollection('sentinel-2-l2a')
    .filter_date('2025-06-01', '2025-08-31')
    .filter_bounds(aoi)
    .filter('eo:cloud_cover < 10')
    .first()
    .index('ndvi'))

# 3 lines. Real satellite data. No Google account.
Open Notebooks GitHub Comparison

Why Aja?

Composable API

EE-style chaining on open infrastructure. filter → compute → visualize in 3 lines. 19 spectral indices built in.

Community Extensible

4 lines to add a custom algorithm via @algorithm. The expression compiler handles lazy evaluation — you don't.

Reactive Notebooks

Marimo-powered. Change a parameter, everything updates. No stale state. Pure .py files. Git-friendly.

Works Offline

WASM + cached tiles = satellite analysis in a browser, no internet. For field researchers and the Global South.

Simulation

Forward models for floods, fires, crop growth. Something Earth Engine fundamentally cannot do.

Ethical by Design

Policy engine refuses irresponsible extraction. Geographic exclusion zones. Audit logging. Values enforced structurally.

Get Started

pip install aja-eo

No GDAL required. Python 3.10+.

Curriculum

19 notebook lessons from spectral bands to ML for Earth observation.

  1. What Satellites See
  2. Measuring Vegetation (NDVI)
  3. Deforestation Monitoring
  4. Real Python Analysis
  5. Ice Sheet Dynamics
  6. Evidence Packages
  7. The Aja API
  8. Time Series Analysis
  9. Land Cover Classification
  10. SAR Fundamentals
  11. Urban Heat Islands
  12. Multi-Sensor Fusion
  13. ML for Earth Observation
  14. Flood Simulation
  15. Disaster Response
  16. Topographic Correction
  17. Water Quality
  18. Fire Detection
  19. Crop Monitoring

Open in VS Code →