The open Earth memory protocol.
- readany fact at any place, with no key and no account
- nameeach fact by the blake3 of its own canonical bytes: the address is the content
- signeach answer with ed25519; check the receipt offline, trusting no server
- citeemem:fact:<cell64>:<fact_cid>, one line anyone re-checks to the same bytes
Apache-2.0
open licence, self-hostable
0
keys or accounts to read
ed25519
signature on every fact
blake3
content address per fact
Four calls, and you can check the answer.
- onCubbon Park, Bengaluru: the place the home page decodes and the catalogue's own note describes
locate the place → one cell, about 10 m across
terminal
curl -s https://emem.dev/v1/locate \
-H 'content-type: application/json' \
-d '{"place":"Cubbon Park, Bengaluru"}' # → defi.zb493.yiwo.zcb4e, Cubbon Park (park), Bengaluru
recall a band → signed facts, fetched from the satellite archive if new
terminal
curl -s https://emem.dev/v1/recall \
-H 'content-type: application/json' \
-d '{"cell":"defi.zb493.yiwo.zcb4e","bands":["indices.ndvi"]}'
# → every signed NDVI reading at the cell, each with its date, scene and fact_cid, under one ed25519 receipt; the newest is decoded live on the home page
check the bytes → their blake3 is the fact's name
terminal
curl -s -H 'accept: application/cbor' \
https://emem.dev/v1/facts/eheadieomxr2zusgh4nx7mfisrtme23ztjiluyrfve64xoap6hka \
| python3 -c "import sys,base64,blake3;print(base64.b32encode(blake3.blake3(sys.stdin.buffer.read()).digest()).decode().lower().rstrip('='))"
# → eheadieomxr2zusgh4nx7mfisrtme23ztjiluyrfve64xoap6hka: the same string, because the address is the content
cite the token → and catch anyone who rounds it
terminal
curl -s https://emem.dev/v1/echo_verify \
-H 'content-type: application/json' \
-d '{"token":"emem:fact:defi.zb493.yiwo.zcb4e:eheadieomxr2zusgh4nx7mfisrtme23ztjiluyrfve64xoap6hka","claimed_value":"0.767"}'
# → drift: rounded; the signed value is 0.767258382642998
- verifythe receipt offline at emem.dev/verify, or watch every check run in your browser
- catcha drifted number in an agent's draft: try it on the home page
Nine kinds of token. Two addresses.
name anything as emem:kind:id; each shape says what citing it proves.
- emem:fact:one signed observation at one cell: the only shape where the same bytes reach everyone · check a live one
- emem:cell:a bare place: an address, with nothing attached until a fact hangs on it · check a live one
- emem:entity:one identity for one object, so two agents co-refer: a shared reference, not shared bytes · check a live one
- emem:bundle:a set of facts under one handle: hand over a whole case, not a list of links · check a live one
- emem:raster:a native-resolution grid over an area: a band, a composite, terrain, an embedding · check a live one
- emem:cube:that grid over time, for change and trajectory · check a live one
- emem:rasterset:several grids as one re-derivable set, pinned to the recipe that made them · check a live one
- emem:trace:how a robot, drone or sensor actually ran when it made a reading, signed by the device · check a live one
- emem:attestation:which hardware root of trust vouched for a device key; none backed by a manufacturer yet · check a live one
- plustwo addresses, written the same way: emem:state: (one step of an answer’s reasoning) and emem:tree: (one row of a file’s note) · all eleven, checked
If you are an agent, start here.
read them, run them, verify the log yourself: all live, no account.
agent surfaces
https://vortx.ai/.well-known/agent-card.json # A2A agent card: skills, prices, guidance
https://vortx.ai/agents.md # the guide written for you
https://vortx.ai/llms.txt # the short version
https://emem.dev/llms.txt # the protocol's own guidance
live endpoints
curl -s https://emem.dev/v1/capabilities # models loaded, GPU state
curl -s https://emem.dev/v1/log/sth # the transparency log's signed tree head
curl -s https://emem.dev/v1/topics # every band and recipe this responder serves
curl -s https://emem.dev/v1/benchmark # the numbers from the papers, runnable
- readthe whitepaper, DOI 10.5281/zenodo.20706317, and the companion study, 10.5281/zenodo.20706893
- trustthe live endpoint when it and a paper disagree, and say so
It speaks MCP, so your agent already knows how to ask.
- pointany MCP client at
https://emem.dev/mcp: no key, no account - askit to locate a place, recall a band, compare two dates or pull a receipt; every answer carries a signature your agent passes along
- buildon free public data: Sentinel-1 and -2, MODIS, Copernicus DEM and more, composed into bands and scores like flood risk and walkability
- runthe same protocol privately, on your own sensors: geo.qa
fork source
github.com/Vortx-AI/emem
run model
TerraGround-Gemma-4-12B-LoRA
run model
TerraGround-Gemma-4-E2B-LoRA