OriginChain
06 · /watch

Query as a subscription. The substrate is the stream.

One HTTP GET, an SSE stream of every write that matches your prefix, the moment it lands. WAL-native - not Kafka-on-the-side.

01
WAL-native

Every write puts an event on the stream by construction. No separate CDC pipeline, no Debezium, no replication lag.

02
Prefix subscription

Subscribe to `customers/` and see every customer write. Server-side filtering - your client doesn't see other shapes.

03
RAII guarded

Client disconnect releases the slot the same tick. No leaked subscriptions, no zombies, no operator pages at 3am.

what this replaces

Five boxes become one HTTP request.

Traditionally you would assemble Postgres + Debezium + Kafka + a stream processor + a sink to react to data changes. Here you make one request. The database is the stream.

Traditional
Postgres Debezium Kafka consumer sink
OriginChain
one HTTP GET
subscribe
curl -N \
  -H 'Authorization: Bearer ...' \
  'https://<tenant>.db.originchain.ai/v1/tenants/:t/watch?prefix=customers/'
stream
data: {"op":"put","schema":"customers","row":{...}}
data: {"op":"put","schema":"customers","row":{...}}
data: {"op":"delete","schema":"customers","key":"c_42"}
data: {"op":"put","schema":"customers","row":{...}}
…
tier caps

Per-tenant concurrent-subscriptions cap, sized by tier (Tier 1 / Tier 2 / Tier 3 / Enterprise). Breach returns a structured 429 with in_flight, cap, and tier_name in the body - your client can back off, not retry-bomb.

what's next