Verify a cluster
A Calimero client trusts nothing on the network. Before it sends anything to a node, it checks what the node is running, and every answer comes back with a receipt a user can keep.
Before the first request
Section titled “Before the first request”- 01 · ReleaseWhich image?The node names the signed mero-tee release it runs; one below your floor is refused.
- 02 · SigstorePublished measurementsThe release's published-mrtds.json and its signature are checked.
- 03 · IntelA genuine TDThe quote is checked against Intel's collateral; a debug TD is refused.
- 04 · MatchThe right imageIts registers match the release's profile.
- 05 · BindYour nonce, its keyThe quote binds your nonce and the key the sealed channel opens to.
Only then does the client open the sealed channel. A replayed quote fails on the nonce; a quote from another machine fails on the key.
Choose what you trust
Section titled “Choose what you trust”| Setting | mero-js | Python / Rust / meroctl |
|---|---|---|
| Trust signed releases from a version up | policy.release.minReleaseVersion |
--min-release, the client’s default floor otherwise |
| Which image profiles | locked-read-only by default; debug only with allowDebugProfile |
--tee-profiles; debug only with --allow-debug-profiles |
| Accept a development cluster’s mock quotes | allowMock: true |
allow_mock=True, --allow-mock |
A debug profile lets the host read the VM’s memory, so production clients never accept one.
Check every replica of an app
Section titled “Check every replica of an app”A user can ask more than the node they talk to. verify_app_cluster (Python and Rust) checks the quote of every
replica of an app instance with the client’s policy, collects each replica’s receipt key, and reports the
governance they all attest: who approves new node images, who upgrades apps, and who approves outbound hosts on
this cluster, each either the app’s owner or the operator. A cluster can’t claim one rule to you and run another.
Receipts
Section titled “Receipts”Every answer carries a receipt: a node’s signature over the app, the log position, a digest of the result and the node, made with a receipt key that the node’s quote binds. Keep it, and you can show later which attested image produced the answer.
The full check, step by step, is in the core reference’s Attestation & receipts.