Watching every new memecoin launch in real time, on a free tier
On Solana, new memecoins launch through pump.fun at a rate that's hard to believe until you watch the firehose yourself — multiple new tokens per minute, around the clock. The serious sniping crowd watches this stream with expensive infrastructure: dedicated geyser plans, private transaction relays, co-located servers. I wanted to see the same stream for zero money, as a dashboard project. Turns out you can get surprisingly far.
The architecture
The whole thing is one Node backend and one React frontend:
- Ingestion. A standard websocket subscription
(
logsSubscribe) against a free-tier RPC provider, filtered to the pump.fun program's address. Every transaction that touches the program streams its logs to me atconfirmedcommitment. No special access — this is a vanilla RPC feature. - Decoding. Token creations emit a binary
CreateEventin the logs as base64Program data:. A borsh layout plus a discriminator check turns that into name, symbol, metadata URI, mint address and creator wallet. This was the fiddliest part — get one field offset wrong and you're reading garbage that almost looks right. - Filtering. A settings panel in the dashboard — minimum bonding-curve progress, "must have Twitter/Telegram in metadata", slippage — pushed live over a websocket to the backend. Every change applies to the next detected token instantly. There's also a "rejected" drawer showing what your filters dropped and why, which turned out to be the most educational part of the whole UI.
- Execution: mocked. Deliberately. The transaction builder is real (compute budget, slippage-bounded sizing), but broadcast is a stub. Nothing is ever sent on-chain. More on why below.
The unglamorous parts that made it work
Reconnection is the product. Free-tier websockets drop. The subscription has a staleness watchdog — if no event arrives for two minutes, assume the connection is dead even if it looks open — plus exponential backoff on reconnect. The browser side reconnects too and re-syncs its settings on every fresh hello. Without this, the dashboard is a screenshot; with it, it runs for days.
A mock feed for offline dev. With no API key configured, the backend generates synthetic token launches. That sounds like a toy feature, but it meant I could build the entire frontend on a train with no internet, and it makes the repo runnable by anyone in one command.
Respecting the free tier. The socials check has to fetch each token's metadata URI, so it only runs when that filter is actually enabled, with a short timeout. One subscription stream fits comfortably in free credits; a hundred careless HTTP calls per minute wouldn't.
Why the buy button stays fake
Partly because sniping is a genuinely adversarial game — you're competing with bots that pay for speed advantages measured in milliseconds, and the median new memecoin goes to zero. A free-tier scanner sees launches seconds later than the paid crowd, which in this game means you're exit liquidity.
But mostly because the scanner itself was the interesting problem. Decoding live on-chain events, keeping a stream healthy, building a real-time tunable filter UI — those skills transfer to anything. The "auto-buy" checkbox exists in the settings panel, wired to a mock, as a monument to the moment I decided not to become someone's exit liquidity.
If you're learning Solana development, I'd recommend this exact project shape: build the read side for real, mock the write side, and keep your wallet out of it.