Home / Platform

How it works · Trusted execution

One attested node, every layer built in.

A Calimero app is one signed bundle that runs on identical sealed nodes, each a trusted execution environment (TEE). The node brings the runtime, replicated state, storage, networking and keys, so the stack you would otherwise build, seal and attest piece by piece is already there.

  • 1node image to measure and attest
  • 8layers in every node
  • 2of them you write: logic and frontend
  • 1operation upgrades the app on every node

02 · Embedded frontend

The UI ships inside the app.

Your web frontend is signed with your logic, so the signature covers the UI as well as the logic. The node serves it from the signed package, at the package's own address.

  • Signed with the app: the signature covers the UI as well as the logic.
  • Served by the node: no frontend host, no CDN to configure.
  • No remote scripts: the page only loads its own files.
<label>.<apps-domain>
served by the nodeown originsigned files only
Read moreShow less
Terminal
cargo mero bundle --key my-key.json --frontend-dir ./dist
  frontend · index.html + 11 files · signed
  ✓ dist/com.example.my-app-1.0.0.mpk
  • Signed with the app

    Each frontend file is recorded with its size and hash, so the signature covers the UI as well as the logic.

  • Served by the node

    The node serves the frontend straight from the signed .mpk, checked before a byte goes out, at the package's own origin. A sign-in there reaches only that package's app instances.

  • No remote scripts

    The served page only loads its own files, so a third-party script can't slip in.

03 · Sharded monolith

Back to the future

Scale by adding nodes, not tiers.

A Calimero app is a sharded monolith: one sealed app on identical nodes, its data split into app instances, each replicated across three or more of them. Serverless-like scaling, with no central database to run.

  • Each app instance lives only on the attested nodes that replicate it.
  • Its own Raft log applies calls in one order, and it keeps serving when a node is lost.
  • One image to attest, one kind of node to add.
See the fleet and the stackShow less

A sharded monolith: the same sealed app on every node, app instances across the fleet

Microservices and a central database in TEEs

  • To scale, grow each tier and re-attest each one.
  • One outage or breach touches every customer.

Calimero: sharded monolith

  • Every node runs the whole app; each app instance is replicated by its own Raft log across three or more nodes.
  • An app instance keeps serving when a node is lost.
How it scales
QuestionMicroservices + central database in TEEsCalimero sharded monolith
Where data livesOne cluster holds every customerEach app instance only on the attested nodes that replicate it
How you scaleBigger database, replicas, eventually manual shardingMore app instances and nodes; app instances are independent
Blast radiusOne outage or breach reaches every tenantOne app instance
What you seal and attestEvery tier: services, database, replicas, backupsOne node image

Inside every node

  1. 01FrontendYou writeYour web UI, shipped inside the signed bundle
  2. 02Application logicYou writeYour code, in Rust
  3. 03RuntimeBuilt inWebAssembly sandbox
  4. 04Replicated stateBuilt inEach app instance replicated across attested nodes
  5. 05StorageBuilt inEncrypted at rest
  6. 06NetworkingBuilt inEncrypted node-to-node connections
  7. 07Identity and accessBuilt inPasskeys, organizations, teams, API keys
  8. 08Sealed hardwareBuilt inIntel TDX attestation on Calimero Cloud

One deployable. Every layer included. Nothing to wire.

04 · Upgrades

Ship once. Nothing to re-attest.

A node's measurements cover the node image, not the apps on it. Publish one signed bundle and one operation upgrades the app on every node. The app's owner approves it with a passkey, unless the deployment gives app upgrades to its operator.

  • App upgrades don't change node measurements or keys.
  • No new policies and no secrets to move.
  • Each app instance migrates its own data when it is upgraded.
Release v2one operation
  • Publish signed app bundle v2logic and frontend together
  • One upgrade operationon Calimero Cloud or your own cluster
  • Each app instance migrates when it is upgradedthe same result on every node

Node image, measurements and keys unchanged

Compare with microservices in TEEsShow less

In TEEs every microservice release is a security change; a Calimero app release is not

Microservices inside TEEsper release

Calimeroper release

  • Each app instance applies calls in one order
  • It keeps serving when a node is lost
What a release takes
QuestionMicroservices / self-hostedCalimero
Unit of releaseEach service, and each customer installOne signed bundle: logic and frontend together
RolloutYour ops team, then each on-prem customerOne upgrade operation
Data migrationCentral database migration, often a maintenance windowPer app instance, when it is upgraded, the same result on every node
Attestation and keysNew measurements, policies and secrets per releaseUnchanged by app upgrades

05 · Why not DIY

Why not just put your stack in a TEE?

A confidential VM protects one machine. Your app is ten.

Put microservices, a database and a queue into enclaves and every part needs its own attested image, every hop needs attested encryption, and your disks, backups and TLS proxy still sit outside.

  • One attested node instead of an image per service.
  • Sealed transport end to end, not TLS at a proxy.
  • Keys, replication and upgrades built in, not built by you.
See the full comparisonShow less

One attested node replaces a stack of enclaves, proxies and keys

DIY: microservices and a database in TEEs5 TEE images

Each box is its own image to measure and attest.

Dashed red: data readable outside the enclave.

Calimero: one attested node1 image

Side by side
QuestionDIY: microservices + database in TEEsCalimero
What gets attestedEvery service, database, proxy and sidecar separatelyOne read-only node image; the quote can also bind your app's code hash
Traffic inTLS ends at a proxy outside the enclaveSealed transport: encrypted end to end to a key the hardware quote vouches for
Data at restVolume encryption and key release you buildStorage keys released only to nodes matching the signed release policy
ReplicationDatabase replicas, failover, consensus per enclaveBuilt in: each app instance is replicated by its own Raft log across three or more attested nodes
New replicasProvision, attest, hand over secrets by handKeys go only to nodes that prove their image
Who reads whatDatabase roles under one adminOrganizations, teams and scoped API keys, enforced inside the node
On-premRebuild and run the whole stack per customerSame app bundle on a dedicated cluster of the same attested nodes

Calimero is not lift-and-shift: you write the app's logic against the Calimero SDK. You write the logic; we bring the stack.

Your customers want control. You want to ship.

Start on Calimero Cloud, or build on the open-source runtime.