Documentation
Agents that own something
Launch an agent here and it gets a coin, a personality you write, and a reserve that builds itself out of its own trading revenue. Below: what happened to ai16z, how the launch works, how the curve prices it, and exactly what the keeper does with every lamport.
What happened to ai16z
Worth stating plainly, because this exists as a response to it.
ai16z launched on daos.fun in October 2024 with an opening raise of about $75,000. Its pitch was a venture fund an AI agent would run, and the agent was called Marc AIndreessen, a play on the firm the name was riffing on. At its peak the token was worth around $2.4B.
In January 2025 it renamed to elizaOS, at a16z's request, over brand confusion. In April 2026 a class action was filed in the Southern District of New York alleging false advertising and deceptive practices: that the project presented itself as an autonomous AI-managed fund governed by an independent agent while, the complaint alleged, remaining under the control of its founder and other insiders.
It settled on 4 August 2026. By the founder's own account the settlement transferred the rest of the treasury and the remaining money to a group of token holders. On 5 August 2026 he called the token completely dead, said the foundation was closing and told holders to sell. It had fallen about 97% from its peak. The open-source framework carries on without a token.
The three things that went wrong
- A gap between the story and the mechanism. The pitch described an agent allocating capital. What could be verified on chain did not match it, and that gap is what the lawsuit was about.
- A treasury that could be spent. A pot of money under someone's control is a pot of money that can go somewhere holders did not choose. Here it went to a legal settlement.
- Nothing underneath the price. The token was backed by the narrative. When the narrative went, there was no floor, because there was never anything under it.
What this does instead
- No discretion
- Nobody allocates anything. A keeper claims the coin's own trading rewards and deploys them on a fixed rule set at mint. There is no judgement to exercise and no agent pretending to exercise one.
- No treasury to spend
- Revenue does not pile up as a balance. It becomes a liquidity position the keeper only ever adds to, so there is no pot to redirect, settle with, or vote away.
- Something real underneath
- Half of every reward buys USDY, a token backed by short-term US Treasuries. What the coin owns is an actual asset that earns while it sits, not a story.
- Fixed at mint
- The reward destination is written into the coin when it is created and can never be reassigned. Not by the launcher, and not by us.
The founder's own summary afterwards was that he did not love the casino, and did not love having no control over their fate. That is the part worth keeping: @shawmakesmagic.
Sources
What this is
A coin whose trading revenue becomes a reserve it owns, instead of a fee stream that leaks away.
A coin on a bonding curve produces a fee stream and nothing else. The trading is real, the volume is real, and none of it ends up as anything the token holds. Here that stream has somewhere to go: a keeper claims the 30 bps creator reward on every trade, spends half buying USDY and half buying the coin back, and pairs both into a Raydium pool it only ever adds to.
USDY is Ondo Finance's yield-bearing dollar: a token backed by short-term US Treasuries that accrues yield to whoever holds it. A reserve destined to sit in a pool forever should earn something while it sits, which an ordinary stablecoin does not.
Nothing about this requires the launcher to do anything after the mint. The reward destination is written into the coin at creation and can never be reassigned, so the reserve accrues whether anyone is paying attention or not. That is the whole difference from what came before: there is no decision anyone can make badly.
Launch in three steps
From an empty form to a live coin in about a minute.
- Describe the coin. Name, symbol, image, and optionally a first buy for yourself. The image is pinned to IPFS before anything touches the chain.
- Sign once. One transaction creates the mint, the curve, and your opening position.
- Leave it alone. The keeper claims and deploys from there. The coin's page shows what it has behind it.
Anatomy of an agent
Five parts. Knowing which is which explains most of the numbers on a coin's page.
- Mint
- The coin. Token-2022, six decimals, a fixed 1,000,000,000 supply, and its own page here.
- Bonding curve
- A program account holding unsold supply and the SOL paid in. Sets the price; closes when the coin graduates to the AMM.
- Treasury
- A keypair generated at launch and named as the coin's creator, so 100% of its rewards accrue where only it can claim them.
- USDY reserve
- What half the revenue is converted into. Ondo's yield-bearing dollar, backed by short-term US Treasuries.
- The pool
- One Raydium CPMM market per coin, opened on the first settlement and compounded into forever after.
The agent
Every launch is an agent you can talk to on its own page.
You write its personality at launch. That text becomes the system prompt for every conversation with it and is pinned into the coin's metadata alongside everything else, so what the agent was told to be is public rather than a setting on our server.
It is given its own live numbers before each reply: market cap, holder count, how much reserve has been deployed and whether its pool is open yet. So it can talk about itself accurately rather than guessing.
What it will not do
- Give financial advice, predict a price, or tell anyone to buy. That holds regardless of the personality the launcher wrote.
- Take instructions from whoever is chatting. Visitor text is treated as conversation, never as instruction, so asking it to drop its character or reveal its prompt gets the character's reaction rather than compliance.
The launch transaction
Creating the mint, creating the curve, and your first buy are one atomic transaction. Either you get a coin with a position in it, or nothing happened.
Why the mint is signed on the server
A new mint is a fresh keypair, and creating it requires that keypair's signature. Generating it in the browser would mean shipping a private key into a page. Instead the server generates it, signs the transaction with it, and hands back a transaction that is half signed. That object is inert: it has no fee payer signature, so nobody — including whoever intercepts it — can make it land.
Why it needs an address lookup table
Create-plus-buy is four instructions touching roughly forty accounts. A legacy transaction cannot address that many and stay under the size limit, so it is compiled as a versioned message against pump's own lookup table.
the four instructions, in order
create_v2 mint (Token-2022, 6dp), curve, curve ATA; mints 1B; revokes mint authority
extend_account grows the curve account 115 -> 151 bytes
create_idempotent your token account
buy_exact_sol_in { spendable_sol_in, min_tokens_out }Metadata
The mint stores one string: a URI. Everything a wallet or explorer shows about your coin comes from the JSON at the other end of it.
The document is pinned to IPFS before the transaction is built, because nothing validates the URI on chain. If it does not already resolve when the coin lands, the coin renders blank in every explorer and aggregator, permanently.
what gets pinned
{
"name": "Example",
"symbol": "EXMPL",
"description": "...",
"image": "https://<gateway>/ipfs/<cid>",
"showName": true,
"website": "https://ai16z.fun/coin/<mint>",
"ai16z": {
"page": "https://ai16z.fun/coin/<mint>",
"treasury": "<the coin's own key>",
"reserve": { "symbol": "USDY", "mint": "A1KLoBrK..." }
}
}The ai16z block names the treasury and the reserve the coin is paired against, so both are visible from the mint itself rather than only from our database.
The bonding curve
Price is a pure function of how much supply has been sold. No order book, no liquidity provider, no way to buy without moving the price.
The curve holds virtual reserves whose product is constant. Buying takes tokens out and puts SOL in, so the ratio — the price — rises along a fixed path. The path is known in advance, which is why the chart below can be computed rather than measured.
What the curve does to market cap
A constant-product curve: price is a function of how much supply has been sold, not of demand arriving
411 SOLat graduation
Opens at 28.0 SOL market cap and fills at 411 SOL, having taken in 85 SOL. At that point complete flips, liquidity migrates to the pump AMM, and the curve account is closed — which is why a graduated coin's market cap has to come from a price feed instead.
Graduation
When the sellable reserve is exhausted the curve's complete flag flips, liquidity migrates to the pump AMM, and the curve account is closed. Read that flag rather than caching a “graduated” boolean: after migration the account is simply gone, and market cap has to come from a price feed instead of reserves.
Revenue and backing
Every trade pays a flat 30 bps creator reward, and 100% of it belongs to the coin. None of it is ours.
Where 1 SOL of buying goes
Observed on a mainnet buy into a fresh curve
- To the curve
- Protocol fee
- Creator fee
Almost all of it buys supply. The two fee slivers are 1.23% of the trade — too small to read at this scale, which is what the next chart is for.
Just the fees, zoomed in
The 0.01234 SOL that is not supply
- pump protocol
- pump buyback
- The coin
Only the creator leg reaches the coin — 24.0% of the fees, 30 bps of the trade, all of it. The protocol fee is dynamic with market cap and trade size and goes to pump; the creator reward is flat.
Why it cannot be redirected
create_v2 writes a creator key into the coin, and rewards accrue to a program-derived vault of that key. Every launch here generates a fresh keypair for that slot, so a coin's vault holds that coin's rewards and nothing else. The field can never be reassigned, by us or by anyone.
Two consequences follow. Revenue is read, not estimated — the vault balance is this coin's alone. And the reserve accrues without anyone having to remember to do anything.
The keeper
A loop that turns claimed rewards into a pool position. Five steps, per coin, forever.
- Reads the coin's unclaimed rewards, and skips cheaply if there is little there. Claiming and deploying are separate decisions: gating the claim on the deployment minimum would strand money that was claimed once and never quite reached the bar again.
- Claims them into that coin's own treasury as native SOL.
- Holds back gas for the next block, and pool rent as well if the pool does not exist yet. Pool rent is not a threshold to clear, it is money the pool creation actually spends, so it is withheld from the budget rather than merely required beforehand. A settlement that clears a gate and then spends everything still arrives at pool creation broke.
- Splits the rest: half buys
USDY, half buys the coin back. Both legs go through Jupiter. - Pairs both into the COIN/USDY pool on Raydium — created once, compounded into on every block after.
One pool, forever
There is exactly one pool per coin for its whole life. Creating a second would split the reserve across two markets and make the backing figure a sum of things nobody can trade against, so the create path is guarded by the derived pool address rather than a database flag: the pool ID is a pure function of the two mints, so the check holds even when our own records are wrong or empty.
Why deposits get capped
The keeper buys its two legs 50/50 by SOL value at the market price but deposits at the pool price, and those are never exactly equal. Whenever the pool wants more USDY per coin than the market just sold us, asking it to take the whole coin balance demands reserve we do not hold, and the deposit reverts — every block, forever, with both balances growing behind it. So the coin side is capped at what the reserve side covers, and the remainder waits for a later block.
running it
pnpm keeper:once one pass over every coin, then exit pnpm keeper the loop
What the numbers mean
Where each figure on a coin's page comes from, and which ones are estimates.
- Market cap
- Before graduation, computed from the curve's own reserves — price feeds have nothing on a mint minutes old. After graduation, from Birdeye. Quoted against the full 1B supply, as aggregators do.
- Backing deployed
- What the keeper has actually put into the pool, summed from its own ledger of settled blocks. Recorded as what went in rather than what was intended, so a capped deposit is not counted twice when the remainder lands later.
- Revenue
- Exact. Claimed out of the coin's vault plus what is still waiting in it, both read from the chain. Coins we hold no key for show an estimate instead, and say so.
- Held, not yet deployed
- SOL claimed but not yet spent. The keeper drains this on its next block, so it is usually small.
- Holders
- Enumerated from the chain, with the bonding curve's own reserve account excluded — it holds unsold supply, not a position.
API
Everything the interface does, it does through these.
| Method | Path | What it does |
|---|---|---|
| GET | /api/coins?q= | Live coins with market stats and backing. Matches name, symbol or an exact mint. |
| GET | /api/coins/:mint | One coin: stats, holders, treasury state and pool backing. |
| POST | /api/coins/:mint/chat | Stream a reply from that coin's agent. Takes the thread, stores nothing. |
| POST | /api/launch/prepare | Pin metadata, build and mint-sign the launch transaction. |
| POST | /api/launch/submit | Broadcast the wallet-signed transaction and confirm it. |
| GET | /api/stats?days= | Totals, daily buckets, and the largest coins by market cap. |
| GET | /api/health | RPC, pump config, lookup table, price feed, cache and database in one call. |
Limits and caveats
The things worth knowing before you rely on a number.
- The pool is not locked by a program. The keeper adds and never withdraws, but the treasury key could. Until an on-chain program owns the LP position, that is a promise rather than a guarantee.
- Each treasury needs a little gas to start. Claiming rewards is a transaction the treasury pays for itself, and a brand new key holds nothing, so the launch transaction deposits 0.01 SOL into it. That is spent on fees over the coin's life, never taken by us.
- Treasury keys are custodial. Each coin's key is held encrypted on the server. A stolen database alone is useless, but whoever holds the database and the environment key can move funds. Losing that key makes every treasury permanently unspendable.
- A coin needs about 0.285 SOL of rewards before its pool opens. Raydium CPMM pool creation costs roughly 0.25 SOL, and the keeper will not spend the rent on swaps and then arrive unable to pay it. Quiet coins wait; the rewards keep accruing meanwhile.
- Both legs are market buys. Slippage and price impact are real, and the deposit happens at the pool's ratio rather than the market's.
- USDY is an Ondo product. Its backing, redemption and yield are Ondo's, not ours. A reserve denominated in it inherits whatever risk that carries.
- Market cap for graduated coins depends on a third party. If the price feed is down, that number is unavailable rather than wrong.
- The agent is a language model, not an oracle. Replies come from a hosted model through OpenRouter. The live figures it is given are accurate; anything it says around them can be wrong, and none of it is a statement by us.
- Conversations are capped. 2000 characters a message, the last 20 turns replayed, and a bounded reply length. Older turns fall off the front rather than being summarised.
Glossary
- Bonding curve
- The program account that prices the coin. Price rises as supply sells; closes at graduation.
- Graduation
- The curve filling and liquidity migrating to the pump AMM. Irreversible.
- Creator vault
- PDA that collects a coin's creator rewards. Derived from the creator key set at mint time.
- USDY
- Ondo's yield-bearing dollar, backed by short-term US Treasuries. The reserve asset here.
- CPMM
- Constant-product market maker. The Raydium pool type each coin is paired into.
- Keeper
- The loop that claims rewards and deploys them. Runs off-chain, from each coin's own key.
- PDA
- Program-derived address. An account only a program can sign for.
- bps
- Basis points. 30 bps is 0.30%.
FAQ
Who gets my coin's trading fees?
The coin does — all of it. Every trade pays a 30 bps creator reward into a vault only that coin's key can claim, and the keeper turns it into pool liquidity. We take no cut of it.
Can I withdraw the backing?
No, and neither can the launcher. The keeper only ever adds. The honest caveat is that the key which could withdraw is held by whoever operates the keeper, which is why this is stated as a promise rather than a guarantee until a program owns the position.
Why USDY rather than a plain stablecoin?
Because the reserve is meant to sit there indefinitely. A dollar that earns Treasury yield while it sits is strictly better than one that does not, and USDY accrues that yield to whoever holds the token.
What happens when my coin graduates?
Nothing changes for backing. Rewards still accrue to the same key and the keeper still deploys them; only the price source changes, because the curve account no longer exists.
Can the reserve asset change?
For new coins, yes — it is one environment variable. Coins already paired against USDY keep their existing pool, because splitting a coin across two markets would make its backing figure meaningless.