SDK & CLI Documentation

Encrypt secrets locally with the zero-knowledge CLI and decrypt them only on devices verified with attestation and biometrics. The server never sees a plaintext value.

1. Install the CLI (writer / controller)

The CLI encrypts secrets on your machine and manages the device lifecycle. The server only stores ciphertext.

# CLI + tooling controller (Node.js >= 22)
npm install -g @koove/secrets-cli

2. Initialize the app and store a secret

# Crea la app: genera la identidad controladora (keyfile cifrado)
# y el código de recuperación (24 palabras BIP39, se muestra UNA vez)
koove app-init

# Guarda un secreto — se cifra en tu máquina y solo sube el sobre cifrado
koove set DATABASE_URL "postgres://..." --env prod

Important: the recovery code (24 words) is shown once and never stored. Save it: without it and without devices, secrets are unrecoverable.

3. Consume secrets from your mobile appAvailable on npm

App Attest (iOS) and Play Integrity (Android), verified end-to-end on physical devices: real attestation → server-gated registration → local decryption behind biometrics.

# SDK móvil (React Native / Expo)
npm install @koove/sdk expo-local-authentication expo-secure-store
import { KooveClient } from '@koove/sdk';

const koove = new KooveClient({
  apiUrl: 'https://koove.io/api',
  appToken: process.env.KOOVE_APP_TOKEN,
});

// 1) El dispositivo se verifica con attestation (App Attest / Play Integrity)
await koove.registerDevice();

// 2) Descifra el secreto EN EL DISPOSITIVO tras la biometría.
//    El valor en claro nunca sale del dispositivo verificado.
const dbUrl = await koove.getSecret('DATABASE_URL', { env: 'prod' });

4. Lifecycle & kill-switch

Add, revoke and recover devices, and rotate keys — all with idempotent, audited commands.

# Aprobar un dispositivo nuevo (re-envuelve los secretos para él)
koove device-approve

# Revocar un dispositivo (kill criptográfico: lo saca de todos los sobres)
koove device-revoke <deviceId>

# Break-glass: descifrar con el código de recuperación
koove recover-show DATABASE_URL --env prod

# Rotar la identidad controladora (sin downtime)
koove controller-rotate

Honest note: revoking removes the device from the recipient set, but a secret already downloaded and cached is not un-delivered. For a total kill, rotate the secret value.

Open source and auditable

The client SDK and the encryption primitives (@koove/crypto) are open source: the zero-knowledge promise can be verified, not just believed.

View on GitHub →