Skip to main content
Vaultys developer platform

Build on sovereign identity

VaultysID gives every person, machine and AI agent a decentralized, passwordless identity. The Peer SDK lets those identities talk directly: mutually authenticated, end-to-end encrypted, peer to peer.

$ npm install @vaultys/id @vaultys/peer-sdk
chat.ts
import { createPeer } from "@vaultys/peer-sdk";
import { peerjsTransport } from "@vaultys/peer-sdk/peerjs";
import { VaultysId } from "@vaultys/id";

// Your identity is your address: no accounts.
const peer = await createPeer({
identity: await VaultysId.generatePerson(),
transport: peerjsTransport(),
});

// Authenticated, end-to-end encrypted,
// queued while Bob is offline.
await peer.send(bobDid, { text: "Hello, Bob" });

peer.on("message", ({ from, body }) => {
console.log(from, body.text); // verified DID
});
No passwords
No central directory
End-to-end encrypted
Open source
Two building blocks

Identity, then connection

Use VaultysID on its own for passwordless authentication, or add the Peer SDK to let identities exchange data directly.

VaultysID

@vaultys/id

Decentralized identifiers for people, machines and agents, with a mutual authentication protocol and built-in encryption.

  • One DID per person, device or AI agent
  • Software keys or passkeys (FIDO2 / WebAuthn)
  • Mutual authentication with signed certificates
  • Post-quantum hybrid keys available

Peer SDK

@vaultys/peer-sdk

Direct, encrypted sessions between VaultysID identities, with durable messaging and real-time collaboration on top.

  • Nothing flows before a mutual VaultysID handshake
  • Session keys only the two identities can derive
  • Messages queued, retried and acknowledged
  • Shared documents with Yjs, pluggable transports
How it works

Three steps, no backend

A relay only introduces peers. It never sees content, and it can't impersonate anyone.

01

Create an identity

Generate a VaultysID in the browser, on a server or behind a passkey. The DID is derived from its keys.

await VaultysId.generatePerson()
02

Connect by DID

Dial a DID. Both sides prove who they are before a single message is exchanged.

await peer.connect(bobDid)
03

Exchange directly

Messages, files and shared documents travel peer to peer, end-to-end encrypted.

await peer.send(bobDid, body)
Use cases

What you can build

Anything where knowing exactly who is on the other end matters.

Secure messaging

Direct chat where every sender is cryptographically verified.

Real-time collaboration

Shared canvases and documents that sync without a server.

Passwordless sign-in

Authenticate users and devices by DID instead of passwords.

AI agent identity

Give agents their own identity and control who they talk to.

Device pairing

Pair machines and IoT devices with mutual authentication.

File exchange

Send files directly between browsers or nodes, encrypted.

Start building

Open two browser tabs in the playground and watch two identities find, verify and talk to each other in a minute.