The lore
Everything before you unleash the bull
Wallets, setup, what runs every five minutes, when we skip a cycle on purpose, and how not to ngmi your bootstrap SOL. Full detail — no fluff, no corporate speak.
Jump to section
Basics
Overview
Liquidity Bull eats your Pump.fun creator fees and puts them to work — burn supply on the curve pre-grad, stack LP post-grad. The SOL traders pay you? Automated. No daily clicking. No custom contract.
| Token phase | What Liquidity Bull does |
|---|---|
| Pre-bonding (still on the bonding curve) | Claim fees → buy back your token on the curve → burn it (reduce supply) |
| Post-bonding (graduated to PumpSwap) | Claim fees → swap SOL to your token → add liquidity to the pool |
You configure everything once with Phantom. After that, a background worker checks your token every five minutes and executes whenever the bull wallet holds enough SOL above its safety reserve — from claimed fees or your own top-ups — and the run is simulated to be worthwhile.
After setup you touch grass
You do not sign Phantom for every claim, burn, or LP add. You do not paste your seed anywhere. Normal runs are signed by the bull wallet — a separate hot wallet per token.
Architecture
Liquidity Bull does not deploy a custom smart contract for your token. It orchestrates official on-chain programs you already trust:
- Pump.fun — bonding curve, creator fee distribution / claiming, graduation
- Jupiter — SOL → token swaps after graduation
- PumpSwap — liquidity pool operations for graduated tokens
The platform has three main parts:
| Component | Role |
|---|---|
| Web app (dashboard) | Login, add tokens, complete fee routing setup, view status and run history |
| API + storage | Stores automation config, encrypted automation wallet keys, session auth |
| Worker | Runs the 5-minute cycle: read fees → preflight → execute or skip |
The dashboard refreshes its display every 30 seconds so you see updated claimable amounts and run history. That refresh is read-only — it does not send transactions. Only the worker executes on-chain actions.
The two wallets
Every automation uses two different Solana wallets. Confusing them is the most common source of mistakes (e.g. sending bootstrap SOL to Phantom instead of the automation wallet).
A) Dev wallet — your Phantom wallet
| What it is | The wallet you use in Phantom — the Pump.fun token creator |
| You control it | Yes, only in Phantom |
| Private key | Never leaves Phantom. Liquidity Bull never asks for it |
| Used for | Logging in, proving you own the token, one-time activation message, one-time fee-routing transaction |
| Stored as | ownerWallet in Liquidity Bull |
B) Automation wallet — platform hot wallet
| What it is | A separate wallet generated automatically when you activate a token |
| You control it | No — you do not import it into Phantom |
| Private key | Generated by Liquidity Bull, encrypted at rest, loaded only when the worker runs your token |
| Used for | Receiving routed creator fees and signing all automatic transactions (claim, burn, LP) |
| Shown in dashboard as | Automation wallet: xxxx…yyyy |
Why two wallets?
Automation must run 24/7 without you approving every transaction in Phantom. At the same time, you should never paste your main wallet's private key into a website. The solution: a dedicated automation wallet per token that only handles that token's fee strategy.
How fees reach the automation wallet
By default, Pump.fun creator fees accrue to the creator (dev) wallet. During setup you sign one on-chain transaction in Phantom that routes 100% of creator fees to your automation wallet via Pump fee-sharing configuration.
Traders pay fees on Pump
↓
Fees accumulate (claimable)
↓
Worker distributes / claims → automation wallet receives SOL
↓
Pre-bonding: buyback + burn | Post-bonding: swap + add LPImportant
Until fee routing is complete, the dashboard shows Fee routing setup required. The worker will not execute live actions for that token until routing is done.
Who can use this
Liquidity Bull is for you if:
- You launched a token on Pump.fun
- You are the creator / dev wallet for that token
- You want creator fees to automatically burn supply (pre-bonding) or grow liquidity (post-bonding)
You need:
- Phantom or a compatible Solana wallet
- Your token mint address
- A small one-time SOL deposit to the automation wallet (see SOL & funding)
Setup
Complete setup
- 01
Connect wallet
Open the dashboard, click Connect wallet, choose Phantom, and sign the login message. This proves you control the dev wallet. No automation runs yet.
- 02
Add a token
Click + Add token and provide:
- Token mint address — from Pump.fun or Solscan
- Symbol — e.g.
BLIQ
You do not choose pre- or post-bonding manually. Liquidity Bull reads the Pump bonding curve on-chain and shows Detected strategy(claim & burn vs claim & LP). You can also pick a token from From your Pump wallet if discovery finds your launches.
Click Sign & activate and approve the activation message in Phantom. Behind the scenes:
- An automation record is created for your token
- A new automation wallet is generated and stored (encrypted)
- Your Phantom address is linked as the creator (ownerWallet)
- 03
Complete fee routing (one-time, Phantom)
Route 100% of creator fees to the automation wallet. Phantom may prompt you automatically, or click Complete Setup on your token card.
When successful, status becomes Automation ready. If you skip this step, the worker cannot claim fees into the automation wallet.
- 04
Fund the automation wallet (one-time bootstrap)
Send SOL to the automation wallet address shown on the token card — not your Phantom address.
Purpose Amount Safety reserve (never spent) 0.05 SOL Recommended bootstrap 0.15 SOL The first 0.05 SOL is a permanent safety reserve for network fees — the worker never spends below it. Everything above the reserve is put to work on the next cycle (burn or LP), together with claimed creator fees. So a 0.15 SOL bootstrap funds the reserve plus a first ~0.1 SOL deploy even before any fees arrive.
- 05
Let the worker run
When all of the following are true, automation runs every five minutes:
- Fee routing complete (Automation ready)
- Automation wallet has bootstrap SOL
- Automation state is ACTIVE
- The platform worker is running (live mode for real transactions)
You do not sign anything in Phantom for normal runs.
SOL & funding
Two sources of SOL in the automation wallet
| Source | Role |
|---|---|
| Your one-time bootstrap | Covers the safety reserve and can fund the first burns/LP adds |
| Claimed creator fees | The ongoing fuel — every claim adds SOL the worker can deploy |
The safety reserve (hard floor)
The worker keeps a fixed 0.05 SOL reserve in the automation wallet at all times. It exists so the wallet can always pay network fees. A run only executes when the wallet would stay above this reserve afterwards — otherwise the run is skipped with SOL hard floor reached until new fees arrive.
Everything above the reserve gets deployed
On each approved cycle the worker deploys the wallet's surplus — balance minus reserve minus estimated costs — into your strategy (burn pre-bonding, LP post-bonding). That includes SOL you top up manually: sending extra SOL to the automation wallet is a direct way to trigger a bigger burn or LP add on the next cycle.
Typical first-run timeline
- You send 0.15 SOL to the automation wallet
- 0.05 SOL stays as reserve; ~0.1 SOL is surplus
- Worker claims any available creator fees on top
- Preflight approves (surplus covers costs, reserve stays intact)
- Buyback/burn or swap + LP executes with the surplus
After that the system is self-funding: claimed fees accumulate above the reserve and get deployed on following cycles. If fees are zero or tiny and there is no surplus, the worker skips and waits — the reserve is never drained.
Quick checklist
- Phantom connected (dev wallet)
- Token added and activation signed
- Detected strategy shown (pre or post-bonding)
- Fee routing complete — Automation ready
- ~0.15 SOL sent to automation wallet address (not Phantom)
- Automation state ACTIVE
- Worker running (live mode for real on-chain transactions)
When all boxes are checked, Liquidity Bull handles creator fees automatically — checking every five minutes, executing only when it makes sense.
Open dashboardAutomation
Automation cycles
Worker cycle (on-chain) — scheduled checks
For each ACTIVE token, the worker runs this pipeline roughly every five minutes (configurable via WORKER_INTERVAL_MS, default 300000):
┌─────────────┐ ┌──────────────┐ ┌─────────────────────────┐
│ Detect │ --> │ Preflight │ --> │ Execute (if approved) │
│ fees/state │ │ simulate $ │ │ claim → burn or LP │
└─────────────┘ └──────────────┘ └─────────────────────────┘
│
SKIP if guardrails failOn each cycle the worker:
- Selects automations that are due (
next_check_atin the past), up to a per-cycle cap - Checks claimable creator fees first (light RPC) before heavier balance / bonding-curve reads
- Runs preflight — estimates gas, swap costs, slippage, and net profit
- If approved: sends transactions (claim → strategy). If not: logs a clear wait/skip reason — no drain, no reckless execution
- Writes the result to Run History (with Solscan links when txs land)
Reading Run History
Every cycle gets a plain-language entry with a status badge and, where useful, an explanation of what happened and what to do:
| Badge | Meaning |
|---|---|
| OK | The run executed — e.g. “Buyback & burn executed” or “Swapped & added liquidity” |
| Wait | Nothing wrong — the worker is waiting (fees too small, wallet at reserve) |
| Action | You need to do something — e.g. finish fee routing or top up SOL |
| Error | A transaction or API call failed — usually retried automatically next cycle |
| Info | Neutral events like a paused automation being skipped |
Dashboard refresh — every 30 seconds
The dashboard polls the API every 30 seconds to update claimable amounts, wallet balance, bonding progress, and run history. This is display-only. After actions like adding a token or completing setup, the dashboard also refreshes immediately. If a refresh fails (RPC hiccup, network), the dashboard shows a small notice and keeps retrying.
Waiting runs are normal
Most cycles will show a Wait badge — fees too small, or the wallet is down to its safety reserve. That is intentional: the system waits for a worthwhile run rather than burning SOL on gas.
Pre-bonding vs post-bonding
| Pre-bonding | Post-bonding | |
|---|---|---|
| When | Token still on Pump bonding curve | Token graduated to PumpSwap |
| Goal | Reduce circulating supply (burn) | Deepen the liquidity pool |
| Strategy | Claim → buyback on curve → burn | Claim → Jupiter swap → add LP |
| Detection | Automatic via on-chain bonding curve | Automatic when curve completes |
| You select at setup | No — auto-detected from mint | No — auto-detected from mint |
When your token graduates, Liquidity Bull detects bondingCurve.complete on-chain, updates token_state to post-bonding, and switches strategy on the next worker cycles. You do not need to reconfigure manually.
While pre-bonding, the dashboard may show Bonding progress: X% — how far the curve is toward graduation.
Pre-bonding runs
When preflight approves a pre-bonding cycle, the worker executes in order:
- Distribute / claim creator fees — SOL moves to the automation wallet (Pump fee-sharing v2 distribute or legacy claim, depending on your token)
- Buy back your token — spends a portion of available SOL on the bonding curve (capped by
maxSolPerRunand hard floor rules) - Burn purchased tokens — permanently removes them from supply
Priority fees may be attached to land transactions during congestion, capped by maxPriorityFeeLamports.
In Dry-run mode (operator testing), the worker simulates approval and logs what it would do without sending transactions.
Post-bonding runs
After graduation, each approved cycle:
- Distribute / claim creator fees → automation wallet receives SOL
- Swap SOL to your token via Jupiter (respecting
maxSlippageBps) - Add liquidity to the canonical PumpSwap pool for your token
Swap fees and slippage buffers are included in preflight so the worker does not LP when the math does not work.
The LP deposit is sized by the tokens actually in the wallet after the swap — including leftovers from earlier cycles. If the amounts are too small to pair in a given cycle, the deposit is deferred: the tokens stay safely in the automation wallet and are added to the pool on a later cycle. Run History shows this as “Swapped — LP deposit postponed”.
Preflight & guardrails
Before every execution, Liquidity Bull simulates costs and compares them to configurable risk limits. Default values for new automations:
| Setting | Default | Purpose |
|---|---|---|
| Safety reserve (hard floor) | 0.05 SOL | Never leave the automation wallet below this SOL buffer |
| Minimum claim amount | 0.02 SOL | Ignore claimable fees below this size |
| Minimum net result | 0.005 SOL | Skip if estimated costs would eat the whole deploy |
| Max SOL per run | 20 SOL | Cap how much SOL is deployed in a single cycle |
| Max slippage | 3% | Limit price movement on buys and Jupiter swaps |
| Max priority fee | 100000 lamports | Cap priority fees on a congested network |
Preflight also budgets for:
- Base network fee and priority fee
- Swap fee (~0.3% of the deploy) and slippage buffer (~1%)
- Token-account creation and a retry buffer for transactions that fail to land
Common wait/skip messages you may see in Run History:
- Waiting: fees too small to act on — claimable fees have not reached the minimum yet; nothing was spent
- Waiting: wallet at SOL reserve — only the safety reserve is left; the worker acts again once new fees arrive or you top up
- Skipped: network fees above your cap — Solana is congested; retries automatically on later cycles
Circuit breaker
If several on-chain attempts fail in a row (not normal waits — actual failed transactions), the automation is paused automatically to protect your wallet. The dashboard shows the reason. Fix the cause — usually a lack of SOL — and click Resume. If the wallet is funded and ready, the worker overrides the breaker on its own and keeps going.
Smart polling & RPC protection
With many tokens, polling every mint every 5 minutes would waste RPC quota. Liquidity Bull uses a per-automation schedule instead of a fixed global interval.
1. Claimable-first
Each check reads claimable creator fees before token state, wallet balance, or bonding-curve data. If fees are below minClaimAmountSol, the run skips early with minimal RPC cost.
2. Tiered polling (hot → warm → cold)
After consecutive inactive skips (claimable below threshold, no execution), the next check is scheduled farther out:
| Tier | Default interval | When |
|---|---|---|
| Hot | 5 minutes | 0–5 inactive skips, or after any successful run |
| Warm | 30 minutes | 6–20 inactive skips |
| Cold | 6 hours | 21+ inactive skips |
A successful run resets the tier to hot. Preflight skips for other reasons (hard floor, net profit) do not advance the inactive counter as aggressively as “no fees yet” skips.
3. Inactive tokens are never stranded
Tokens without fee activity are not paused — they simply decay to the cold tier and keep getting a cheap check every few hours. As soon as fees return, a successful run snaps them back to the hot 5-minute schedule. No manual Resume needed.
| Trigger | Default | Result |
|---|---|---|
| Auto-stop | 14+ days without any successful run and a long streak of empty checks | Automation → STOPPED; resume manually if you want to retry |
Auto-stop only cleans up long-abandoned automations. It is reversible with Resume on the dashboard (which resets polling to hot).
4. Max checks per worker cycle
Each worker tick processes at most 100 due automations (operator-configurable). Remaining due tokens wait for the next tick — order is by oldest next_check_at first.
Dashboard fields
Per token you may see Poll tier and Next check. If the safety circuit breaker ever pauses an automation after repeated failures, the dashboard shows the reason next to the token.
Dashboard
Dashboard reference
| UI element | Meaning |
|---|---|
| Connect wallet | Login with Phantom (dev wallet) |
| + Add token | Start a new automation for a mint |
| Detected strategy | Auto-detected pre-bonding (burn) or post-bonding (LP) |
| Automation wallet: … | Hot wallet address — send bootstrap SOL here |
| Fee routing setup required | Complete Phantom setup to route fees |
| Automation ready | Fee routing OK; worker can execute when other checks pass |
| Claimable: X SOL | Live on-chain claimable creator fees |
| Wallet: X SOL | Current automation wallet balance |
| Bonding: X% | Progress toward graduation (pre-bonding) |
| Preflight | Whether the next run would be approved right now |
| Poll tier | hot / warm / cold — how often this token is checked |
| Next check | Scheduled worker poll time (not fixed 5 min for inactive tokens) |
| Run History | Past cycles in plain language with status badges (OK / Wait / Action / Error) and Solscan links |
| Worker status banner | Top of the dashboard — “Worker live” (real transactions) or “Simulation mode” (dry-run, logs only), plus the age of the last run |
| Graduated → LP banner | Shown once a token bonds — the strategy has switched from burn to LP automatically |
| Your runs / Burn cycles / LP cycles / Net SOL | Personal analytics for your automations |
Per-token actions:
- Complete Setup — finish fee routing in Phantom
- Resume — set automation to ACTIVE
- Pause — temporarily stop worker runs
- Stop — stronger off switch (can resume later)
Pause, resume, and stop
| State | Worker behavior |
|---|---|
| ACTIVE | Scheduled checks (hot/warm/cold tier); executes when preflight approves |
| PAUSED | Skipped until you resume — manual pause or safety circuit breaker after repeated failures |
| STOPPED | Skipped until you resume — manual stop or long inactivity auto-stop |
Pause does not undo on-chain fee routing. It only stops the worker from executing new strategy transactions until you set the token back to ACTIVE. Resuming resets polling to the hot tier.
Security
Security
- Phantom private key — never shared. You only sign a login message, activation message, and one-time fee-routing transaction.
- Automation wallet key — generated server-side, encrypted at rest with
SIGNER_ENCRYPTION_KEY, used only by the worker for your token. - Session auth — wallet signature + nonce; your dashboard only shows automations where you are
ownerWallet. - No Liquidity Bull contract — interactions are with Pump, Jupiter, and PumpSwap programs directly.
Multi-token creators
One Phantom can manage many tokens. Each token gets its own automation wallet and its own fee-routing setup. Keys and data are isolated per automation.
Help
FAQ
Is the automation wallet my dev wallet?
No. Dev wallet = Phantom (identity). Automation wallet = separate hot wallet for automatic signing.
Do I give Liquidity Bull my Phantom private key?
No. Never. You only sign messages and setup transactions in Phantom.
Do I need to send SOL every day?
No. Only a small one-time bootstrap to the automation wallet. After that, claimed fees fund operations when profitable.
What if my token has no fees yet?
Any SOL above the 0.05 SOL safety reserve is deployed into your strategy — including your bootstrap. Once the wallet is down to the reserve, the worker simply waits for new fees; the reserve itself is never touched. If you want the automation to only ever spend claimed fees, bootstrap with just the reserve amount plus a little gas.
What if I already claimed or configured fees on Pump manually?
The first fee claim on pump.fun automatically migrates a token to Pump.fun's fee-sharing system. Tokens migrated to the old versionof that system (before mid-2025-era configs, "v1") are locked: their fee split can never be changed again, so it can't be re-routed to an automation wallet — not by you and not by us. Liquidity Bull detects this when you add the token and tells you right away. Such tokens can't be automated; you can still claim their fees manually on pump.fun. Tokens on the current version of the fee-sharing system are unaffected.
Does graduation change my strategy?
Yes, automatically. Pre-bonding burn switches to post-bonding LP when detected on-chain.
How often are fees actually claimed?
Hot-tier tokens are checked about every 5 minutes; inactive tokens slow to 30 minutes or 6 hours. The worker claims and executes only when preflight approves — not on every check.
Why did my automation pause itself?
Quiet tokens are not paused anymore — they just get checked less often. The only automatic pause is the circuit breaker: several failed on-chain attempts in a row (usually not enough SOL). Fix the cause, then click Resume — polling resets to hot.
Troubleshooting
| Problem | What to do |
|---|---|
| Fee routing setup required | Click Complete Setup and sign in Phantom |
| Fee routing for this token is permanently locked | The token sits on an old (v1) fee-sharing config — created by an early manual claim on pump.fun — that can never be edited; claim fees manually on pump.fun |
| Could not detect — check mint address | Verify mint is a Pump.fun token with a bonding curve |
| Waiting: wallet at SOL reserve | Normal — send more SOL or wait for fees; the reserve is never spent |
| Waiting: fees too small to act on | Normal — fees below minimum; will retry later |
| Not enough SOL in the bull wallet | Send SOL to the automation wallet address on the token card |
| Price moved past the slippage limit | Volatile token — nothing was bought; retries next cycle |
| Transaction expired before landing | Solana congestion — nothing executed; retries next cycle |
| Safety stop: repeated failures | Circuit breaker paused the automation — fix the cause (usually SOL), then Resume |
| Next check far in the future | Token is on warm/cold tier — speeds up after a successful run |
| Phantom not found | Install the Phantom browser extension |
| Automation not running | Check state is ACTIVE and the worker is running in live mode |
| No run history | Worker may be in dry-run or not started |
| 401 / Invalid signature on login | Sign the exact message shown; try disconnect and reconnect |