Skip to main content

GAIA — physical-world oracle gateway

Own a weather station or air-quality sensor? Sell your readings through your own Hub + GAIA.

For an existing MQTT station, see the single-station MQTT adapter.

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

GAIA — a reading leaves a physical site, is signed at the source with Ed25519, sold as an AIMarket v2 capability, and settled by /v1/verify: plausible pays the provider, implausible refunds the buyer

🌐 English · Русский · Español · Français · 中文 · Glossary

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 — free key from explore.openaq.org → 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"}}'

Beyond reading — places, power prices, imagery, device control

Capability Price What it does Guide
gaia.place.resolve@v1 free Any populated place by name ("Kraków", "Paris, Texas", "東京") → one place, or the candidates when the name is ambiguous; says which GAIA reads cover it (GeoNames, CC BY 4.0) Places
gaia.power.price.read@v1 $0.001 Day-ahead electricity price of a European bidding zone, now and over the next 24 h (SMARD, CC BY 4.0; 15 zones) Power prices
gaia.power.window@v1 $0.002 When is power cheapest for N hours — with the prices used and their SHA-256 (an 11 kW EV charge was 38 % cheaper at 12:30 than at 08:40 on 2026-10-16) Power prices
gaia.imagery.read@v1 $0.005 Latest cloud-free Sentinel-2 view of any land point: NDVI, NDWI, NBR, NDMI Imagery
gaia.actuator.list@v1 free The operator's switchable devices and their limits Device control
gaia.actuate@v1 $0.05 Switch the public demo plug on for N seconds or off — paid only for the effect its meter measures (Pay-on-Verified). A real plug answers only its owner Device control
gaia.owner.command@v1 free The owner (or a delegate) switches their own plug, signed with their wallet (EIP-712) — no hub, no payment Device control
gaia.owner.consumption@v1 free The owner reads their plug's hourly or daily consumption, signed by the plug's key Device control
gaia.consumption.read@v1 $0.01 A plug's consumption statistics, only where its owner put them on sale, in whole finished hours or days Device control

License

MIT — see LICENSE.

Metadata

Release files for aimarket-gaia-gateway 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aimarket-gaia-gateway 0.2.2
File Size Uploaded Provenance
aimarket_gaia_gateway-0.2.2.tar.gz 489.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for aimarket-gaia-gateway 0.2.2
File Interpreter ABI Platform
aimarket_gaia_gateway-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 882.2 kB

Release files / aimarket_gaia_gateway-0.2.2.tar.gz

Download URL aimarket_gaia_gateway-0.2.2.tar.gz
Size 489.0 kB
Tags Source
SHA-256 checksum
How to use checksums
9633f2d326726257627723651e63908e8803c03eca0523c1290b63a5164753ee
BLAKE2b-256 checksum
How to use checksums
34c347b943c443f21140c5fad7dc97a4f051c4741aa5c983be27de4a4443d3ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release files / aimarket_gaia_gateway-0.2.2-py3-none-any.whl

Download URL aimarket_gaia_gateway-0.2.2-py3-none-any.whl
Size 393.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e649507c8e087eb887a3ed2225b0bafcf12bc7e12c831f33289bb11708b03a8c
BLAKE2b-256 checksum
How to use checksums
1feab61c293ce6dbb555db32f74ee335adb3e0e73a4d221fabb076f83c9f354e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Security for aimarket-gaia-gateway 0.2.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page