ai16z.fun

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.

1BrowserYou fill in the coinand who the agent is2preparePins metadata to IPFS,builds create_v2 (+ buy),signs as the mint3WalletYou sign as fee payer.The mint signaturesurvives untouched4submitVerifies the mint,broadcasts, confirms5SolanaCoin, curve and agentare livePOST /api/launch/preparePOST /api/launch/submitthe mint keypair never leaves the serverA row is written at step 2 aspendingand only flips to live at step 4 — abandoned attempts never surface as coins.
One transaction. The mint keypair is generated and signed server-side, so a half-signed transaction is all the browser ever holds — and it cannot pay its own fees.

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.

Buy: 1 SOLSplit by the pumpprogram, on chainBonding curve0.98765 SOL — buys supplyProtocol fee0.00938 SOL — 95 bps, dynamicCreator fee0.00296 SOL — 30 bps, flatThis coin's vaultA PDA of the coin's owntreasury key — holds thiscoin's rewards aloneInto the poolThe keeper claims it,converts it, and pairs itas liquidityFixed at mint time`creator` is written into the coin when create_v2 runs and cannever be changed. Each launch generates its own keypair forthat slot, so 100% of this coin's rewards are the coin's.Half of the protocol fee is a buyback; that leg is pump's,not ours. The platform takes no cut of the creator reward.
Where a 1 SOL buy goes. The creator reward is the coin's income; it accrues to a PDA derived from the creator key, and only a signature from that key can move it.

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.

MethodPathWhat it does
GET/api/coins?q=Live coins with market stats and backing. Matches name, symbol or an exact mint.
GET/api/coins/:mintOne coin: stats, holders, treasury state and pool backing.
POST/api/coins/:mint/chatStream a reply from that coin's agent. Takes the thread, stores nothing.
POST/api/launch/preparePin metadata, build and mint-sign the launch transaction.
POST/api/launch/submitBroadcast the wallet-signed transaction and confirm it.
GET/api/stats?days=Totals, daily buckets, and the largest coins by market cap.
GET/api/healthRPC, 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.