BLAZING-FAST client-side SOL memecoin radar with explainable GOOD/WATCH/SHILL.
Trader (Auto), Sentry (Sniper), Hold, and Follow.
- No build step
- No backend
- No accounts required
Open the page and get GOOD / WATCH / SHILL signals at a glance.
Note: This project is for research/education. Nothing here is financial advice.
- New: headless CLI bootstrap for Auto Trader (Agent Gary + profiles) via
curl -fsSL https://fdv.lol/cli.mjs | node - - Flamebar now prefers actively pumping leaders (recent momentum weighting)
- 'Hot PnL' animation highlights outsized movers
- The Flamebar 'HODL' button can open the Hold bot for that mint
- Hold bot supports up to 3 parallel tabs and smarter tab replacement when full
- Trader (Auto) supports Agent Gary: optional AI buy/sell decisions + safe runtime tuning
- Fetches public on-chain + market data directly in your browser
- Ranks tokens using transparent inputs (FDV, volume, price action, liquidity, etc.)
- Surfaces explainable signals: GOOD / WATCH / SHILL
- Provides automation tools (optional) for monitoring and trading workflows
- 100% client-side app (static hosting friendly)
- Real-time streaming pipeline with adaptive throttling/backoff
- Explainable scoring with visible inputs and badges
- Mobile-ready UI and responsive widgets
- Jupiter integration for quotes and swaps with robust fallbacks
- Local caching for snappy UX and offline-friendly state
This repo contains both 'read-only' widgets (boards, KPIs) and 'active' bots (that can trade). If you enable trading bots, use a burner wallet and keep balances small.
Implementation entrypoint: src/vista/widgets/auto/index.js
The Auto Tools Panel is a tabbed automation suite. These tools share common utilities:
- Adaptive RPC backoff/throttling
- Backoff-aware slippage adjustments and retry logic
- Safety checks around dust/min-notional and route cooldowns
Best for: hands-off position management with guardrails.
- Auto wallet mode with local keypair (quick copy/export)
- Automated buy/sell policy set (take-profit, stop-loss, trailing stop, partials)
- Cooldowns and reconciliation logic to reduce 'double spend / stale state' issues
- Fallback sell flow: split sizing, higher slippage re-quotes, bridge paths, manual send paths
- Reserve management (fee/rent/runway buffers) and ATA rent estimation per swap
Best for: signal-driven entries based on KPIs and short-term momentum.
- Scans top candidates and rotates into the strongest setups
- Flame mode can track the current Flamebar leader with rotation/cooldown rules
- Momentum guards and rug gating to reduce bad fills on unstable tokens
Best for: 'I want to watch/hold this specific mint and auto-manage a basic exit.'
- Up to 3 concurrent hold tabs (persisted)
- Open a mint directly from token cards and from the Flamebar 'HODL' button
- Config options (varies by mode): poll interval, buy %, profit %, rug severity threshold, repeat buys, 'uptick-only' gating
- Exit logic includes profit targets plus a 'PnL fade' style exit (when green peaks then fades)
- Dynamic slippage that increases under RPC backoff and on rug/severity events
Best for: mirroring a target wallet using your Auto wallet.
- Watches a target wallet and mirrors buys with configurable sizing
- Designed to reuse the Auto wallet secret (headless-friendly)
Implementation: src/vista/widgets/auto/lib/flamebar.js
- Tracks a rolling performance window (default ~15m)
- Selects a leader and prefers 'active pumps' (recent positive momentum)
- Adds a 'hot' highlight for outsized PnL
- Provides a one-click path into Hold via the 'HODL' action
Implementation: src/vista/widgets/swap/index.js
- Phantom connect
- Quote preview (estimated output, min received, route hops)
- Slippage stepper and sanity checks
- Mobile deep-link to jup.ag with desktop fallbacks
- Throttles/pause hooks to keep the live UI responsive while open
Implementation: src/vista/widgets/favboard/index.js
- Cached leaderboard + token metadata enrichment
- Responsive layout (table on desktop, cards on mobile)
- Quick links to token pages and live stats
- Discover: use the main radar + KPIs to shortlist, then open token pages for confirmation.
- Track a runner: watch Flamebar and open Hold for the leader to manage a lightweight plan.
- Mirror a wallet: use Follow with a small buy percentage and strict max-hold.
- Signal-driven entries: use Sentry for short-term setups and rotate based on momentum.
Implementation: src/vista/meme/metrics/kpi/pumping.js
- Short lookback with fast decay for immediacy
- Hard gates: minimum liquidity, minimum volume, price sanity
- Acceleration signals (short-to-long window transitions)
- Badge system: Pumping / Warming / Calm
Implementation: src/vista/meme/metrics/kpi/degen.js
- Trailing multi-day history with decay and per-mint caps
- Gates: minimum liquidity/volume, price sanity
- Recency-weighted stats and bounce-from-lows detection
- Highlights coins recovering from deep pullbacks with improving volume
- Streaming pipeline:
src/engine/pipeline.js- Ingests multiple feeds with windowed keyword scanning
- TokenStore for stable, NaN-safe merges; MarqueeStore for trending/new
- Scoring + recommendations with guarded 'measured-only' emission
- Adaptive stream pause/resume hooks for UI (swap modal, etc.)
- Ad loader + deterministic selection
- Min order sizing: Jupiter min-in and minimum sell-notional enforcement
- Fee/rent/runway reserves; ATA rent estimation per route
- Pending credit watcher + cache-first reconciliation patterns
- Router cooldowns on dust/no-route errors (per mint)
- Sell fallbacks: split sizing, slippage bumps, bridge paths, manual send paths
- Dust-exit controls (when enabled) with user-defined minimum output
- Serve statically (any static host or simple file server)
- Open the app and set a CORS-enabled Solana RPC (optional headers supported)
- If using bots: generate an Auto wallet and fund it with a small amount of SOL
- Start with conservative sizing and higher slippage caps until you trust your RPC
-
Validate urgent/hard-exit router cooldown bypass:
node tools/trader.mjs --validate-sell-bypass
-
Dry-run sell evaluation from a snapshot (no RPC, no swaps):
node tools/trader.mjs --dry-run-sell --snapshot tools/snapshots/sample-sell.json- Snapshot notes:
- Required:
mint,pos.sizeUi,pos.costSol - Provide either
curSolorpxNow(valuation input) - Optional:
state.takeProfitPct/state.stopLossPct/state.trailPctfor TP/SL/trailing - Optional:
urgent+routerHoldUntilto test urgent sells under router hold
- Required:
-
Deterministic sim against the real auto-bot module (RPC/wallet/quotes stubbed):
node tools/trader.mjs --sim-index- Optional:
--steps 40 --dt-ms 1000 --throw-prune --debug-sell
-
Run the real auto-bot headlessly using a named profile:
- Recommended (direct-link, single profile JSON):
node cli.mjs --run-profile --profile-url <httpsUrl> [--log-to-console]- Example:
node cli.mjs --run-profile --profile-url https://fdv.lol/tools/profiles/fdv.profiles.example.json --log-to-console
- Advanced (multi-profile doc):
node cli.mjs --run-profile --profiles <pathOrUrl> --profile <name> [--log-to-console]
- Recommended (direct-link, single profile JSON):
--run-profile can run Auto and Follow together from a single profile.
Common/shared keys (top-level inside your chosen profile):
rpcUrl(orrpc.url): Solana RPC endpoint.rpcHeaders(orrpc.headers): Object of headers for your RPC.autoWalletSecret(orwallet.secret) (required for headless bots that sign): Auto wallet secret used for signing swaps.- Accepts either a base58 secret, or a JSON array string like
[12,34,...].
- Accepts either a base58 secret, or a JSON array string like
recipientPub(orwallet.recipientPub) (optional): where โreturn SOLโ features send SOL.jupApiKey(orjupiter.apiKey) (recommended): Jupiter API key used for quotes/swaps.agentGaryFullAi(oragent/llm) (optional): Agent Gary runtime config (model/provider/key/risk/fullAiControl).
Enable/disable rules:
- Auto runs by default unless you set
"auto": false. - Follow runs when
followis an object andfollow.enabled !== false.
Follow config (profile key: follow):
enabled:true/false(default: enabled if present)targetWallet(required): wallet address to followbuyPct(optional): percent of auto wallet SOL to use per mirrored buy (range clamps to 10โ70)maxHoldMin(optional): max minutes to hold before exitingpollMs(optional): polling interval (min 250ms)
Example profiles file:
- See
tools/profiles/fdv.profiles.example.jsonfor a minimal single-profile starting point.
Example commands:
-
Follow-only (profile must set
"auto": falseand enable follow):node cli.mjs --run-profile --profiles tools/profiles/dev.json --profile follow_only --log-to-console
-
Auto + Follow:
node cli.mjs --run-profile --profiles tools/profiles/dev.json --profile all_bots --log-to-console
-
Help:
node tools/trader.mjs --help
Our Wiki is the best place to start:
-
Home - About the project, FAQ, and how it works
-
How to Advertise - Add your project to ads.json + mints.json
-
Contributing guidelines, legal docs, and more coming soon
-
How to submit your coin: https://github.com/builders-toronto/fdv.lol/wiki/How-to-submit-your-coin-to-ads-and-static
We use GitHub Discussions for feedback, feature ideas, and Q&A.
๐ https://github.com/builders-toronto/fdv.lol/discussions
fdv.lol is open-source and community-driven. You can help by:
- Contributing code or docs via Pull Requests
- Reporting issues or API quirks
- Suggesting features in Discussions
- Adding wiki pages and improving guides
โก Together we can make fdv.lol the fastest, simplest, and most trusted memecoin radar on Solana.
0.0.8.1: harden trader exits and upgrade Gary decision quality
- add quote-trust scoring and quote-shock handling so noisy quotes stop forcing weak exits
- score fast-drop evidence and require better confirmation for soft cooling/observer-style urgents
- enrich urgent arbitration with count, hardness, trust floors, and evidence-aware gating
- bias softer risk events toward partial de-risking instead of immediate full liquidation
- fix badge semantics so cooling represents real drop conditions while calm remains neutral/plateau
- refactor fast-drop logic into a dedicated sell policy and keep sell pipeline ordering execution-aware
- persist richer sell snapshots, realized outcomes, and replay context for tuning and false-stop analysis
- add replay tooling for sell snapshots to compare baseline, trust, and urgent-arbitration variants
- expand Gary tune schema to include real runtime knobs like partial TP, edge buffers, and entry-cost caps
- feed Gary compact execution-quality context including quote trust, urgent evidence, regime, and badge
- upgrade Gary memory to learn from repeated tags and regimes instead of only recent raw decisions
- tighten Gary buy/sell prompts so exits respect quote quality, confirmation strength, and prior failure modes


