repowisesupabase/realtime

supabase / realtime

Broadcast, Presence, and Postgres Changes via WebSockets

Elixir★ 7,651

github.com/supabase/realtimeIndexed at 5357e33Up to date with upstream

What is realtime?

realtime is a server for sending ephemeral messages, synchronizing shared state, and listening to Postgres changes over WebSockets. It provides Broadcast, Presence, and Postgres Changes functionality for authorized clients. realtime is written primarily in Elixir using the Phoenix Framework.

Written by a model from the README and the source

585 files and 19 symbols in 9 modules, led by Elixir (445 files) and JavaScript (3).

Code health

8.4out of 10Good

This codebase scores 8.4 out of 10 for code health, which we rate good. It also scores maintainability 9.9 and static performance 10.0 out of 10. The three are scored separately and never blended into one number. Risk is concentrated, as it usually is: 50 of 585 files are git hotspots, and they average 6.5 — which is where the fixes pay off most.

Use supabase/realtime in your agent

Point Claude Code, Cursor, Codex or VS Code at this repository. Your agent gets the index this page is built from: cited answers, callers, history and health for any file.

  1. 1.In Claude, open Customize → Connectors, click +, then Add custom connector. On a Team or Enterprise plan an owner adds it first under Organization settings → Connectors.
  2. 2.Paste the server URL below as the Remote MCP server URL, then click Add.
  3. 3.Click Connect. A Repowise sign-in window opens. Approve access.
  4. 4.Repowise's tools are now available in your Claude chats.

Connect with one click. Sign in with Repowise (OAuth), no API key to copy. Works in Claude on the web, desktop, and mobile.

Docs
bash
https://api.repowise.dev/mcp/supabase/realtime
Editors need an API key: sign in to create one.Sign in to connect

This repo is public, so anyone with a Repowise account and an API key can connect.

Try asking

  • get_overview()
  • get_answer("how is realtime put together?")
  • get_why("why is realtime structured this way?")

Explore realtime

Key features of realtime

  • Broadcast sends ephemeral messages from clients to clients over WebSockets.
  • Presence tracks and synchronizes shared state between clients.
  • Postgres Changes listens to Postgres database changes and sends them to authorized clients.
  • realtime provides a Phoenix Framework server implemented in Elixir.

How supabase/realtime works

Client and tenant requests enter the Phoenix/Elixir backend and pass through the realtime application layer. The lib directory contains the main application code, including database access and telemetry. The lib/extensions/postgres_cdc_rls/subscriptions.ex file handles subscription logic for Postgres change data capture with row-level security. The lib/realtime_web directory provides web-facing functionality, including the dashboard and API endpoints. The lib/realtime_web/dashboard/tenant_migrations.ex file handles tenant migration operations for the dashboard. Runtime output includes HTML and LiveView state, JSON responses, and logged or telemetry events.

The codebase has 585 files and 19 symbols in 9 modules, led by Elixir, JavaScript and Shell. Code health is 8.4 out of 10, rated good.

supabase/realtime FAQ

What is realtime?

realtime is a WebSocket server for ephemeral messaging, shared-state synchronization, and Postgres change notifications. It provides Broadcast, Presence, and Postgres Changes.

How does realtime work?

realtime receives client and tenant requests in a Phoenix/Elixir application layer. The server routes subscriptions and database changes to authorized clients and returns WebSocket, JSON, HTML, LiveView, and telemetry outputs.

What language is realtime written in?

realtime is written primarily in Elixir and uses the Phoenix Framework. The repository also includes JavaScript, TypeScript, shell, and Dockerfile files.

How is the realtime code organized?

realtime places its main application code in lib, tests in test, runtime configuration in config, and supporting runtime files in priv. The realtime_web area handles web-facing pages and API endpoints.

Who is realtime for?

realtime is for applications that need ephemeral client messaging, synchronized shared state, or authorized notifications of Postgres changes over WebSockets.

What license does realtime use?

realtime uses the Apache-2.0 license.

The summary, features and answers on this page are written by a model from the README and the source, and refreshed with each index.

About this page

Get a page like this for your own codebase

Repowise built this map of supabase/realtime from its source and git history. It parses every symbol, draws the dependency graph, scores each file's health from complexity, duplication, coverage and churn, finds hotspots and owners in the history, and writes documentation for every module. Your coding agent reads the same index over MCP, so its answers cite real files.

Index your repo freeSee how Repowise worksFree for 2 public repos, with a page like this one.

Prefer local? pip install repowise && repowise init indexes your own checkout, no account needed.