How PLAYTEST works
PLAYTEST is a launchpad for pump.fun coins where every coin is paired with a browser game. The coin's creator fees fund an AI build agent that ships the game in versions. Holders decide what each version adds.
Launching
A launch is a single Solana transaction, the same shape pump.fun's own site sends:
create_v2creates the coin: a Token-2022 mint with on-chain metadata and a bonding curve.- The launcher's associated token account is created.
buyexecutes the launcher's opening buy against the new curve.
Because the buy sits in the same transaction as the create, nothing can trade between the coin existing and the launcher holding it, and either everything lands or nothing does. There is no bundle and no follow-up transaction.
The transaction is assembled on our server and signed in your wallet. The mint keypair is generated server-side and partially signs, since create_v2 requires the mint to sign its own initialization. The server issues a short-lived HMAC ticket bound to the mint and your wallet; the submit endpoint refuses any transaction that doesn't match it.
Metadata is pinned through pump.fun's IPFS endpoint. The coin's website field is set to its page here: https://playtestlab.fun/coin/<MINT>. Images are decoded and re-encoded to PNG before pinning, which strips EXIF data and rejects SVG.
Creator fees and the studio wallet
Every coin gets its own studio wallet: a fresh keypair made for that coin at launch and set as the coin's pump.fun creator. pump.fun pays the creator share of every trade into the studio wallet's creator vault, so each coin's fees are separate from every other coin's and traceable on chain. The studio wallet address is shown on each coin page.
Studio wallet secret keys are sealed with AES-256-GCM before they reach the database. The sealing key lives only in the server environment.
Every 10 minutes the collector runs for each coin. When the unclaimed balance is worth collecting it sends one transaction: sweep_creator_fee (moves fees that v3 trades leave on the curve into the vault, only when there are any), then collect_creator_fee for the pump vault and the PumpSwap vault once the coin has graduated. The amount booked is the studio wallet's actual balance change, priced in USD at collection time.
The build fund
| Fund | Collected fees (USD at collection) minus the compute every build has used, failed ones included. |
|---|---|
| Credits | Collected fees, priced in USD at collection, are converted to model credits. A coin's balance is its collected fees minus the compute its builds have used. |
| Failed build | Charged for the compute it used, like any other build. It doesn't ship. |
| Cadence | Every 10 minutes the tick collects fees, then starts one build for each coin with a positive balance and no build running. |
Collected SOL is converted to model credits that pay for the build agent's compute. Each build's actual compute cost is recorded alongside it.
How a build runs
Each build moves through four stages, written to the coin page as they happen:
| Planning | The agent reads the game brief, the version history and the most-backed request, and writes a short public plan. |
|---|---|
| Building | It writes the full game as one self-contained HTML document. Updates are given the previous version to edit, so games grow rather than restart. |
| Testing | Every inline script is compiled; the document must be complete, under 400 KB, make no network requests and load nothing from other sites. A failure goes back to the agent once with the error. |
| Live | The version is published with a changelog line. Every past version stays playable. |
The agent runs on Claude (claude-opus-5-5) with adaptive thinking. Builds that fail testing twice are marked failed and don't ship.
Requests and backing
- Any holder can post a request of up to 160 characters, or back an existing one.
- Both are signed messages (
signMessage), not transactions. They cost nothing and move nothing. - A request's weight is the sum of its backers' token balances, read from chain when each one signs. Backing again refreshes your weight.
- When a build starts, the open request with the most weight goes into it and is marked shipped in that version.
- Signed messages carry a timestamp and expire after five minutes, so they can't be replayed later.
How games run
Games are served from /play/<mint>/<version> with a Content-Security-Policy that blocks all network access (connect-src 'none', default-src 'none') and the CSP sandbox directive, and they're embedded in an iframe with sandbox="allow-scripts allow-pointer-lock". Without allow-same-origin a game has an opaque origin: it can't read this site's storage or cookies, open popups, navigate the page, or reach a wallet.
The house coin
PLAYTEST's own coin is paired with the house game shown on the front page. It was launched directly on pump.fun rather than through this site, so its creator is the team's dev wallet instead of a generated studio wallet. Its creator fees are claimed from that wallet and credited to the house game's fund, which builds the same way as every other coin's.
Questions
Do I need to hold the coin to play?
No. Every game is free to play. Holding lets you request and back changes.
Can the launcher change the idea later?
No. The brief is fixed at launch; holders steer from there through requests.
What happens after graduation?
Creator fees keep accruing from PumpSwap trades and the collector picks them up the same way.
Where's the code for a game?
Open any version at its /play URL and view source. It's one readable HTML file.