QuaiWhale logo
QuaiWhale
Markets

Exchange Markets

Collects normalized trades and builds market candles across centralized exchanges.

Live
Runtime key
market_feed
Railway process
market-feed
Required production process
Last heartbeat
Nov 1, 2026, 12:40:12 p.m.
UTC
Last successful cycle
Oct 29, 2026, 1:01:14 a.m.
UTC
Runtime status
completed
Next scheduled run
Not available
No next_run_at exposed
Last cycle duration
3.6s
Completed Oct 29, 2026, 1:01:14 a.m. UTC
Process started
Oct 29, 2026, 1:01:10 a.m.
UTC
Last runtime errorSep 27, 2026, 11:03:00 p.m. UTC
fetch failed
Current runtime snapshot

Point-in-time operational summary

This worker exposes a current loop-state record in this view. No multi-run history is requested or inferred.

Live
Runtime status
completed
Next scheduled
Not available
Checkpoint fields
1
Metadata fields
1
Exact data chain

Input to product surface

required process
Step 1Input
Exchange adapters

Consumes WebSocket and bounded REST trade streams from the configured centralized exchanges.

Step 2Normalization
Normalize and deduplicate

Converts source messages into the canonical trade format and removes duplicates.

Step 3Persistence
Batch persistence

Persists trades through the market-feed batch RPC with a safe per-trade fallback.

Step 4Aggregation
Trades and candles

Updates market trades, source connections, and 1m, 5m, 15m, 1h, and 1d candles.

Step 5Product
QuaiWhale markets

Powers market charts, volumes, pressure windows, source health, and the market snapshot on Overview.

Parallel live orderbook path
Aggregate orderbook→
Ably orderbook/snapshot→
Live client orderbook
Required dependencies

The chain cannot produce its canonical output without these dependencies.

Exchange WebSocket and REST APIs

Configured public trade feeds for QUAI markets.

Supabase service role

Required for trades, candles, connection state, and batch persistence.

Secondary and fallback paths

Recovery, enrichment, transport, or coordination paths that do not replace the canonical source of truth.

Ably

Optional low-latency orderbook and snapshot transport.

REST backfill adapters

Recovery and bounded historical fill when supported by an exchange.

Storage contract

Tables read or written by this worker chain.

Swipe horizontally to inspect all columns

TablePurpose
market_tradesNormalized and deduplicated exchange trades.
market_candlesAggregated OHLC and volume windows.
market_feed_connectionsPer-exchange runtime, message, trade, and reconnect health.

Product outputs

User-facing workspaces directly powered by this chain.

5/5 sources live

Quiet means connected but without a recent trade in the last 24 hours.

Live

Swipe horizontally to inspect all columns

ExchangeMarketSource healthRuntime statusLast messageLast trade
gateQUAI/USDTLiveconnectedNov 1, 2026, 12:40:21 p.m. UTCNov 1, 2026, 12:22:00 p.m. UTC
krakenQUAI/USDLiveconnectedNov 1, 2026, 12:40:26 p.m. UTCNov 1, 2026, 12:34:41 p.m. UTC
mexcQUAI/USDTLiveconnectedNov 1, 2026, 12:40:09 p.m. UTCNov 1, 2026, 12:39:49 p.m. UTC
ourbitQUAI/USDTLiveconnectedNov 1, 2026, 12:40:09 p.m. UTCNov 1, 2026, 12:39:57 p.m. UTC
xtQUAI/USDTLiveconnectedNov 1, 2026, 12:40:20 p.m. UTCNov 1, 2026, 12:22:07 p.m. UTC
Runtime checkpoint

Latest exchange batch state

Streaming Started At
2026-10-29T01:01:14.076Z

Cycle metadata

Mode
streaming

Implementation map

Primary repository files implementing this worker chain and its product read path.

workers/market-feed/start.cjs
workers/market-feed/core.js
app/lib/market-feed/store.js