Skip to content
Alpha: for testing only; it does not yet meet the Cyber Resilience Act’s requirements. Status and limits →

Keys and devices

There are no passwords and no shared accounts. Every person and machine holds keys of its own, made where they are used.

Each device has two P-256 keys: one signs every request (with a timestamp and a nonce, replay-guarded), one is for key agreement, so the hub can seal results, such as a temporary credential, that only this device can open. The device pins the hub’s own certificate authority at pairing.

A device registers how its signing key is protected, and the hub caps what it may do by that level. The level is the client’s statement (there is no attestation yet), but it bounds the device for good: a key file stolen from a CI box never approves and never becomes owner.

levelthe signing keyrolesapprovesdeletes production directly
presenceSecure Enclave with user presence; TPM with a PIN for each useowner, operator, vieweryesyes, name typed
passphrase-interactivekey file, passphrase typedoperator, viewernoasks a person
tpmTPM without a per-use PINoperator, viewernoasks
tangkey file unlocked by Clevis/Tangoperator, viewernoasks
passphrase-storedkey file, passphrase from a file or the environmentoperator, viewernoasks

The key stores in vai: a passphrase-protected key file on every system; the TPM on Windows and Linux; the Secure Enclave on a Mac through the ownpaas app today, in vai itself In progress.

One per agent integration and device, P-256, without user presence, registered by the device’s signing key. The hub derives the principal agent from it and holds it to the agent’s ceiling. See agents and approvals.

For CI: scoped (read, twins:write, access:developer, access:admin, releases:promote, destructive), with an expiry of 30, 90 or 365 days and an optional list of source addresses. Only a hash of the secret is stored (Argon2id); the key is shown once. A key of kind agent may hold only read, twins:write and access:developer.

  • Data keys seal every secret the hub stores: your cloud tokens, S3 keys, repository passwords, its certificate authority’s key. They are a systemd credential on the hub’s server, never in the backup bucket.
  • The recovery key, shown once by vai up, unwraps the data keys onto a new server after a loss. Keep it offline.
  • The agents’ keys (ed25519) sign every request a server’s agent makes.

Releases are signed with keys that stay offline. The hub and the agents install only what verifies. The ceremony for the release keys has not happened yet; the alpha runs on alpha keys In progress.

Write to security@mitjamartini.com. The same address is in vaicoa.com/.well-known/security.txt.