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
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");
$ 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
Roadmap
Where we are and where we're headed.
Core storage engine
ShippedRocksDB-backed Action log with a single Writer in production (pipelined writes enabled) and on-demand entity materialization via SQLite.
Sync protocol
ShippedThree-phase sync: handshake, per-group catch-up with CDN-friendly pagination, and live SSE streaming.
Auth & permissions
ShippedBYO auth integration with group-based access control. Permission checks run against an in-memory cache — never block on disk.
Real-time presence
ShippedEphemeral cursor and selection broadcasting for live multiplayer — fire-and-forget, not persisted.
Self-hosting
ShippedRun the full sync server on your own infrastructure with a single Docker image.
Client SDK
In ProgressLocal-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
PlannedServer-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
ShippedCharacter-level concurrent editing built on existing Action/Update primitives with HLC-based causal ordering — not Yjs. Conflict surfacing for human resolution.
React bindings
In ProgressEbbProvider, useClient, useConnection, useQuery, and useEntityMutations ship today; SSR and Suspense are out of scope.
Server functions
PlanneddefineFunction handlers that run server-side with direct data access. Deploy, version, and roll back with a single CLI command.
Server-side SDK
PlannedHTTP client for reading and writing ebb data from SSR frameworks, server actions, and external processes.
CLI tooling
Plannedebb deploy, function management, schema migrations, and project scaffolding from the command line.
Horizontal scaling
PlannedMulti-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.