Build apps that are fast, work offline, and just sync.

The real-time backend for your vibe coded frontend.

Project goals

Incredible DX

A declarative API that helps humans and agents get things right the first time.

Fully open source

No vendor lock-in. Designed to self-host. Deploy to a VPS or on bare metal at home.

Fast, reactive, and multiplayer

Data lives on the device, can be edited offline, and stays in sync with others.

Build apps, not infrastructure

Define your data. Query with a type-safe ORM. React when data changes — online or off.

  • -- Full type-safety with client-side validation
  • -- Declare relationships and permissions
  • -- Compose and reuse mutations easily
model.ts
import {
  e,
  defineEntity,
  defineSchema,
} from "@ebbjs/client";

const todo = defineEntity("todo", {
  title: e.string(),
  completed: e.boolean(),
});

export const schema = defineSchema({
  entities: { todo },
  version: 1,
});
import { createClient } from "@ebbjs/client";
import { schema } from "./model";

export const client = createClient({
  serverUrl: "http://localhost:4000",
  actorId: "user_123",
  schema,
});
import { client } from "./client";

// Create
const todo = await client.todo.create({
  title: "Ship it",
  completed: false,
});

// Update
await client.todo.update(todo.id, {
  completed: true,
});

// Query — works offline
const openTodos = await client.todo
  .query()
  .where("completed", false)
  .orderBy("createdAt", "desc");
terminal
$ ebb deploy

  Bundling functions...
  ✓ sendEmail      12.3 KB
  ✓ processOrder    8.1 KB
  ✓ generateReport  5.7 KB

  Uploading to sidecar...
  ✓ 3 functions deployed

  Activating v14 → v15...
  ✓ Live — zero downtime

  Deploy complete in 1.2s

Deploy in seconds. Rollback instantly.

Your server runs two processes: a persistent sync engine and a stateless sidecar. ebb deploy ships new code to the sidecar — the sync engine never restarts. Versions activate atomically, so there's zero downtime. Rolling back is just as fast.

  • -- ebb deploy — one command to ship
  • -- Atomic version swap — zero downtime
  • -- Instant rollback to any previous version

Real-time in no-time.

Every client gets a local replica that reads and writes instantly. Changes sync to all connected users in real-time — with presence, awareness, and conflict resolution. No polling, no spinners, no plumbing.

  • -- Local reads and optimistic writes — zero latency
  • -- Live presence and real-time updates across clients
  • -- Custom conflict resolution and no data loss
You
Alice
Bob

Roadmap

Where we are and where we're headed.

Core storage engine

Shipped

RocksDB-backed Action log with a single Writer in production (pipelined writes enabled) and on-demand entity materialization via SQLite.

Sync protocol

Shipped

Three-phase sync: handshake, per-group catch-up with CDN-friendly pagination, and live SSE streaming.

Auth & permissions

Shipped

BYO auth integration with group-based access control. Permission checks run against an in-memory cache — never block on disk.

Real-time presence

Shipped

Ephemeral cursor and selection broadcasting for live multiplayer — fire-and-forget, not persisted.

Self-hosting

Shipped

Run the full sync server on your own infrastructure with a single Docker image.

Client SDK

In Progress

Local-first reactive client with a typed query engine for reads, entity verbs and atomic actions for writes, and optimistic local writes. The durable offline outbox is in progress.

Observability hooks

Planned

Server-side telemetry events and a developer-facing onAction hook for piping the Action stream to analytics, audit logs, webhooks, or data warehouses.

Causal-tree collaborative text

Shipped

Character-level concurrent editing built on existing Action/Update primitives with HLC-based causal ordering — not Yjs. Conflict surfacing for human resolution.

React bindings

In Progress

EbbProvider, useClient, useConnection, useQuery, and useEntityMutations ship today; SSR and Suspense are out of scope.

Server functions

Planned

defineFunction handlers that run server-side with direct data access. Deploy, version, and roll back with a single CLI command.

Server-side SDK

Planned

HTTP client for reading and writing ebb data from SSR frameworks, server actions, and external processes.

CLI tooling

Planned

ebb deploy, function management, schema migrations, and project scaffolding from the command line.

Horizontal scaling

Planned

Multi-master replication across nodes for elastic throughput — no single writer bottleneck, automatic conflict resolution at the cluster level.

 

Stay in sync

ebb is in early development. Sign up to receive updates.