Realtime
for developers

Keep every view up to date.
Publish live events to the right people.

Trusted every day by teams that
build world-class software.

Connect your app. Keep every view in sync.

Inspect your app with MCP or CLI. Publish live events from your server.
Connect the right clients to the right application state.

YouRealtime

Find our Harbor Realtime app. Check its region and whether it is active so I can configure the client for the right environment.

Bird MCP2 connected actions
  1. 1Find the Realtime apprealtime_apps_list
  2. 2Read the app configurationrealtime_apps_get

Your app changes.
Every view follows.

Approve access. Publish a change.
Keep connected views in sync.

Harbor backendServer
ORDER 42PackedFulfillment update
order-updated{ id: 42, status: "shipped" }
private-order-42
Event accepted by Realtime
Subscription authorization
Maya · Order 42ApprovedAnother customerRefused

Your backend checks who can join.

harbor.example / orders / 42
harborYour account
The everyday ceramics setYOUR ORDER
ORDER 42 · MAYA CHEN

The everyday set.

Shipped

Your order is on its way.

Live
ConfirmedPackedShipped
Live event receivedNo refresh needed
1Authorize the subscription2Accept the published event3Update the connected view
Inspect the access decision

Your backend checks the signed-in user’s access to order 42 before signing this connection and channel. The refused customer receives no order payload. Publication acceptance is separate from asynchronous client receipt.

Maya’s second browser tabSame member ID
Harbor operationsLive workspace
TODAY’S ORDERSReady for dispatch.
MCAL
OrderCustomerStatus#42Maya ChenReady#43Alex LeePacked#44Sam KimPreparing
Maya
Alex
2members
3connections
Maya has two tabs open.
She appears once.

Know who’s here.

One person can have several connections. Show each member once, and update presence when their first tab joins or their last one leaves.

Latest eventCache channel
09:40ConfirmedReplaced
09:41PackedReplaced
09:42ShippedLatest
New connectionCurrent state received
ORDER 42The everyday set.Shipped
What if the cache is empty?

Handle bird:cache_miss by loading current state from your application database. The cache can expire; it does not replay the full event history.

Catch up to now.

A new subscriber receives the latest cached event. Bring the screen up to date without replaying every earlier change.

Explore Realtime.

From the first event to shared application state. Connect the pieces you need.

Scale without
losing control.

Organize teams in workspaces, control API access, and trace changes through audit logs.

BirdHarborOrganization
WorkspacesProductionSandbox

Delivery agent

API key · Customer operations team
Active
PermissionsAccess
EmailRead & write
SMSRead & write
ALAlex Lee AdminPermissions updated

Audit log

Production
Workspace
Production
Resource
Delivery agent
WhatsApp
ReadRead & write
Succeeded

Start with Realtime.
Build across channels with Bird.

Your next idea.
Ready to connect.