> ## Documentation Index
> Fetch the complete documentation index at: https://chahine.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Self-hosted real-time CRDT store. No locks, no merge conflicts.

Meridian is a self-hosted alternative to Liveblocks and PartyKit. Concurrent updates from multiple clients converge automatically using CRDTs — no operational transforms, no conflict resolution code on your end.

Sub-millisecond merge latency on a single node. Deltas are broadcast over WebSocket as soon as an op is applied — no polling, no round-trips.

> [card] [Live demo](https://b3a3dbb6.meridian-demo-4ay.pages.dev/)
>
> Open the collaborative workspace demo — try it in two browser tabs simultaneously.

## What it is

* **Server**: Rust binary. Embedded sled storage by default — PostgreSQL and Redis backends available as optional features.
* **SDKs**: TypeScript (Effect-based, msgpack), Python (asyncio, `pip install meridian-crdt`), Rust (`meridian-client`).
* **Auth**: Custom ed25519-signed tokens (smaller than JWT, constant-time verification).
* **Query Engine**: Cross-CRDT queries — scan a namespace by glob pattern, filter, and aggregate (`sum`, `union`, `latest`, …) in a single HTTP request.

## Quickstart

**1. Start the server**

```bash theme={null}
MERIDIAN_SIGNING_KEY=$(openssl rand -hex 32) docker compose up -d
```

**2. Install the SDK**

```bash theme={null}
bun add meridian-sdk
```

**3. Connect and sync**

```ts theme={null}
import { Effect, Schema } from "effect";
import { MeridianClient } from "meridian-sdk";

const client = await Effect.runPromise(
  MeridianClient.create({
    url: "http://localhost:3000",
    namespace: "my-room",
    token: process.env.MERIDIAN_TOKEN!,
  })
);

const views = client.gcounter("gc:views");
views.increment(1);
views.onChange(v => console.log("views:", v));
```

## CRDT types

| Type | Use case |
| - | - |
| `GCounter` | Page views, likes, download counts |
| `PNCounter` | Inventory, vote tallies |
| `ORSet` | Shopping cart, tag sets, collaborative lists |
| `LwwRegister` | User profile, document title, config |
| `Presence` | Who's online, cursor positions, typing indicators |
| `CRDTMap` | Structured document with independent typed fields |
| `Awareness` | Ephemeral cursors, selections, "is typing" — not persisted |
| `RGA` | Collaborative text, ordered lists |
| `Tree` | Hierarchical structures, outlines, file trees |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.