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.0

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.0
File Size Uploaded Provenance
aimarket_gaia_gateway-0.2.0.tar.gz 488.7 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 881.7 kB

Release files / aimarket_gaia_gateway-0.2.0.tar.gz

Download URL aimarket_gaia_gateway-0.2.0.tar.gz
Size 488.7 kB
Tags Source
SHA-256 checksum
How to use checksums
c49644fa1026459cf682f393b974fc2f003cdcdcd30270eca3cb481afdfaec37
BLAKE2b-256 checksum
How to use checksums
3da03405d6fb579b565522aec5ff97abe5837a5298ada1e9749f9b87067917e2
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.0-py3-none-any.whl

Download URL aimarket_gaia_gateway-0.2.0-py3-none-any.whl
Size 393.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6c5e2d7ea4dc47ff630387702785b975d46cab8e1ff7e0b8937ffce3ce9cf5f3
BLAKE2b-256 checksum
How to use checksums
586148df7332f24c75efcbce4b87bb8283a882a68e0852398e9e5e372b2566c6
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.0

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