Open source · early alpha

Chat primitives
built for Convex.

The authorization-aware component for direct and small-group messaging—without importing your app's identity model or product policy.

$pnpm add convex-chat convex
A
Weekend plans 3 members online
TODAY
B
Bob

Found a quiet spot by the coast for Saturday.

BobFound a quiet spot by the coast…

Perfect. I'll bring lunch 🌊

C
CharlieAn illustrated Mediterranean cove with a small red boat

This is the place.

Bob is typing
Host-owned identity Opaque subject IDs Human-first messaging Stable message relations

Small surface. Strong guarantees.

Your application decides who can talk.
convex-chat keeps the conversation correct.

01

Authorization at the boundary

Host functions derive identity; the component independently enforces conversation membership.

02

Durable chat invariants

Ordered, idempotent sends, monotonic read watermarks, and revision-safe message updates.

03

Reactive by default

Conversations, unread counts, presence, typing, replies, and reactions update through Convex.

Clear ownership boundaries

Bring your users.
Keep your policy.

convex-chat owns reusable chat state. Authentication, relationships, tenancy, moderation, and business rules stay in the host application where they belong.

Explore the architecture
Your application
Authentication
Relationships
Product policy
actor
convex-chat
Membership
Message order
Unread state

The useful core

Everything a conversation needs.
Nothing your product should own.

Direct and small-group conversations
Replies, edits, tombstones, and reactions
Online presence and typing indicators
Provider-neutral attachment metadata

Build the product.
Don't rebuild chat.

Start with the example, then adapt the host boundary to your application.