realtime is a free, open source data engineering & integration project written in Elixir and released under Apache-2.0. It has 7,634 GitHub stars, 467 forks and 78 open issues, and was last pushed 4 hours ago. On this registry it ranks #8 of 39 tracked projects in Data Engineering & Integration, with 5 head-to-head comparisons available. It gained 1 stars over the last 3 tracked days.

What is realtime?

What it is

Supabase Realtime is a server built with Elixir on the Phoenix Framework that pushes three kinds of realtime functionality to browser and server clients over WebSockets. It lives in the Supabase ecosystem, where it acts as the realtime layer alongside Postgres, and it is distributed as open source under the Apache-2.0 license. The project has been public for roughly seven years, carries 7,632 stars and 463 forks, and its topic list places it in the company of change data capture, CRDT, distributed systems, pubsub, and PostgreSQL tooling.

The concrete problem it solves is that a plain Postgres database has no way to tell connected clients that something changed, and no way for clients to talk to each other without a separate messaging service. Realtime closes that gap by listening to Postgres changes and forwarding them to authorized clients, by relaying ephemeral broadcast messages from client to client with low latency, and by tracking and synchronizing shared state between clients as presence. Rather than standing up a bespoke WebSocket tier, a message broker, and a change-data-capture pipeline separately, a team points one server at its database and gets all three behaviors through a single connection.

Key capabilities

  • Broadcast sends ephemeral messages from client to clients with low latency, and is marked generally available in version 2.
  • Presence tracks and synchronizes shared state between connected clients, also generally available in version 2.
  • Postgres Changes listens to database changes and delivers them to authorized clients, generally available in both version 1 and version 2.
  • The server is built on the Phoenix Framework, so it inherits Phoenix Channels semantics for connection and topic handling.
  • Client libraries include @supabase/realtime-js, which draws heavily on the Phoenix Channels JavaScript client.
  • Compatibility is documented for supabase/postgres versions 15.14.1.018, 16.x, and 17.x, using the supabase_admin role.
  • Operational documentation covers architecture, environment variables, error codes, and observability metrics in separate files.

Who uses it and how

  • Applications that need live database updates use Postgres Changes to subscribe authorized clients to row-level changes instead of polling.
  • Collaborative and multiplayer interfaces use Presence to track who is connected and synchronize shared state across sessions.
  • Chat, cursor tracking, and notification flows use Broadcast to move ephemeral messages between clients without persisting them.
  • Teams building on Supabase use the Realtime components in the Supabase UI Library, and the multiplayer.dev demo app repository shows a working integration.
  • Self-hosters run the server against their own Postgres instance, with the v1 code and the v1.0.0 Docker image still available for older deployments.

Getting started

Docker images are published at hub.docker.com/r/supabase/realtime, with the previous version's v1.0.0 image available separately.

project readme (upstream, from github) — read inline

Supabase Logo

Supabase Realtime

Send ephemeral messages, track and synchronize shared state, and listen to Postgres changes all over WebSockets.
Examples · Request Features · Report Bugs

Status

GitHub License Coverage Status

Features v1 v2 Status
Postgres Changes GA
Broadcast GA
Presence GA

This repository focuses on version 2 but you can still access the previous version's code and Docker image. For the latest Docker images go to https://hub.docker.com/r/supabase/realtime.

The codebase is under heavy development and the documentation is constantly evolving. Give it a try and let us know what you think by creating an issue. Watch releases of this repo to get notified of updates. And give us a star if you like it!

Overview

What is this?

This is a server built with Elixir using the Phoenix Framework that enables the following functionality:

  • Broadcast: Send ephemeral messages from client to clients with low latency.
  • Presence: Track and synchronize shared state between clients.
  • Postgres Changes: Listen to Postgres database changes and send them to authorized clients.

For a more detailed overview head over to Realtime guides.

Does this server guarantee message delivery?

The server does not guarantee that every message will be delivered to your clients so keep that in mind as you're using Realtime.

Quick start

You can check out the Supabase UI Library Realtime components and the repository of the multiplayer.dev demo app.

Developers

Start with DEVELOPERS.md for local setup, mise tasks, and example workflows.

Once your environment is up and running, check out the following docs to customize the server and troubleshooting:

Postgres compatibility

supabase/postgres version Role Status
= 15.14.1.018, 16.x, 17.x supabase_admin Requires superuser to run migrations, no superuser needed for tenant grants. Policies are managed by supautils.

Contributing

See CONTRIBUTING.md

Code of Conduct

See supabase/CODE_OF_CONDUCT.md

License

This repo is licensed under Apache 2.0.

Credits

Frequently asked questions

Is realtime free to use?

realtime is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does realtime do?

Broadcast, Presence, and Postgres Changes via WebSockets

What is realtime written in?

realtime is primarily written in Elixir. Its source is publicly available at https://github.com/supabase/realtime, and it has 7,634 GitHub stars.