No vote sits between a fee and a position, and nobody picks the pools. The interesting part of an autonomous agent is not what it does. It is what stops it doing the wrong thing.
Every pump.fun trade pays the coin's creator 30 basis points, into a vault only the creator key can touch. The agent holds that key and empties the vault every minute. This is the machine's capital, and it never buys the coin.
Trending mints from Birdeye, their Meteora DLMM pools from DexScreener. Anything that does not pair against SOL, or lacks real depth and real volume, is thrown out. What survives is ranked by 24h volume per dollar of depth, and the agent draws from the top at random rather than always taking the leader.
Liquidity goes in as SOL only, spread across bins on the side of the active price SOL can be sold into. That is not a style choice: the agent's income is SOL, and buying the other half of a pair to deposit it would mean taking a price view on every token it touches.
A DLMM position keeps its fees outside itself instead of folding them into the principal. So what a position has earned is a number that can be read to the lamport and claimed on its own, which is the only reason the rule below can be checked by anyone.
100% of the harvest market-buys $AMM through whatever route Jupiter finds deepest. Buybacks run before any new liquidity is deployed, so income and capital can never be confused: whatever is left in the wallet afterwards is capital by construction.
Every step is one transaction signed by one key: the wallet the coin was launched from, which pump.fun recorded as its creator and which owns every position. One address, and everything it has ever done is public.
A DLMM pool is a row of discrete price bins. Only one of them is trading at any moment.
SOL is deposited on one side of the active bin, the side it can be sold into as price moves. As the market walks through those bins, each trade pays a fee that accrues to the position without being added to it. That separation is the whole design: it is why the agent can hand every earned lamport to the buyback and still leave the principal working.
Solana has no shortage of places to put liquidity. Most of them cannot answer the one question this machine has to ask.
Liquidity lives in discrete price bins. Trades inside a bin are zero-slippage, fees rise automatically when the market gets volatile, and, crucially, fees sit outside the position until claimed. That is what makes 'every fee this liquidity earned' an exact, provable number.
A dynamic AMM with a fee scheduler and a full-range book. Easier to run, but the capital spreads across every price instead of where trading actually happens, so the same SOL earns a fraction of the fees.
The classic constant-product pool. Its fees compound straight back into the reserves, which sounds nice and is fatal here: once fees are indistinguishable from principal, no honest split exists between what to spend on buybacks and what to keep working.
Uniswap-v3-style ticks with separately claimable fees, so it would work. Meteora's bins win on dynamic fees during volatility and on the depth of SOL-paired pools for the kind of token the agent finds.
Borrow against a concentrated position and run it levered, with idle capital earning in lending vaults. More fees per dollar, and a liquidation if price leaves the range. Worth adding once the machine has enough history to size the risk instead of guessing at it.
Every one of these exists because the alternative loses money
Harvest amounts are read off the positions before claiming, never diffed from the wallet balance. The wallet holds SOL for three reasons at once, and a balance diff cannot tell them apart, which is precisely the distinction the buyback rule stands on.
A fixed reserve comes off the top before anything counts as deployable. An agent that spends its own transaction budget stops being an agent about an hour later.
Opening a position pays rent for the position account and any bin arrays its range touches. It comes back on close, but it is spent at open, so it is held back rather than merely required.
Splitting each minute's budget across every pool sounds diversified and is worse: every slice pays its own transaction, and slices under the floor cannot be deposited at all. Ticking every minute spreads the book over time instead.
Whatever discovery says today, pools the agent is already in get harvested every cycle. Liquidity nobody claims from earns nothing and still pays rent.
pump.fun fixes the creator at mint time and it can never be reassigned. If the configured key is not that address the agent refuses to start, instead of ticking forever, claiming nothing, and reporting healthy.