THEPROTOCOL

DYNAMO

#4 of 21Tier II · full anatomy6/6 primitives live in production
Energy, Grid and Industrial M2M

A hundred thousand devices with economic identities, each one revocable in under half a second.

Open the live chamber in the app
The animated flow, the attack replays and the deep architecture run there; this page is the reference text.

Who this serves

The problem

A distributed grid has hundreds of thousands of devices that need to transact in fractions of a cent and be individually revocable within seconds. TLS gives you a channel. It does not give you an identity with an economic ceiling and a kill switch.

The system

DYNAMO is a distribution operator running 118,000 inverters, meters and batteries as economic actors. Every device is a workload with a SPIFFE identity and a short-lived certificate that renews itself. A rooftop battery in Aarhus sells 3.1 kWh into the evening peak and is paid per reading, in fractions of a cent, with the fee carved by the rail that moves the money. The site operator’s agents hold capability tokens scoped to one substation for one shift, so the blast radius of any single compromise is a data structure, not a hope.

At 17:42 a meter starts reporting impossible numbers. The operator revokes it. The revocation travels over the event stream and the device’s identity is dead in under half a second: its next reading has no one to be. The same action suspends its account and blocklists cross-frame receipt, so the value it holds is frozen in place. Every reading it ever signed is still on the ledger, which is how the forensics team finds the firmware bug by Thursday.

The cast and their ceilings

AgentRoleCeiling
inverter-7741Sells generation per readingSigned readings only. Budget per shift. No transfer authority beyond settlement.
substation-opsAggregates and bids the siteL4 token: one substation, one shift.
grid-settlementPays per accepted readingSettle only, allowlisted counterparties.
site operator (human)Holds the kill switchRevocation and suspension. Cannot mint, cannot transfer.

The flow, step by step

  1. 17:41. A reading arrives, signed by the device’s own identity.
  2. Settlement in fractions of a cent, fee carved in-rail.
  3. The reading is on the ledger forever.
  4. 17:42. Impossible numbers. The operator acts once.
  5. Revocation rides the event stream. Under half a second.

Each need, mapped to a live primitive

The needThe protocol primitiveStatus
Every device an identitySPIFFE workload identity, short-lived SVIDsLIVE
Per-reading settlementA2A payment authorization, settle via /teg/transferLIVE
Shift-scoped authorityIRONKEY L4 tokens: one substation, one shift, a budgetLIVE
Sub-second revocationIRONHAND revocation over the event stream, under 500msLIVE
One-action containmentCoordinated suspension: mTLS, account, cross-frame receiptLIVE
Site-wide freezeREADONLY_MODE break-glass, env-onlyLIVE

The attack this chamber refuses: The compromised meter, one second later

The attack. The revoked meter, still running hostile firmware, submits its next reading.

Why it fails. IRONHAND revocation propagated over the event stream and the SVID is dead. The reading arrives with no identity to be, and clamping the issuer has already emptied every capability token the site desk issued through it.

Rail S07 · Identity revocation. A revoked agent’s mTLS identity dies in under 500ms over the event stream.

What actually happens. Nothing settles, nothing emits, and the frozen balance waits for forensics. The ledger keeps every reading the device ever signed.

Deep architecture

DYNAMO at deployment scale: your grid frame holds the identity fabric, the per-reading settlement and the kill switch; a neighbouring operator runs its own frame for roaming; the fabric between them settles corridors without a clearing house. The field devices live below, enrolled upward. The trace replays one evening peak, readings to revocation.

The deployment, traced

  1. A reading arrives from the field, signed by the device’s own short-lived identity.
  2. The substation desk holds a capability token scoped to one substation, one shift. Blast radius is a data structure.
  3. The identity fabric admits the reading: a live SVID, inside its scope. Settlement follows in fractions of a cent.
  4. Every reading and its fee land on the ledger, append-only.
  5. The site desk bids the evening peak into the market. A bid is not a settlement.
  6. Roaming exists because two operators exchanged signed cards and licenses, not API keys.
  7. A roaming session settles across frames with an idempotency key. A retry can never double it.
  8. The neighbour frame credits exactly once. No clearing house sits between them.
  9. Their roaming desk confirms the session.
  10. Their ledger writes the same settlement. Two operators, one truth.
  11. 17:42. A meter reports impossible numbers. The operator acts once.
  12. Revocation rides the event stream. The identity is dead in under half a second, the balance freezes, and cross-frame receipt is blocked by the same action.

Adoption, phase by phase

Discover: No device changes yet.

Pilot: One substation, fifty devices, a working kill switch.

Production: A region’s fleet, enrolled, settling, revocable.

Federation: Roaming corridors without a clearing house.

Sizing

LevelWhatContainers
L1Devices and site agents live on an existing registry0 of yours
L2Run your site desks via the SDK, registry hostedyour agents only
L3A sovereign frame per operator region, fleet enrolled through the fabric~9 per region

One reading, and the revocation that outruns the next one

sequenceDiagram
  participant Dev as inverter-7741
  participant Fab as identity fabric
  participant TEG as your TEG
  participant ES as event ledger
  participant Op as site operator
  Dev->>Fab: signed reading (SVID, short TTL)
  Fab->>TEG: A2A authorize + settle per reading
  TEG-->>ES: reading + fee, append-only
  Op->>Fab: revoke device (one action)
  Note over Fab: revocation over the event stream, under 500ms
  Dev->>Fab: next reading
  Fab-->>Dev: no identity to be
  Fab-->>ES: refusal recorded, balance frozen in place

Topology, as declared

flowchart LR
  DEV["device workload<br/>SPIFFE SVID, short TTL"] -->|"signed reading"| REG["registry identity gate"]
  REG -->|"A2A payment authorize"| TEG["TEG settle per reading"]
  TEG --> ES[("event store")]
  OP["site operator"] -->|"coordinated suspension"| REV["IRONHAND revoke<br/>WS, under 500ms"]
  REV -.->|"SVID dead, tokens emptied"| REG

Standing it up

What this does not claim