Docs · Protocol
The vault agent
One signer that trades each vault on its venue under on-chain limits: selling slowly into strength, buying dips with what it sold, and paying backers back when the vault has grown.
What it does
The agent sells slowly into strength: the higher the multiple over cost and the more real buy volume, the more it may sell, sized so it doesn’t dent the chart, only at or above one band over the EMA and the vault’s average cost plus the band. Its own policy buys dips below the 15-minute high (by default at least 15%), in clips sized to the pool’s depth; the program puts no price limit on buys, only the per-window budget, price impact and the vault floor. Buys can lose quote (SOL, USDC or the stock) if the price keeps falling. All sell proceeds stay in the vault as quote.
Its budget for each vault is split between two strategies, each with its own ledger and P&L: a conservative one (the EMA-band strategy above) and an adaptive one that reads drawdown, liquidity and momentum. Weights start at 70% conservative and 30% adaptive; every 6 hours, if both traded enough to compare, they shift 5 points toward the one with the better measured risk-adjusted result (P&L against its deepest drawdown over the period), within 50–90% conservative and 10–50% adaptive. A better past period guarantees nothing about the next, and the on-chain limits below apply to both.
When the vault's liquid quote is 5× what it held at launch and the chart is strong, the agent may pay backers back (principal first, then 15% of the vault at most every 4h). Buying back dips always comes first.
The rules, on-chain
Limits are copied into each launch at creation (terms); the values below are today’s defaults from /api/platform. The program checks every one on the measured fill of each agent trade. Launches created before the per-window sell cap was dropped may still have one (their token page shows it); newer launches limit sells only by price impact per trade.
| Rule | Buy (agent_buy) | Sell (agent_sell) |
|---|---|---|
| Price vs EMA | No price limit | Spot ≥ EMA + band |
| Fill vs vault cost | No cost check | Fill ≥ vault average cost + band |
| Budget per window | Share of vault quote per window | Share of vault tokens per window, or none (see above) |
| Price impact | Capped | Capped |
| Vault floor | Vault quote stays ≥ the quote's floor (min_vault) | — |
| Rate | One agent trade per slot | One agent trade per slot |
| Pause | Refused while agents are paused | Refused while agents are paused |
| Proceeds | Paid from vault quote | Stay in the vault as quote |
| Payback (payout_backers) | Rule |
|---|---|
| Signer | Agent authority only |
| Vault quote | ≥ 5× initial_vault_quote (liquid quote; tokens don't count) |
| Chart | Strong: price above the EMA band, real buy flow, not in a drawdown (the agent's own check; the program enforces every other row) |
| Amount | The principal first, then 15% of vault quote |
| Frequency | At most one payout per 4h, the principal payout included |
| Floor | Never below the vault floor (min_vault) |
Which venue it trades
| Venue state | Agent trades |
|---|---|
| Trading on the curve | On the curve: LaunchLab, pump.fun or Meteora DBC (exact-in buys and sells) |
| Curve complete, waiting for the venue's migration | Refused (VenueMigrating) until the pool exists |
| Graduated (graduate recorded the pool) | On the graduated pool: Raydium CPMM, PumpSwap or Meteora DAMM v2 |
The EMA
The EMA is sampled by the program at every agent trade, before reserves change:
ema += (spot − ema) · dt / (dt + period) // dt = seconds since the last agent trade, clamped to the periodSpot is read from the venue’s reserves in the quote’s raw units. A single large trade moves the EMA only a little, so the EMA is a slow reference for where the agent may sell. It does not limit buys.
Who runs it
The agent is an off-chain service holding the platform’s agent authority key, the only key that can sign agent_buy, agent_sell and payout_backers. The trades themselves are signed on the venue by the launch’s own authority address, so there are no separate trading wallets: the vault buys and sells as itself. Every executed trade is a Trade event; ticks where it decides to do nothing aren’t logged on-chain. Its reasoning for each launch is public at /agents.