Skip to main content

GAIA — physical-world oracle gateway

CI Pages deploy Live demo status Landing GHCR package Python >=3.11 tests AIMarket v2 Ed25519 signing Test coverage License: MIT

GAIA is a physical-world oracle gateway that sells Ed25519-attested sensor readings from virtual IoT devices as paid AIMarket v2 capabilities, and serves a Metis-envelope-compatible /v1/verify so the hub's Pay-on-Verified escrow can settle them — an honest reading gets the provider paid, a lying sensor refunds the buyer automatically.

It is the ecosystem's third oracle class: math oracles prove computations, Metis judges LLM output, GAIA grounds settlement in physics. The demo fleet is simulated (two co-located weather stations sharing one site truth, an air-quality node, an energy meter — models imitate BME280/SDS011/SCD30/Shelly-EM-class hardware), but every wire surface — manifest, invoke, receipts, provider signature, verify envelope, W3C WoT Thing Descriptions — is the real one.

Live demo · Landing · GHCR

📖 Deep-dive (monorepo): docs/iot-physical-oracles.md 🌍 Live devices: gaia/devices/live.py 🎬 3D visualization: frontend/ (cd frontend && npm i && npm run dev)

Quickstart

# Container
docker pull ghcr.io/alexar76/gaia:latest
docker run --rm -p 9320:9320 ghcr.io/alexar76/gaia:latest

# From source (satellite checkout vendors oracle-core)
pip install -e vendor/oracle-core -e ".[dev]"   # or: pip install -e ../oracles/core -e ".[dev]"
python -m gaia.main                             # :9320

Poke it:

curl -s localhost:9320/.well-known/ai-market.json
curl -s localhost:9320/ai-market/v2/manifest

curl -s -X POST localhost:9320/ai-market/v2/invoke \
  -H 'Content-Type: application/json' \
  -d '{"capability_id": "gaia.weather.read@v1", "product_id": "gaia.gateway",
       "input": {"device_id": "ws-01"}}'

Live devices — relay real public sensors

Set GAIA_ENABLE_LIVE=1 to register real public-API relays alongside the simulators. Every relay uses the same Ed25519 attestation + plausibility path. Unreachable upstream → DeviceOffline → 503 / {ok:false}no debit. Upstream hosts are allowlisted (SSRF defence); invoke clients never supply a URL.

Device id Capability Upstream Key?
nws-01 gaia.weather.read@v1 NOAA/NWS api.weather.gov no
om-wx-01 gaia.weather.read@v1 Open-Meteo weather no
osm-01 gaia.air.read@v1 openSenseMap no
om-aq-01 gaia.air.read@v1 Open-Meteo air quality no
sta-01 gaia.air.read@v1 OGC SensorThings (Fraunhofer) no
openaq-01 gaia.air.read@v1 OpenAQ v3 yes (GAIA_OPENAQ_API_KEY)
uk-grid-01 gaia.grid.read@v1 UK Carbon Intensity no
usgs-quake-01 gaia.quake.read@v1 USGS GeoJSON feed no
noaa-tide-01 gaia.tide.read@v1 NOAA CO-OPS tides no
firms-fire-01 gaia.fire.read@v1 NASA FIRMS VIIRS (cite NASA) no
safecast-01 gaia.radiation.read@v1 Safecast (CC0) no
cybernews-jam-01 gaia.jamming.read@v1 CyberNews GNSS (CC BY 4.0) no
feeder-adsb-01 gaia.adsb.read@v1 Own dump1090 ingest GAIA_FEEDER_*
feeder-ais-01 gaia.ais.read@v1 Own AIS ingest GAIA_FEEDER_*

Full operator notes (5 languages): docs/LIVE-RELAYS.md. Add a sensor / pin (GAIA → ATLAS): docs/add-gaia-atlas-sensor.md (EN · RU · ES · FR · ZH).

curl -s -X POST https://iot.modelmarket.dev/ai-market/v2/invoke \
  -H 'Content-Type: application/json' \
  -d '{"capability_id":"gaia.grid.read@v1","product_id":"gaia.gateway",
       "input":{"device_id":"uk-grid-01"}}'

License

MIT — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aimarket_gaia_gateway-0.1.1.tar.gz (49.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aimarket_gaia_gateway-0.1.1-py3-none-any.whl (68.5 kB view details)

Uploaded Python 3

File details

Details for the file aimarket_gaia_gateway-0.1.1.tar.gz.

File metadata

  • Download URL: aimarket_gaia_gateway-0.1.1.tar.gz
  • Upload date:
  • Size: 49.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for aimarket_gaia_gateway-0.1.1.tar.gz
Algorithm Hash digest
SHA256 e10d9068141efff0a9225bb27a6d49edf2c86533a7e078a408c9ed5a54f9a049
MD5 2273958fe5b64410918bc4308cc98e95
BLAKE2b-256 2846c012d930cdb8ea67ab9eadd3a79fbc4a995fe41064d3cc7d8aed6d9805a1

See more details on using hashes here.

File details

Details for the file aimarket_gaia_gateway-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for aimarket_gaia_gateway-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 924a19d5eabde5e260cc1af3d345103bf7d172df62bc2acbf8aa4e887e0ea19f
MD5 c6461b76b32beef2b8ba4238c5c93911
BLAKE2b-256 401795923cebe14d2cd521e26d9f5711624f7e24ce8048d4a3505fc0e6707c8f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page