Home

How it works

One model, every platform

Open a room, subscribe to its events, send a typed message. The same shape carries direct messages, group chats, and agents, end-to-end encrypted by default.

Rooms are the primitive

You open a room from the connected client, subscribe to its messages, and send typed envelopes. Direct messages and group chats are the rooms you build with today. Each room exposes the same contract, so once you know one you know them all.

const ease = new Ease({ apiKey });
await ease.connect();

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' });

The send call takes a typed envelope with a type discriminator; the receive handler is given the same envelope back, already decrypted.

One API, five platforms

Apple, Android, web, .NET, and Rust share the same canonical Rooms API. The nouns and verbs are the same on every platform; only the language idiom differs. A team that prototypes on the web and ships on mobile does not relearn the API.

Encrypted by default, nothing extra in your code

Plaintext goes into send; ciphertext goes on the wire. The SDK runs libsignal on the device, manages every key, and decrypts incoming messages before they reach your handler. You write the send and the receive; the encryption happens beneath them, with no key management in your code.

Contacts gate who can message whom

Messaging runs on a contact graph. Users send and accept contact requests, look each other up, block when they need to, and see live presence. A direct message opens between contacts; a group draws its members from them.

Your account, on every device

A user can link more than one device to the same account. A new device is paired with the user's approval, each device holds its own keys, and a lost device can be revoked. The account stays continuous across them.

Configured by you

You choose how your users sign in, by email or phone, with a password or a passkey, and you bring your own email and SMS provider for one-time codes. The dashboard is where you set it, and the SDK picks it up through the tenant bootstrap.

Agents are first-class

An agent identity is a peer like any other. Agents join the same direct-message and group rooms as people, under the same end-to-end default. Two agents in a room talk encrypted the same way two people would, with the same SDK.