Skip to Content
Pump.fun ScalperConfiguration

Configuration

The bot is configured by two files with a strict separation of concerns:

  • config.yaml — all tunables (mode, sizes, thresholds, exits, risk limits, feeds). Validated with zod at startup. No hot-reload — restart to apply changes. Point elsewhere with CONFIG_PATH=/path/to/config.yaml.
  • .envsecrets only. Never committed, never logged, never written to the database. config.yaml refers to secrets by env-var name; URLs may interpolate env vars via ${VAR}.

Review the committed config.yaml before running. It may ship with mode: live and real Telegram chatId / adminUserIds values. Confirm the mode, sizes, risk limits, and alert targets match your intent — and switch to mode: paper — before your first run. See Run Modes & Safety.

config.yaml sections

SectionWhat it controls
modepaper | dry-run | live.
assertProgramIdsOnChainVerify pinned program IDs exist on-chain at startup (set false for offline/CI boots).
walletkeypairEnvVar (which env var holds the key) and balanceFloorSol.
rpcprimaryHttp, pumpportalWs, and optional secondary / gRPC endpoints (support ${ENV_VAR}).
detectorFeed toggles (PumpPortal / Helius / gRPC), dedupe window, reconnect behavior.
jitoBlock-engine URL, tip caps / floor for the live send path.
entrybaseSizeSol (e.g. 0.03), maxSizeSol, slippage, minEntryScore (default 60).
guardrailsHolder/creator/pool caps, liquidity floor, the relaxed-risk lane, momentum sizing.
exitsTP0/TP1/TP2 ladder, trailing arm/gap, hard stop, time stop, LP-drop / creator-dump emergencies, ladder refresh/tiers.
positionspricePollMs (how often positions are re-priced).
shadowVeto dry-run / shadow-tracking settings.
feesPriority-fee and Jito-tip planning.
riskmaxConcurrentPositions (e.g. 2), daily loss limit, consecutive-loss halt, emergency-exit count.
alertsTelegram chatId and adminUserIds, plus the token env-var name.
persistencedbPath (e.g. ./data/scalper.db).
dashboardhost / port (default 127.0.0.1:8787) and the auth env-var names.

.env secrets

None of these are needed for a paper boot. They are referenced by name from config.yaml.

VariableRequired whenPurpose
WALLET_PRIVATE_KEYlive (and funded dry-run)Base58 secret key or JSON byte array. Leave blank for paper.
TG_BOT_TOKENAlerts enabledTelegram bot token; blank disables alerts.
HELIUS_HTTP_URLUsing HeliusHelius RPC HTTP endpoint.
HELIUS_GRPC_URLUsing gRPC feedYellowstone/Helius gRPC endpoint.
HELIUS_GRPC_TOKENUsing gRPC feedgRPC auth token.
SECONDARY_HTTP_URLOptionalFallback RPC endpoint.
JITO_BLOCK_ENGINE_URLliveJito block-engine endpoint for bundle sends.
JITO_AUTH_TOKENlive (if required)Jito auth token.
RUGCHECK_API_KEYOptionalAdvisory RugCheck enrichment signal.
DASHBOARD_USERNAME / DASHBOARD_PASSWORDNon-localhost dashboard bindBasic-auth credentials for the dashboard.

Environment overrides

VariableEffect
CONFIG_PATHLoad a different config.yaml.
REPORT_KINDstrategy or soak — selects which report the report CLI generates.

Validation

Configuration is validated against a zod schema (src/config/schema.ts) at startup via src/config/load.ts. Invalid config fails fast — the bot refuses to boot rather than run with unsafe or malformed settings.

Last updated on