electric

electric-sql/electric

The agent platform built on sync.

10k
Stars
347
Forks
237
Open issues
50
Watchers
TypeScript Apache-2.0Last pushed Jul 7, 2026

Overview

Electric is a Postgres sync engine designed to simplify real-time synchronization in modern applications and AI agents. It deals with complex issues such as partial replication, fan-out, and data delivery, enabling developers to focus on building software without handling synchronization challenges.

Categories

Tags

Similar tools

Install

npm install electric

README

ElectricSQL logo

License - Apache 2.0 Status - Beta Chat - Discord

Electric

Real-time sync for Postgres.

Table of Contents:

  • Quick links
  • What is Electric?
  • Getting Started
  • HTTP API Docs
  • Phoenix LiveDashboard
  • Developing Electric
    • Mac setup
  • Contributing
  • Support

Quick links

What is Electric?

Sync is the magic ingredient behind fast, modern software. From apps like Figma and Linear to AI agents running on live local data.

Electric is a Postgres sync engine. It solves the hard problems of sync for you, including partial replication, fan-out, and data delivery. So you can build awesome software, without rolling your own sync.

Specifically, Electric is a read-path sync engine for Postgres. It syncs data out of Postgres into ... anything you like. The core sync protocol is based on a low-level HTTP API. This integrates with CDNs for highly-scalable data delivery.

Partial replication is managed using Shapes. Sync can be consumed directly or via client libraries and framework integrations.

Getting Started

See the Quickstart guide to get up and running. In short, you need to:

  1. have a Postgres database with logical replication enabled; and then to
  2. run Electric in front of it, connected via DATABASE_URL

For example, using Docker Compose from the root of this repo:

docker compose -f .support/docker-compose.yml up

You can then use the HTTP API to sync data from your Postgres. For example, to start syncing the whole foo table:

curl -i 'http://localhost:3000/v1/shape?table=foo&offset=-1'

Or use one of the clients or integrations, such as the useShape React hook:

import { useShape } from '@electric-sql/react'

function Component() {
  const { data } = useShape({
    url: `http://localhost:3000/v1/shape