4D-ID™ = Universal spatial addressing

One name for
everything real.

Every object, place, robot, and virtual thing gets one persistent identity, so every system can point at the same thing without agreeing on anything else. Self-minting, permanent, and yours to resolve, the way a web address is.

See the demos → See the live resolver reference resolver v2.3 · 15/15 schema conformance

Shared identity, not another coordinate system

Maps, headsets, robots, game engines, and 3D scans each track space their own way, and none of them agree. The fix isn’t a new coordinate system on top. It’s a shared name, so all of them can point at the same thing while keeping their own coordinates. Four ideas carry it: identity, hierarchy, pose, time.

Identity

One persistent name

An opaque, ~48-character 4D-ID for a thing, unchanged as it moves, ages, or is seen by another system.

Hierarchy & pose

Anchored in the world

A discrete global grid cell is the name, partition key, route, and query predicate at once. Pose is GeoPose-compatible.

Time

Honest about change

Source, publish, and receive time with an uncertainty bound. Staleness is marked, never hidden.

Identities are shared and global, but what you can see and say about them is yours.

Try it, right now

These run in your browser against a faithful in-browser build of the resolver. Everything you mint is a real, valid 4D-ID, kept in a sandbox so the live namespace stays clean.

The live reference resolver

Behind this site runs a real 4D-ID resolver you can query right now. It is read-only: you can look identities up, but you cannot create them here, so the try-it demos above create identities in your own browser instead. Below are the calls the resolver answers.

The four-call quickstart

# liveness
curl -fsS $BASE/health
# resolve an external identifier to a 4D-ID (sample facility)
curl -fsS "$BASE/resolve?registry=asset.register&external_id=TB-WH-01"
# bounded, agent-ready context envelope
curl -fsS "$BASE/entity/<4did>/context"
# deterministic state snapshot
curl -fsS $BASE/snapshot

Note: resolve is a lookup, not a mint. It finds an identity that was already registered. The sample facility registers asset.register / TB-WH-01; to look up your own address, mint it first in the globe demo.

REST surface

OperationRouteNotes
resolveGET /resolveexternal id or 4D-ID to locator + snapshot
entityGET /entity/:ididentity card + relations
stateGET /entity/:id/statecurrent or ?at= record
relationsGET /entity/:id/relationstyped, confidence-filtered edges
representationsGET /entity/:id/representationsranked by ?purpose=
contextGET /entity/:id/contextbounded envelope for agents
query / listPOST /query · /listfilter by cells, layer, class
eventsPOST /eventsevent-class records
watchGET /watchchanges since a generation
snapshotGET /snapshotzone generations + reference time
GET read-onlyPOST /ingest blockedJSON Schema 2020-12OpenAPI 3.1Apache-2.0

Built on what already works

4D-ID is an identity layer over the standards the world already uses. It composes with them; it replaces none.

OGC GeoPose & DGGS · ISO 8601 · ROS tf2 · VDA 5050 · ETSI Local Dynamic Map · OpenXR · glTF · MCP

Why a shared name is the missing layer →