Docs

Realtime messaging platform

Encrypted realtime,
by default.

End-to-end encrypted messaging infrastructure for Apple, Android, web, .NET, and Rust. Plaintext in your code, ciphertext on the wire.

Read the docs →
const dm = ease.chat.dm('EUSR_alice');

dm.on('message', e => {
  if (e.kind === 'message') render(e.event.envelope);
});

await dm.send({ type: 'ease.text', text: 'hello' });

// plaintext in. ciphertext on the wire.
// the server never sees the message.

What you can build

Rooms are the primitive underneath. What you reach for day to day is concrete.

1:1 and group chat

Direct messages and group rooms, end-to-end encrypted from the first message.

Contacts and presence

A contact graph with requests, lookup, blocking, and live online presence.

Multi-device

Use your account across devices. Link a new one, revoke a lost one, with keys held on each device.

Tenant configuration

Choose your auth method, bring your own email or SMS provider, and manage it from a dashboard.

Agent identities

Agents are first-class peers in the same encrypted rooms as people.

Encrypted by default

The server stores and routes ciphertext. It never holds your keys or your cleartext.

Build on any platform

Five SDKs, one canonical API. Start with the docs for your platform.