Database for Chat Applications

From the ground up for chat applications with real-time, thread-first architecture, and seamless scalability.

Built for chat data from day one:

Threaded messages - Versioning, edits, and soft-deletes built-in
Fast reads and writes - Built for common chat access patterns
Security - Not E2E or most secure, just better than standard databases
Quick start - Lightweight, easy to use, SDKs for Python, Node.js, TypeScript, and React
Currently Available
Messages - Data Store + Versioned edits
Threads - Metadata store
Encryption - Per thread (DEK & KEK) style.
Retention - Policy based purge - (ttl & cron)
Reliability - Sub-ms Acks or safe mode
Performance - 3k+ RPS on 2 local CPU cores
Planned
Cloud Key Stores - Big cloud & Infisical
Backups - Easy backup and easy restores
Realtime - Websockets + webhooks
Search - Per user chat data search API
Scaling - Full vertical or sharded horizontal
Hosting - Managed or BYOC or Open Core
Developer Tools
Backend SDKs - Node.js and Python
Frontend SDKs - TypeScript and React
Data Explorer - Admin dashboard - Available

Backend Integration

import ProgressDB from '@progressdb/node'

const db = ProgressDB({ 
  baseUrl: 'https://api.example.com', 
  apiKey: process.env.PROGRESSDB_KEY 
})

// Save messages from Vercel AI SDK
export async function POST(req: Request) {
  const { message, chatId } = await req.json()
  
  // Save to ProgressDB thread
  await db.createThreadMessage(chatId, message, 
  'user-123')
}

Frontend Integration

import { useMessages } from '@progressdb/react';

function ChatInterface({ threadId }: { threadId: string }) {
  const { messages, create } = useMessages(threadId);

  const sendMessage = async (text: string) => {
    await create({
      body: { text },
      role: 'user'
    });
  };

  return (
    <div>
      {messages.map(m => (
        <div key={m.id}>{m.body.text}</div>
      ))}
    </div>
  );
}

Self-hosted chat storage alternative to:

Stop wrestling with chat data.
Start shipping the actual features.

Loading multiple threads without blowing up your queries, pagination that doesn’t reset half your React state, or fetching a conversation without ten round trips.

Your agent just produced a 500-message reply chain. Suddenly you're debugging edge cases, tuning indexes, or rewriting your query patterns because your database wasn't built for this.

Last week it was pagination. This week it's soft deletes. Next month, it's thread metadata or message edits - or whatever new chat feature users now expect.

This can be easier than it gets.

ProgressDB is built for chat, so you don't have to be.