Skip to main content

Ask any place on Earth what it looked like, and when.

geo.qa is a managed deployment of the open emem protocol. Public satellites, plus the cameras, drones and sensors you run, file into one addressed, signed record. Every answer carries the observations behind it and a receipt that verifies at emem.dev, without us.

Watch · Remember · Prove
Public cameras + major satellites
Verify · offline, no key
the cell lattice≈10 m per cell
Every place on Earth resolves to a stable address roughly ten metres on a side, matched to the Sentinel pixel pitch. Every observation, from any sensor, files against it.

What it is

Ask a place. Prove the answer.

Put an AI agent into production and, sooner or later, it answers a question about a place it has never observed: fluently, and wrong. geo.qa is the fix. One call returns what was observed at a place, with a signed receipt anyone can check offline, no key and no account. When the ground cannot answer, it says so, instead of guessing.

1 · Aska place and a question, in one call.
2 · Get proofa signed answer: direct, derived, or an honest “no data”. Never a silent guess.
3 · Verifyresolve the receipt offline against the open emem.dev protocol. No key, no account, no trust in us.
Vembanad Lake · the cellSentinel-2
Sentinel-2 true-colour crop of cell defi.zb46d.hiro.xekO, Vembanad Lake
# an ungrounded model ask is there standing water at Vembanad Lake right now? → "No recent flooding reported." (invented) # the same question, grounded by geo.qa ask is there standing water at Vembanad Lake right now? → surface_water = 100% across 12 signed facts cell defi.zb46d.hiro.xekO · NDWI · SAR · optical fact hsdmrcoct… · signed · merkle ✓ # resolve & verify offline at emem.dev/verify
A real signed reading (Vembanad Lake, 29 Jul 2026). Paste the cell or the fact and it resolves; where the ground has no data, the same call returns an honest “no data here”, not a guess.

How it works

From sensor to signed fact.

For the cameras, drones and ground sensors you run, the encoder sits at the edge of capture, so what leaves is a latent, not raw footage. For satellites, geo.qa builds on the signed embeddings of the open emem.dev ledger. A decoder resolves each latent onto one shared, addressable Earth memory.

01

Observe

Satellites, drones, vehicle cameras and fixed CCTV, all on the same ground.

02

Encode → latent

For the sensors you run, a frame becomes a latent vector on-site, so raw footage never leaves. Satellite scenes arrive already encoded, as emem.dev embeddings.

03

Decode → memory

The decoder resolves each latent onto the cell lattice: one shared Earth memory.

04

File a fact

Filed with its band, its time and a signed receipt. Nothing is overwritten.

05

Agent cites

Your model answers with the exact observations that support it, receipt attached.

The decode path. For edge sensors, bandwidth and exposure both collapse at step 02: only the latent moves on.
Cell×Band×TslotFact
cellWhere. A stable address ≈ 9.55 m on a side. Every place resolves to exactly one; neighbours are one hop away.
bandWhat. A measured quantity: optical, NDWI, SAR, thermal, pressure, or a signed human report.
tslotWhen. The instant of observation. History is append-only.
factThe answer. A value at cell × band × tslot, carrying its provenance. Direct, derived, or a signed absence, never a silent guess.
receiptThe proof. An ed25519 signature over a BLAKE3 hash of the canonical CBOR, verifiable offline against the open emem.dev protocol.
factgreenness (NDVI) = 0.234
celldefi.zb4e6.fIsI.hujO
placeNashik, Maharashtra
bandsNDVI · NDMI · LAI
sources12 signed facts · Sentinel-2 + MODIS
fact oqdnpskm… · ed25519 signed · emem.dev verifiable
Nashik · the cellband × tslot
Sentinel-2 true-colour crop of cell defi.zb4e6.fIsI.hujO, Nashik

Use it

An interface agents already speak.

One call shape, shared with the open emem.dev protocol, so an agent reads public and private memory in a single answer. Every source writes into the same addressable record.

query.py
# ask the live API about a place: land cover from satellite
curl -s \
  "https://geo.qa/api/tool/satellite/lulc/analyze?lat=25.276&lon=55.296" \
  -H "Authorization: Bearer $GEOQA_KEY"

# → { "class": "water",
#     "coverage": { "water": 0.94, … },
#     "source": "sentinel-2" }
locate(lat, lon)a place → its stable cell address
ask(cell, band)a fact at an address, with its receipt
recall(cell)every signed fact filed at a place
watch(cell, bands)stream changes as they are observed
recall_polygon(geo)read a whole neighbourhood in one call
verify(token)check any receipt against emem.dev, offline
Live · cameras being analysed online
Connecting to the live picture…
Every observation signed, verifiable offlinesee the live picture →
01

Autonomous fleets

The vehicle’s cameras write to the memory; the car reads neighbouring cells to know what is round the corner before it sees it.

what is in the next cell right now?

02

Energy & infrastructure

Pads, lines and stations watched by every sensor at once. A page goes out only when independent witnesses agree.

did pressure at G-247 drop overnight?

03

Insurance & risk

Price and settle against what was observed, not what was claimed, and every fact arrives with its receipt.

was this parcel underwater on 04 May?

04

Defence & GEOINT

An owned, airgapped memory with full provenance: answers built to survive an audit, weeks later.

what changed at this site since Tuesday?

Own it

Train your own model. Keep everything.

The memory is not only something to query, it is a substrate to learn from. Every dated, multimodal fact is supervision for a model you train, own and deploy, without your data ever leaving the boundary.

train.py
# train a model on your own memory (Max plan)
curl -s -X POST https://geo.qa/api/world-model/training \
  -H "Authorization: Bearer $GEOQA_KEY" \
  -d '{ "bands": ["optical","sar_vv","thermal","weather"], "horizon": "7d" }'

# → { "job_id": "wm_…", "status": "queued" }
train.jepa(memory)a dynamics model on your own ground, scored against persistence, no skill assumed
train.trajectory(band)a band’s trajectory cell by cell, honest about season and noise
train.detect(classes)your own categories, on your own fused imagery
train.embed()a private encoder tuned to your fleet and places
model.deploy()serve it inside your tenancy, citing the same receipts
model.evaluate()score against held-out tslots; nothing was overwritten

What never leaves

the boundary holds by design, not by policy

  • Raw imagery. Encoded at the edge of capture; only the latent vector moves on.
  • Your memory. A single tenant: your keys, your retention, your jurisdiction.
  • Your models. Trained and served inside your boundary. No calls home, no training on your data by us.

What you keep

provenance that survives a hostile review

  • Provenance. Every answer carries a signed, verifiable receipt.
  • Audit. Replay any decision against the exact observations it used.
  • Interop. The same call shape as the open emem.dev protocol.

Where it sits

Under the models, on emem.

Several layers of intelligence are converging, and each one needs something to be true about a real place. geo.qa is the ground truth they sit on.

Large Language Modelsreason in language
reason
World Foundation Modelsimagine plausible physics
predict
Large Geospatial Modelslocalise in 3D space
localise
↑ grounded on ↑
geo.qa · Earth Memoryremember & cite what was observed
ground truth
World & geospatial modelsgeo.qa
Outputan inferred representationan observed fact, dated
Trustblack-box inferencea signed, verifiable receipt
Deploymenta cloud service you callyour tenancy, airgapped
Timea single snapshotevery tslot, append-only
Fusionmostly one modalitymany, one address
To build ona fixed, pretrained modela memory you train your own on

World Labs’ Marble and DeepMind’s Genie generate a plausible world; they do not claim to reproduce the real one. Niantic’s Large Geospatial Model and Google’s AlphaEarth do read the real Earth, but as a model you call, not a memory you hold the keys to, cite and train on. geo.qa is the layer underneath: a dated, signed record of what was observed, that your own models can learn from.

#ModalityWhat it writes into the memoryCadence
01
Satellite opticalmultispectral surface
land cover, water, change, vegetation indicesdaily–weekly
02
Satellite SARall-weather radar
structure, moisture, flood, motion, through cloud1–6 days
03
Thermal / IRheat signature
flares, fires, equipment activity, anomaliessub-daily
04
Drone surveycentimetre detail
close-range inspection of a single asseton tasking
05
Vehicle camerasstreet level
what is round the corner, lane by lanecontinuous
06
Fixed CCTVthe perimeter
gate, yard, fence line, occupancycontinuous
07
Ground sensorsSCADA / IoT
pressure, flow, level, vibrationseconds
08
Weather fieldsenvironment
rain, wind, temperature, soil moisturehourly
09
AIS / vesselmaritime tracks
who is where on the water, and whenminutes
10
Field reportssigned human notes
a person's observation, attributableon event
11
Cadastral / GISthe record of record
parcels, assets, boundaries, ownershipon change
12
Acousticsound events
alarms, gunshots, machinery, leakscontinuous

Give your model a memory.

Stop letting it guess about the world. Start letting it cite, and train on what it cites.

geo.qa · a vortx ground decoder · emem.dev open protocol