Two levels of signal
Start by knowing which you need.
A common setup uses both, the REST scan to populate a signals page on load, and the stream to push new alerts live on top.
Part 1, scan clusters over REST
A cluster is a token that several tracked wallets are buying inside a time window. The REST endpoint returns the current clusters in one call.Step 1, type the cluster
src/types.ts
Step 2, fetch the clusters
Pass mode cluster, and tune it with min_wallets (how many wallets make a cluster) and hours (the window). type picks the wallet class.src/clusters.ts
Step 3, render the signals page
Each cluster is a token plus the wallets buying it. Show the count, the money in, and who is buying.src/render-clusters.ts
Part 2, live signals over WebSocket
The stream is where the signal service comes alive. You define the rules when you subscribe, and the server pushes an event the moment they are met, an entry when enough wallets buy, an exit when they leave.Step 1, understand the thresholds
Thresholds live in a block per wallet type, kol and smart. Inside a block, entry_at is a list of wallet counts that each fire an entry, and exit_at is a list of remaining holder counts that each fire an exit. min_buy is the smallest buy for a wallet to count. An entry_at of [3, 5] fires once when the third qualifying wallet buys, and again at the fifth. If you set both a kol and a smart block, the entry gate is an AND, every type must reach its own count.Step 2, connect with your rules
src/signal-stream.ts
Step 3, handle the alerts
Now you decide what a signal does. Here it prepends to an alerts feed, but this is where you would fire a Telegram message, a sound, or a webhook.src/alerts.ts
Step 4, wire it together
src/main.ts
Tuning the signal
The thresholds are the whole product, and small changes matter. Raise entry_at for stronger, rarer signals. entry_at of [5] only fires when five wallets have piled in, fewer false positives, later entries. Lower it for earlier, noisier signals. Use min_win_rate to filter quality. Only count wallets whose lifetime win rate clears a bar, so a cluster of proven wallets is worth more than a cluster of random ones. Gate on two types for conviction. Set both a kol and a smart block and the signal only fires when KOLs and Smart Money agree, the AND gate turns two feeds into one high conviction trigger.Billing note
The REST scan is one request per call. On the stream, each delivered signal is billed a little more than a plain event because it aggregates a whole cluster, so scope your token filter when you can.Reference
GET /v1/signals
The REST signal endpoint with cluster, entry and exit modes.
WSS signal stream
Live entry and exit signals with per type thresholds.

