How crawlipede works.
A centipede that lives on X. One is crawling this page right now, marking every ticker and address it finds. It reads every Solana call as it is posted, pulls the contract out, checks it on chain, and keeps a running record of who called what, and when.
What it is
Crypto twitter moves faster than anyone can scroll. crawlipede holds a set of searches and accounts open on X and checks them every few seconds. Every tweet that comes back gets read word by word. Anything that decodes to a real Solana address is marked, scanned, and filed against the account that posted it.
Nothing on the site is simulated. The timeline is real tweets, the spreading list is real accounts, and every number is computed from what it has read.
The tabs
| Tab | What you get |
|---|---|
| Crawl | The feed with the centipede on it, the race of contracts spreading in the last ten minutes, the reads per minute, and a short written read of what is running. |
| Contracts | Every contract it has seen. Spreading, new, or raided. Paste any contract in the filter to open it, even one nobody has posted yet. |
| Callers | Accounts ranked by how their calls did. Open one to see every graded call. |
| Raids | Coins where the posting looks coordinated. |
| Tickers | Every $TICKER typed on the lines it holds, counted in five minute buckets. |
| Console | Everything at once in dense columns, plus a command line. |
| Terminal | The raw output: the agent log line by line, every tweet as the JSON object it reads, its live state, and the source of the centipede crawling the page. |
| You | Your wallet, your watch list and your alerts. |
Shortcuts
1 to 8 switch tabs. / or ⌘K opens search. Paste a contract anywhere on the page to open it. esc closes whatever is open.
Console commands
help list commands <contract> open a coin $TICKER open a ticker @handle open a caller go coins switch tab pause pause the stream clear clear the stream stats totals so far
How it reads X
Each search and each watched account is a line. A line that keeps returning new tweets gets checked faster, down to every few seconds. A quiet line backs off toward a minute. That keeps reads pointed at where the calls are actually happening, and keeps the cost sane.
Searches ask only for tweets newer than the last one seen, and every tweet id is remembered so nothing is counted twice. Reads come through twitterapi.io, which costs about $0.15 per thousand tweets. There is a daily read budget so it can never run away.
What counts as a contract
Any word of 32 to 44 base58 characters that decodes to exactly 32 bytes, plus mints inside pump.fun, dexscreener and solscan links. Common mints like SOL and USDC are ignored. Tickers like $SOL or $WIF are any dollar sign followed by a letter and up to eleven more characters.
Chain checks
The first time a contract shows up, it is looked up on Solana and on DexScreener. Each problem becomes a plain flag:
- mint authority still live
- freeze authority still live
- top 10 accounts hold more than half the supply
- one account holds more than a fifth
- pool under $5,000, or under a day old, or no pool at all
The risk number is just the flags added up. It is not a prediction, and nothing here is advice.
Caller scores
The first time an account posts a contract, that is a call, stamped with the market cap at that moment. Market caps refresh every two minutes, so each call is graded against where the coin is now.
- Hit rate: share of graded calls that reached 2x
- Median: the middle move across all graded calls, so one lucky call cannot carry a record
- Firsts: how often this account was the first one crawlipede saw post the coin
Raids
When six or more accounts post the same contract inside ten minutes, it looks closer. The score blends how many of them are under 300 followers or under 30 days old with how alike their tweets read. Anything over 55 is marked as a raid on the coin, in the race, and in the feed.
Evolution
The agent is not a fixed list of searches. Every few minutes it looks back at what it read and rewires its own lines.
- A caller whose graded calls hit 2x at least half the time, across three or more calls, gets watched directly.
- A ticker that shows up across four or more accounts inside ten minutes gets a search of its own.
- Any line it added that stops producing contracts for 90 minutes gets dropped and benched for six hours.
- It holds at most ten lines of its own, so the read budget never runs away.
Each round that changes something is a new generation. Every add and drop is logged with the reason, on the Live tab and in the terminal with the evolve command. Nobody tunes it.
Holders
Watching is free for everyone. Holding the token switches on the tools that make it yours:
- up to 25 accounts it checks for you
- up to 5 searches of your own on the same fast loop
- keyword alerts on any new contract
- alerts on the site, in Telegram, or POSTed to your webhook
- the full caller board and every graded call
Signing in is one message signed by your wallet. It is never a transaction and never asks for approval to move anything.
API
Everything the site shows comes from these. Send x-crawlipede-session to get holder results.
| Route | Returns |
|---|---|
GET /api/state | stats, spreading, new coins, tickers, callers, raids, lines, the latest read |
GET /api/ca?address= | one coin: calls, tweets, 24 hour mentions, chain scan |
GET /api/caller?handle= | one account's record |
GET /api/callers | the board |
GET /api/tweets?q= | smarkedd tweets matching text or a handle |
GET /feed | server sent events: tweet fresh ca raid brief alert line |
Run your own
One file, no dependencies, Node 18 or newer.
TWITTERAPI_KEY=your_key node setup.js
| Setting | What it does |
|---|---|
TWITTERAPI_KEY | required. every tweet is read through it |
SEARCHES | X searches separated by || |
ACCOUNTS | handles to watch, comma separated |
TOKEN_MINT HOLD_MIN TOKEN_SYMBOL | the token holders need, and how much. without a mint, any signed in wallet gets holder tools |
RPC_URL | a Solana RPC. a paid one is worth it |
OPENROUTER_API_KEY MODEL | turns on the written read |
TELEGRAM_BOT_TOKEN | turns on Telegram alerts |
TWEET_BUDGET_DAY | daily read cap, default 200,000 |
MIN_POLL_S MAX_POLL_S | fastest and slowest a line is checked |