Operators sign in with a passkey — hardware-rooted, no password. Customers federate to their own IdP. Your machines authenticate by their CPU.

Step 1 · Use case

What are you protecting?

Pick the secret or identity to secure. Each card opens a guide that explains exactly what NoFoundry builds — a hardened Confidential VM on your own cloud, running our agent, attested to our gateway.

Name this project

One project = one protected use case. This name shows on the dashboard, in the audit log and on the recipe.

Where does the key live?

You never paste a key. NoFoundry's recipe mints it by IaC straight into custody — never displayed, not even once. You reference it by name.

Your app changes one line. Point your provider's base URL at the local agent and delete your .env — the key is released only into the attested CVM, your data never transits NoFoundry (Mode B).

Step 3 · Prepare

Review & prepare

Everything you've chosen, in one place. Pick the environment and confirm the key name — Deploy provisions it. No key value is ever entered or shown.

This project

Name the key

NoFoundry proposes the name — rename the base, pick the environment. A frozen creation date is appended: deterministic and idempotent, so a re-apply never changes it (no random suffix). The value is minted into custody, never displayed.

prod-gemini-api-key-20260621
sealed in FIPS HSM · provisioned by IaC · never displayed
by name only
← Fine-tune the security policy
The hardware lock

Security Policies

Per project, define what the silicon must prove. Because identity is the CPU itself, these switches are absolute — not advisory.

Your project — one protected use case
A project is one protected use case, scoped to your tenant — the handle your machines enroll into, and the policy they must satisfy. You're setting the policy for this project below. (Its technical id looks like nf_act_… — you'll see it in the audit trail. To edit another project's policy, open it from the Dashboard.)
Require a real AMD SEV-SNP or Intel TDX CVMReject any simulated / mock attestation.
Bind to the enrolled physical Chip IDIf the agent is copied onto another CVM, the new CPU reports a different Chip ID and the connection is refused — even with the same machine key.
Require a healthy measured / secure bootBlock access to the provider API (e.g. Gemini) if the CVM's kernel was modified or did not boot securely.

A modified agent is rejected at the handshake. Leave empty only in development.

24 h
Tamper-evident

Policy change log

Every change is hash-chained to the one before it and signed by the gateway's attested key. Rewriting history breaks the chain — provably, for an auditor.

Operate · all your projects

Projects

Each project is one protected use case on your own cloud. Open a project to see its machines, settings and danger zone — or watch the whole fleet re-attest below.

Fleet · continuously verified
every CPU across all projects re-proves itself against the silicon root — window ≤ 24h · last sweep just now. Filter by state:

Security events & audit — SIEM-ready

live · /api/events

Every important step is recorded with dual clocks (gateway + in-guest agent), streamed live, and forwarded to your SIEM (Splunk / Sentinel / Chronicle / Elastic). Policy & security decisions are anchored in the signed, hash-chained policy log — your NIS 2 / DORA evidence trail. Click any row for the raw record.

waiting for events…
Control plane · operator

Verify the verifier

The attestation authority, attesting itself. Don't take our word for it — this is NoFoundry's own silicon, signing root and posture, live.

Loading…
← Projects

Project

Overview

Machines

Danger zone

Destructive actions on this project. Each is logged with your identity and a reason, then pushed to your SIEM.

Revoke all active sessions
Pushes a CAEP session-revoked SET to your IdP for every machine. Reversible — they re-attest on the next handshake.
Decommission all machines
Irreversible. Revokes + deletes every identity in this project; the chips can never reconnect. Run terraform destroy for the CVMs.
Your account

Account & preferences

Operator profile and defaults. Authentication here is the human layer (OAuth2 / Passkey in production); your machines authenticate by their CPU.

Authentication

Password sign-in is enabled for this demo. Production adds OAuth2 (GitHub / Google Workspace) and Passkey / FIDO2.

Send feedback

Tell us what's working and what's missing. Tied to your account so we can follow up.

Step 6 · Continuous Access

Real-time revocation

MFA stops the login — it can't stop a stolen session. NoFoundry can: the instant the silicon stops vouching, the session dies, mid-flight. This is the real-time containment DORA and NIS 2 art. 21 demand.

The kill-switch

Continuous
re-attestation
Clone · drift
posture fail
CAEP session-revoked → IdP
Zitadel / Okta / Entra
SIEM HIGH alert
Splunk / Sentinel / Sekoia

A signed Security Event Token (SSF-CAEP) is pushed to your IdP, which terminates the exact session bound to that machine. The stolen cookie is dead — no waiting for the next login.

Triggers — what kills a session

  • Clone — the agent reappears on a different CPU (Chip-ID mismatch).
  • Measurement drift — the running binary no longer matches the official build.
  • Posture failure — secure boot / vTPM check fails on re-attestation.

Manual kill-switch

Operators can revoke any machine on the spot — every session bound to it dies immediately.

Recent revocations

Step 7 · Decommission

Retire a machine

When a workload is retired, tear it down cleanly — the Confidential VM, its machine identity, and the sealed secret all go. This is distinct from Revoke (an incident kill-switch): here you remove machines you created and no longer need.

Clean teardown

  1. terraform destroy removes the Confidential VM you created, the IAM grant, and the HSM-sealed secret.
  2. The machine identity is revoked — any session still bound to it dies (CAEP → IdP).
  3. No copy of the secret ever existed in your code or RAM — there is nothing left to leak.

Your machines

Pick a machine you created to decommission. (Not a security incident — for that, use Revoke.)

Set up & watch

Deployment

recipe ·

Provision the Confidential VM in one terraform apply. The recipe carries only your project idnot a secret. The machine then proves itself by silicon and you approve it here (or it auto-enrolls). Nothing to mint, nothing to paste. Your app needs no rewrite — a CVM is a normal Linux VM; lift-and-shift, repoint one URL.

What you actually do

on your cloud

Approve the machine — device flow

demo / live viewer

The CVM proves itself by silicon (genuine SEV-SNP + your pinned code + your cloud account). It then waits for your out-of-band approval here — your console on your PC is a separate channel from the machine, so a compromised CVM can never self-approve. Two paths: a known-good machine (valid token or matching policy) auto-enrolls → it shows up directly in your Dashboard (green), not here; only a machine that needs review steps up to you here. The two buttons below simulate a machine calling in so you can see the flow now — in production your real CVM does this automatically after terraform apply.

Boot & integrity log

Live stream of the CVM startup over the attested tunnel — the agent reports each verify step, then only enrolls after verify.sh confirms SEV-SNP + Secure Boot. live · /api/events · no live CVM yet → replays a sample boot

› press “Watch a CVM boot” to stream the integrity gate…
Advanced — offline enrollment token · on-prem / no cloud identity

Cloud CVMs don't need this — they prove themselves and you approve them above. For on-prem / bare-metal without a cloud instance-identity, fall back to a single-use, 15-minute token the recipe injects into the machine.

nf_enroll_…
valid 15:00
🟢 Machine enrolled by hardware attestation