All work pumpgod
Trading · Solana · 2026
pumpgod
A collector and sniper for pump.fun token launches, riding a Yellowstone gRPC stream.
Your own record of a market's first minutes, so a decision never waits on somebody else's screener to catch up.
By the numbers
The problem
pump.fun mints hundreds of tokens an hour, and most of them are copies of each other: same name, same symbol, same picture. Public screeners aggregate after the fact and lose precisely the first seconds, which is where a launch is decided. The owner wanted a record of his own — who created the token, how much of it the creator bought, and what the trades did while the event was still running.
Subscribing to the stream is the easy part. The stream never stops. A naive collector fills the disk within a day, and without clone detection the feed is useless anyway: twenty tokens named Frog Coin and no way to say which came first. So the real work is bounded writes, plus a rule for picking the original out of a pile of copies.
The solution
A Yellowstone gRPC subscription writes each new token to SQLite along with the creator's own buy and every trade of the first five minutes. The window shuts on the clock: an event is recorded whole or flagged incomplete, with no half state left over to interpret.
Aggregates — buyers at 5, 30, 60 and 300 seconds, SOL in and out, peak and last reserves, the successful-launch flag — are computed once, after the window closes. Nothing is recalculated per tick, which is why the feed stays quick.
Clones group by normalised name and symbol, members of a group are ranked, and rank 0 goes to the original. One look at a token card says whether this is a copy or the thing being copied, and how many descendants it has.
Retention holds the database inside a boundary. A 78-minute soak measured growth at roughly 0.56 MB a minute, which puts a 48-hour window near 1.6 GB instead of wherever it happens to land.
The web console opens the databases read-only, with query_only set on the connection: browse the feed, a token card, a trade history, none of it able to touch what the collector wrote. Database paths and the wallet key come from the environment, so the same code runs against an isolated demo database.
Screens
Synthetic data. Every screen in this case study comes from an isolated demo database filled by a random-number generator, never the production archive: the trades, the ROI figures and the percentages measure nothing and describe no trading result.




