Cavos

Multi-device

Open an existing wallet on a new device by restoring its MasterDEK, with the enclave or a passkey.

A wallet's address is looked up in the registry by (userId, appId, chain, network), so the same user on a new device lands on the same wallet.

On Starknet, Solana, and native Stellar, there is one account key, derived from the MasterDEK. A new device does not get a key of its own and there is no on-chain device list: it restores the MasterDEK (enclave or passkey) and derives the same key. Nothing is added on-chain.

Detecting a new device

When Cavos.connect runs on a device that cannot spend yet, it returns status: "needs-device-approval": the registry has an address, but this device holds no key.

TypeScript
const cavos = await Cavos.connect({ /* ... */ });

if (cavos.status === "needs-device-approval") {
  // restore the MasterDEK: enclave login or a passkey
}

In React, read walletStatus.needsDeviceApproval.

Restore with the enclave

With deviceApproval: "enclave", signing in again with the same Google, Apple, or email identity unwraps the MasterDEK onto this device. See Hardware-isolated recovery.

Restore with a passkey

If the user added a passkey after signup, they can restore this device with one prompt — no email round-trip, no second device:

TypeScript
const { approveDeviceWithPasskey, walletStatus } = useCavos();

if (walletStatus.needsDeviceApproval) {
  await approveDeviceWithPasskey();
}

The vault opens the passkey's encrypted copy of the MasterDEK (it usually asked already at sign-in). The same prompt works on every chain in the session.

Stellar grandfathered wallets

Grandfathered Stellar wallets that never enrolled still use Horizon signer keys. Manage them on the wallet after narrowing on wallet.chain === "stellar":

Devices.tsx
const devices = await wallet.listDevices();
await wallet.removeDevice({ slotId });

See Stellar → Manage devices. Starknet and native Solana/Stellar have one key, so there is nothing to list or remove.

Encourage a way back early. If a user only ever has one device and loses it, they need the enclave or a passkey to restore the MasterDEK. Offering a passkey at onboarding makes recovery effortless.

See Concepts → non-custodial model for the full security rationale.

On this page