Production-oriented TypeScript bot scaffolding for:
- Creating a new coin/pool on Meteora DBC
- Bundling buy transactions with multiple wallets
- Sending bundles through Jito block engine
- Selling from all bundle wallets, then gathering SOL back to main wallet
This repo is designed so you can plug in your preferred Meteora DBC transaction builder (official scripts service, private backend, or your own on-chain instruction builder) while keeping orchestration + wallet + Jito logic stable.
- Create + Buy flow
- Requests a create transaction
- Requests buy transactions for all bundler wallets
- Signs with local keypairs
- Sends one or more Jito bundles (auto chunking by bundle size)
- Sell + Gather flow
- Builds sell transactions for all bundler wallets
- Sends sells through Jito bundles
- Gathers SOL back to the main wallet after selling
- Wallet handling
- Main wallet from
MAIN_WALLET_PRIVATE_KEY - Bundler wallets from
.jsonfiles or env list
- Main wallet from
- Config validation
- Strict env parsing via
zod
- Strict env parsing via
src/cli.ts- CLI entry pointsrc/config/env.ts- Env parsing/validationsrc/clients/dbcScriptClient.ts- Meteora DBC tx provider clientsrc/clients/jitoClient.ts- Jito bundle RPC clientsrc/services/bundlerService.ts- Create/buy/sell/gather orchestrationsrc/solana/wallet.ts- Wallet loading and key helperssrc/solana/tx.ts- TX decode/signature helpers
- Node.js 20+
- A funded Solana main wallet
- RPC endpoint with good mainnet performance
- Access to a DBC tx script service endpoint that can return unsigned serialized transactions
npm install- Copy env template:
cp .env.example .env- Fill required fields:
RPC_URLMAIN_WALLET_PRIVATE_KEY(base58)JITO_BLOCK_ENGINE_URLSJITO_TIP_LAMPORTSDBC_SCRIPT_API_BASE_URL
- Wallet source:
- Option A: set
BUNDLER_WALLET_PRIVATE_KEYS(comma-separated base58 private keys) - Option B: put
.jsonwallet files inBUNDLER_WALLET_DIR
npm run bot -- create-buy \
--name "My Coin" \
--symbol "MYC" \
--uri "https://example.com/meta.json" \
--decimals 6 \
--buyLamports 50000000 \
--slippageBps 300npm run bot -- sell-gather \
--pool <POOL_ADDRESS> \
--mint <MINT_ADDRESS> \
--sellPercent 100 \
--slippageBps 500npm run bot -- gather-solThis bot expects your DBC script backend to provide endpoints returning unsigned base64 transactions:
POST {DBC_SCRIPT_API_BASE_URL}{DBC_CREATE_ENDPOINT}POST {DBC_SCRIPT_API_BASE_URL}{DBC_BUY_ENDPOINT}POST {DBC_SCRIPT_API_BASE_URL}{DBC_SELL_ENDPOINT}
Each endpoint should return:
{
"serializedTxBase64": "<base64 versioned tx>",
"poolAddress": "<optional>",
"mintAddress": "<optional>"
}If you already have your own builder service, map it in src/clients/dbcScriptClient.ts.
- telegram: https://t.me/trade_SEB
- twitter: https://x.com/TradeSEB_