Ease SDKs

Encrypted realtime, by default

Five SDKs. Apple, Android, .NET, Web, Rust. For chat, contacts, auth, and identity. End-to-end encrypted by default. The shape reads the same on every platform.

The model

Ease is multi-tenant. You sign up, get an API key, and the account that the key authorises is your tenant. The SDK reads your tenant's config (auth method, OTP settings, avatar size limits) at connect() time; everything else operates inside your tenant boundary.

  • You are the tenant. One API key authorises every call from your application. Bill, audit log, configuration, all scoped here.
  • Your users are users. They sign up under your tenant, authenticate with the method you chose (email + password, or phone + password), and interact with each other through DMs and groups. User IDs look like EUSR_….
  • Tenants don't cross. A user in your tenant can't DM a user in someone else's tenant. Membership lives inside the tenant boundary.

The shape

Four named surfaces, one entry point. Whatever platform you're on, your code reads the same.

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

await ease.auth.signUp(email, password, otp)

await ease.contacts.sendRequest({ email: 'bob@example.com' })

const dm = ease.chat.dm(bobId)
await dm.send({ kind: 'message', text: 'hello' })
dm.on('message', (e) => console.log(e.from, e.text))

const profile = await ease.me.getProfile()

Pick your platform

How it's organised

Four surfaces on every SDK. Each surface owns one domain. The boundaries hold across platforms; if it's on ease.chat.* here, it's on ease.chat.* there.

Defaults

  • Encrypted by default. Every DM and group is end-to-end encrypted via libsignal Sender Keys. The server never sees plaintext.
  • Same shape on every SDK. Verified by a cross-platform conformance check on every commit: identical type names, identical surface taxonomy, idiomatic syntax per language.
  • Lockstep versioning. All five SDKs ship at the same semver. 0.5.0 on Apple is 0.5.0 on every other SDK, same wire compatibility, same surface.