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.0.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.0-py3-none-any.whl (68.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: aimarket_gaia_gateway-0.1.0.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.0.tar.gz
Algorithm Hash digest
SHA256 1eed16348de5f733271095aaa2746142688e96e1932eec25e618596423592b53
MD5 7a05aaf9b36553658043f04209e4063a
BLAKE2b-256 80555846f64b5880a39ad71fdb62bfdcbb05d30d763cfb2cc1bf1684ee59efe4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aimarket_gaia_gateway-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7fba03c666664fda2d6457692d5ab1ae160d31130ed7d14571eb7e2d7668d924
MD5 6ab506acdbb5b990ac24b017f05be66a
BLAKE2b-256 6537533fdb542f431f95ac352fe493b898c2e129ea8b29aabd62e01c95781a12

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 Sentry Error logging StatusPage Status page