QuaiWhale logo
QuaiWhale
Markets

Exchange Markets

Collects normalized trades and builds market candles across centralized exchanges.

Degraded
Runtime key
market_feed
Railway process
market-feed
Required production process
Last heartbeat
Jul 31, 2026, 12:41:58 a.m.
UTC
Last successful cycle
Jul 31, 2026, 12:32:59 a.m.
UTC
Runtime status
completed
Next scheduled run
Not available
No next_run_at exposed
Last cycle duration
1.2s
Completed Jul 31, 2026, 12:32:59 a.m. UTC
Process started
Jul 31, 2026, 12:32:58 a.m.
UTC
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.

Degraded
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.

6/10 sources live

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

Degraded

Swipe horizontally to inspect all columns

ExchangeMarketSource healthRuntime statusLast messageLast trade
bitmartQUAI/USDTUnavailablestaleJun 24, 2026, 6:06:36 p.m. UTCNot available UTC
blofinQUAI/USDTUnavailabledisconnectedJul 12, 2026, 6:26:35 a.m. UTCNot available UTC
lbankQUAI/USDTUnavailablestaleJun 24, 2026, 7:35:01 p.m. UTCNot available UTC
bitrueQUAI/USDTDegradedconnectedJul 31, 2026, 12:42:29 a.m. UTCJul 29, 2026, 2:47:43 p.m. UTC
coinexQUAI/USDTLiveconnectedJul 31, 2026, 12:42:19 a.m. UTCJul 31, 2026, 12:41:34 a.m. UTC
gateQUAI/USDTLiveconnectedJul 31, 2026, 12:42:19 a.m. UTCJul 31, 2026, 12:35:53 a.m. UTC
krakenQUAI/USDLiveconnectedJul 31, 2026, 12:42:35 a.m. UTCJul 31, 2026, 12:05:14 a.m. UTC
mexcQUAI/USDTLiveconnectedJul 31, 2026, 12:42:19 a.m. UTCJul 31, 2026, 12:42:16 a.m. UTC
ourbitQUAI/USDTLiveconnectedJul 31, 2026, 12:42:30 a.m. UTCJul 31, 2026, 12:42:30 a.m. UTC
xtQUAI/USDTLiveconnectedJul 31, 2026, 12:42:29 a.m. UTCJul 31, 2026, 12:35:59 a.m. UTC
Runtime checkpoint

Latest exchange batch state

Streaming Started At
2026-07-31T00:32:59.686Z

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