We are building the open source chat layer for modern apps.
Open source chat infrastructure
Get in 60s what takes sprints to build: chat infrastructure that lives inside your app.
CLI
Prompt
MCPSoon
SkillsSoon
npm install @chatpack/core
Add 1:1 chat to your app using ChatPack.
Install @chatpack/core. Create lib/chatpack.ts with chatpack(), configure your database URL and secret, add the chat component to your page, and start sending messages.
Up and running in one command.
About ~10 lines of code. No account required, no hosted service to sign up for. Your database, your infrastructure, your users. Stays free forever.
$
npm install @chatpack/core @chatpack/adapter-drizzle
import { chatpack } from "@chatpack/core"
import { memoryAdapter } from "@chatpack/adapter-memory"
const chat = chatpack({ storage: memoryAdapter(), ... })
await chat.api.sendMessage({ body: "Hey, it works!" })
01
Install the package
Add @chatpack/core and a storage adapter. Works with npm, pnpm, and bun.
02
Connect your stack
Point Chatpack at your database and your auth. You own your users and data.
03
Ship
Wire it up in a few lines and go live. Messaging, real-time, and the details handled for you.
Messaging
Conversations with persistent history, editing, and deletion wired straight to your database.
Real-Time
Messages and live signals arrive instantly over one stream, with automatic reconnect and nothing lost.
Presence & State
Who's around, what's delivered, what's been seen — durable state you own and control.
Your Stack, Your Rules
Your database, your auth, your users. Chatpack never owns accounts or hosts your data.
Grows With You
A small core you extend with plugins; new capabilities land without changing how you build.
Ship chat before your standup ends.
Building 1:1 messaging from scratch takes weeks. Hosted SDKs lock you into usage-based billing. ChatPack gives you the full feature set in an afternoon, self-hosted, forever free.
MIT
licensed, yours to keep
# placeholder timings, to be updated with real integration data
NOW
1:1 real-time messaging
Typing indicators over SSE
Read and delivered receipts
Persistent message history
React and Next.js components
Self-hosted, Postgres-backed
NEXT
Push and in-app notifications
Group chats (WhatsApp-style)
File and media attachments
Message reactions
Vue and Svelte components
Expo / React Native support
LATER
Discord-style channel rooms
One-to-many broadcast channels
End-to-end encryption
Moderation tooling
Analytics and delivery insights
Managed hosted option
Time from empty project to working 1:1 chat.
Add chat to any existing app.
Drop ChatPack into a project you're already building. Works alongside your current stack, no rewrites needed.
Chat in ten lines.
Drop ChatPack into a project you're already building. Works alongside your current stack, no rewrites needed.
import { chatpack } from "@chatpack/core"; import { memoryAdapter } from "@chatpack/adapter-memory"; const chat = chatpack({ storage: memoryAdapter(), auth: async (req) => getSessionUser(req), }); const { id } = await chat.api.getOrCreateConversation({ userId: "user_alice", otherUserId: "user_bob", }); await chat.api.sendMessage({ userId: "user_alice", conversationId: id, body: "Hey, it works!", });