OUTRIDER docs
v1.0.0
Live demo Get help
● Ship · When something is off

Troubleshooting
symptom, cause, fix.

Start every investigation with node src/cli.mjs doctor: it checks each data source, the pump.fun WebSocket, your keys and your config, and says what each failure breaks. The common problems are below.

01pump.fun: no events, or the stream keeps dropping

  • Node 20 or older. The stream needs Node's built-in WebSocket. doctor says "no global WebSocket — use Node 22+" and record refuses to start. Install Node 22.
  • Public RPC. api.mainnet-beta.solana.com drops heavy logsSubscribe streams. doctor warns "pump.wsUrl is the public endpoint". Put a free Helius, QuickNode or Chainstack WebSocket in pump.wsUrl (how).
  • Where the RPC is set. The console field Integrations → Solana RPC / WebSocket URL wins over config.json when it is filled in. Check both.
  • Check it. Telegram /status shows "pump.fun: N events" or "not connected"; the console health check "pump.fun stream is live" wants an event in the last 5 minutes.

02Nothing moves after the laptop slept

A sleeping computer leaves half-open sockets. The pump.fun stream pings every 20 seconds and forces a reconnect when the socket stalls, even if no close event arrives; the journal logs "ws stalled — forced reconnect". Nothing is watched while the machine sleeps, so the paper record has gaps. For a continuous record, run on a server (Deployment).

03Rate limits: 429 and timeouts

  • Public Solana RPC. fomo, collect and WHALE read transactions one by one; on the public RPC they are slow and get throttled. A private RPC in solanaRpc fixes most of it.
  • GeckoTerminal. The free API returned HTTP 429 quickly at about 27 calls a minute when measured; the default is one call every 6 seconds (gecko.minIntervalMs). On a 429 the sweep backs off hard and stays slower; the progress line shows "(N× rate-limited)". Leave it running.
  • Hyperliquid. The liquidation map paces its reads; if many accounts fail, the summary shows "N failed". Reduce --wallets or the console's accounts-per-refresh.
  • HL leaderboard timeout in doctor: the leaderboard file is large; it only affects leaders and the liquidation map. Try again later.

04doctor shows ❌ for a source

LineEffectWhat to do
Polymarket Gamma / CLOB / data-api: fetch failedThe Polymarket books cannot find or settle markets.Polymarket may not answer from your location or host. Turn polymarket and polymm off if you do not need them.
RSS feed: not JSON / 0 items / HTTP errorThat feed adds nothing.Remove or replace it in news.feeds.
Telegram channel failingSHILL cannot read it.Use the bare public channel name; private channels cannot be read.
TypeSafe Jev (·)Optional.Only set TYPESAFE_API_KEY if you have access.

05The desk does not start

MessageFix
config: …config.json: invalid JSONA comma or quote is wrong. Check the file in a JSON validator.
config: …: bankrollSol: expected number, got stringWrite numbers without quotes; lists as […]; objects as {…}.
mode "…" is not supportedUse paper or alert.
Admin console off: run with the tsx loader (npm start / npm run dash) and `npm install`.Start with the npm scripts, and run npm install.
Admin console failed to start: …Often better-sqlite3 did not install for your Node version. Use Node 22+, then rm -rf node_modules && npm install.
Dashboard off: listen EADDRINUSEPort 8790 is taken. Stop the other process or set DASH_PORT.

06Dashboard and console

  • 403 "host not allowed" behind a proxy: list your domain in DASH_ALLOWED_HOSTS (Deployment).
  • 403 "create the owner at /admin first": the owner does not exist yet, and before that the dashboard answers only requests made on the server itself. Create the owner locally or through an SSH tunnel (how).
  • 403 "the kill switch needs a manager or owner": viewers can watch but not stop or resume the desk.
  • Sent to /admin all the time: once the owner exists, you must sign in. Sessions last 12 hours.
  • Signed out right after signing in over HTTPS: make sure the proxy sends X-Forwarded-Proto: https and serves the whole site over HTTPS.
  • "The setup code is wrong": use a code printed by this install; restart to print a new one.
  • Too many failed sign-ins: wait 15 minutes.
  • Lost two-factor device: sign in with one of your recovery codes instead of the authenticator code. With none left, another owner can remove your account in Team and add it again (you get a new one-time password).
  • A secret "cannot be decrypted": the console secret key changed. Restore the old ADMIN_SECRET_KEY or data/.admin-secret-key, or set the secret again.
  • Status chip says "Polling": Server-Sent Events are blocked on the way (often proxy buffering). The page still updates, less often.

07The desk runs but never buys

That is the most common outcome, and usually correct: the EV gate needs expected value of at least 3 % after costs, and the pump.fun filters are strict. Check, in order:

  1. What blocks entriesDashboard → Desk control, or /status: kill switch, hard stop, daily loss limit, protections.
  2. Modealert mode never trades.
  3. RejectionsThe Pump.fun live panel and the Ledger's skip rows show why each candidate was refused.
  4. Warningsdoctor lists settings that make entries impossible, for example a minimum stake above the per-token cap.

08Still stuck

See Support. Include the output of node src/cli.mjs doctor with keys removed.