██████╗ ██████╗ ██╗ ████████╗
██╔══██╗██╔═══██╗██║ ╚══██╔══╝
██████╔╝██║ ██║██║ ██║
██╔═══╝ ██║ ██║██║ ██║
██║ ╚██████╔╝███████╗██║
╚═╝ ╚═════╝ ╚══════╝╚═╝
Pump.fun Token Launcher
A Twitter bot that launches tokens on Pump.fun via pumpmolt. Users tweet at the bot with a token name, ticker, and description — POLT parses the request, applies rate limiting, launches the token on Solana with zero dev buy, and replies with the token link.
- Someone tweets at
@pumpmoltwith a launch request - The bot picks it up on the next poll cycle (every 30s)
- Checks if the user already launched a token in the last 48h
- Parses the token name, ticker, and description
- Launches the token on Pump.fun with zero dev buy
- Replies with the Pump.fun link, transaction explorer link, and mint address
@pumpmolt launch
Name: Cosmic Cat
Ticker: CCAT
Description: The cosmic cat of the galaxy
@pumpmolt launch "Cosmic Cat" CCAT "The cosmic cat of the galaxy"
Attach an image to your tweet and it will be used as the token's profile picture.
- Name: max 32 characters
- Ticker: max 10 characters, automatically uppercased
- Description: required
- Rate limit: 1 launch per user per 48 hours (configurable)
| File | Purpose |
|---|---|
src/config.ts |
Loads environment variables and validates configuration |
src/parser.ts |
Parses tweets to extract token name, ticker, and description |
src/ratelimit.ts |
Per-account 48h rate limiting, persisted to ratelimit.json |
src/twitter.ts |
Hybrid Twitter client — reads via twitterapi.io, writes via official X API |
src/launcher.ts |
Calls pumpmolt's launchToken() with devBuyAmountSol: 0 |
src/index.ts |
Main loop — polls mentions, parses, rate-checks, launches, replies |
POLT uses a hybrid Twitter client:
- Reading mentions: twitterapi.io — cheap third-party API, only needs an API key
- Posting replies: Official X API via
twitter-api-v2— uses OAuth 1.0a tokens, free tier supports posting
This avoids the $100/month X API Basic tier cost for reading mentions while still being able to post replies through the free official API.
- Node.js >= 22.0.0
- twitterapi.io account — for reading mentions (sign up)
- X Developer account — for posting replies (developer.x.com), free tier works
- Solana wallet — with SOL for transaction fees
- pumpmolt — the token launch library (must be available as a local or npm dependency)
git clone https://github.com/YOUR_USERNAME/POLT.git
cd POLT
npm installCopy the example environment file and fill in your credentials:
cp .env.example .envEdit .env with your values:
# twitterapi.io API key (for reading mentions)
TWITTERAPI_IO_KEY=your_twitterapi_io_key
# The bot's Twitter username (without @)
TWITTER_BOT_USERNAME=pumpmolt
# Official X API credentials (for posting replies)
TWITTER_API_KEY=your_api_key
TWITTER_API_SECRET=your_api_secret
TWITTER_ACCESS_TOKEN=your_access_token
TWITTER_ACCESS_SECRET=your_access_secret
# Solana private key (base58 encoded)
SOLANA_PRIVATE_KEY=your_solana_private_keytwitterapi.io key:
- Sign up at twitterapi.io
- Copy your API key from the dashboard
X API OAuth tokens:
- Create an app at developer.x.com
- Under User authentication settings, set permissions to Read and Write
- Go to Keys and Tokens
- Copy Consumer Key →
TWITTER_API_KEY - Copy Consumer Secret →
TWITTER_API_SECRET - Generate Access Token and Secret (under OAuth 1.0) →
TWITTER_ACCESS_TOKENandTWITTER_ACCESS_SECRET - The Access Token should start with your user ID (e.g.,
1234567890-...)
Important: Generate the Access Token after setting Read and Write permissions. Permissions are baked into the token at generation time.
Solana private key:
- Export from Phantom, Solflare, or generate with
solana-keygen new - Must be base58 encoded
- The wallet needs SOL for transaction fees
# Custom Solana RPC URL (default: mainnet-beta)
SOLANA_RPC_URL=https://api.mainnet-beta.solana.com
# Wallet for creator fees (pump.fun sets creator to the signing wallet)
CREATOR_FEE_WALLET=
# Polling interval in seconds (default: 30)
POLL_INTERVAL_SECONDS=30
# Rate limit window in hours (default: 48)
RATE_LIMIT_HOURS=48npm run build
npm startOn Windows PowerShell, use ; instead of &&:
npm run build; npm startFor development with auto-recompilation:
npm run dev ██████╗ ██████╗ ██╗ ████████╗
██╔══██╗██╔═══██╗██║ ╚══██╔══╝
██████╔╝██║ ██║██║ ██║
██╔═══╝ ██║ ██║██║ ██║
██║ ╚██████╔╝███████╗██║
╚═╝ ╚═════╝ ╚══════╝╚═╝
Pump.fun Token Launcher
═══════════════════════════
Bot authenticated as @pumpmolt (ID: ...)
Official X API client ready for write operations.
Polling interval: 30s
Rate limit: 1 launch per 48h per account
Bot is running. Press Ctrl+C to stop.
- Replies: "Launching $TICKER (Name) on Pump.fun... Stand by."
- Launches the token via pumpmolt with zero dev buy
- On success, replies with the Pump.fun URL, transaction link, and mint address
- Records the launch for rate limiting
Replies with an error message explaining the expected format.
Replies: "You can only launch one token every 48h. Please wait Xh Ym before trying again."
- One token launch per user per 48 hours (configurable via
RATE_LIMIT_HOURS) - Persisted to
ratelimit.json— survives bot restarts - Expired entries are cleaned up every hour
- Never commit your
.envfile — it's gitignored by default - All secrets are loaded from environment variables, never hardcoded
- The bot enforces
devBuyAmountSol: 0— it never buys its own tokens - Creator fees go to the wallet whose
SOLANA_PRIVATE_KEYyou provide
MIT