Chatpack
Project

Roadmap & Scope

What shipped in v0, what's deliberately out of scope, and where Chatpack is heading.

What's in v0

FeatureStatus
1:1 conversations (find-or-create)✅ Done (M1)
Text messages: send, list, edit, delete✅ Done (M1)
Participant-only permissions + hooks✅ Done (M1)
Durable read-state (last_read)✅ Done (M1)
In-memory storage adapter✅ Done (M1)
HTTP handler (Next.js App Router)✅ Done (M2)
Real-time delivery (SSE)✅ Done (M3)
SSE reconnect gap-fill✅ Done (M3)
Drizzle/Postgres adapter✅ Done (M4)
Launch polish + npm release✅ Done (M5)
Typing / presence / read-tick plugins✅ Done (v0.next)
Unread counts (unreadCount)✅ Done (v0.next)
Redis transport (multi-node SSE)✅ Done (v0.next)
Browser client + React hooks✅ Done (v0.next)
Client polling fallback✅ Done (v0.next)
Reactions + quote-replies✅ Done (v0.next)
Participant-scoped ranked message search✅ Done (v0.next)
Post-persistence message mutation hook✅ Done (v0.next)
@chatpack/cli init + starter templates✅ Done (v1.next)
Group chats: membership, roles, admin✅ Done (v0.next)
File attachments (@chatpack/file)✅ Done (v0.next)
Invite links + join requests✅ Done (v0.next)
Public channels (browsable directory)✅ Done (v0.next)
Moderation: blocks, mutes, reports, bans✅ Done (v1.next)
Multi-node presence✅ Done (v1.next)
Mentions (validated, supplied ids)✅ Done (v1.next)
Message forwarding (copy + provenance)✅ Done (v1.next)
Typed @chatpack/ui block catalog✅ Done (v1.next)

Deliberately not in scope yet

  • Group features beyond membership, roles, invites, and visibility - groups ship with admin/member, a name, a 256-participant cap, admin-gated management (ADR 0017), shareable invite links with an optional approval queue (ADR 0019), and a public/private flag that puts a group in a browsable directory (ADR 0020). Per-group permission grants and channel-wide roles beyond admin/member are not part of it. A public channel is discoverable, not readable: browsing the directory grants no read access, so reading still means joining.
  • Message formatting - body remains opaque text. Applications choose plain text, Markdown, or another syntax and own safe parsing and rendering; Chatpack does not parse Markdown or return rendered HTML. See ADR 0022.
  • A mention inbox, and notifying the people mentioned - mentions ship as validated storage (ADR 0023): a message carries the ids it names, and every id must be a current participant. There is no "mentions of me" feed and nothing is sent to anyone. afterMessageMutation hands you mentions next to recipientIds; delivery is your app's.
  • Resolving @names out of message text - Chatpack has no users table and never parses body (ADR 0022), so your composer supplies the ids. body and mentions can legitimately disagree, and keeping them in step is the app's job.
  • Push notification providers - applications can start their own delivery work from afterMessageMutation, but Chatpack does not ship providers.
  • Reusable React UI package - @chatpack/ui provides the typed React block catalog with client-backed actions, realtime state, group/moderation blocks, and Filepack attachment references. chatpack init still generates editable application-owned UI source when a host wants full control.
  • Non-participant search access - the initial search implementation scopes storage results to participant conversations; dynamic canRead access for support/admin users needs a separate design.
  • Moderation beyond the core suite - Chatpack provides optional blocks, mutes, reports, and bans. User identity, notifications, host-session revocation, and moderation UI remain application-owned.

Full scope and reasoning in docs/MVP.md.

Stability

Everything is 0.x until the public API stabilizes - expect minor breaking changes before 1.0. Releases are managed with Changesets; each package has a CHANGELOG.md.

The longer arc

The vision (see docs/ARCHITECTURE.md) is BetterAuth-shaped: the obvious open-source default for chat infrastructure - small core, adapter-driven, extensible via plugins, friendly to both human developers and AI builders.

On this page