Launch a token
pnpm launch -- --handle someone --name "My Coin" --symbol MYC --buy 1
That is the whole product. Everything else exists to make that line safe.
What the flags do
| Flag | ||
|---|---|---|
--handle |
required | The Telegram handle the fees belong to. Without the @. |
--name |
required | Token name. |
--symbol |
required | Token symbol. |
--uri |
optional | Metadata URI. Defaults to a placeholder. |
--buy |
optional | SOL to buy at launch. 0 to skip. |
--json |
optional | Machine-readable output. |
What happens
- The vault is created and made rent-exempt. This must happen before
pump.fun references it, or the runtime rejects the launch with
InsufficientFundsForRent. - The token is created with the vault as
creator. - The optional launch buy runs. pump.fun v2 mints are Token-2022, so the
token program is read off the mint rather than assumed - passing the legacy
program fails inside the ATA program with
IncorrectProgramId. - The route is recorded so the recipient can see which token is paying them rather than an unexplained balance.
Afterwards
Fees accrue as the token trades, but they sit in pump.fun's own accounts until someone pushes them across into the vault. That call is permissionless - anyone can make it, the destination is fixed, and whoever pays the gas cannot redirect a lamport.
Tell the handle to claim at usehandle.xyz. They will see the token named on the page.
Anyone can point a token's fees at any handle. That is intentional and is stated on the dashboard: it is not an endorsement by the person named, and they can withdraw without endorsing anything.
Things that will bite you
The trading fee can only be set at creation. pump.fun allows 1 to 300 basis
points (up to 3%); Handle defaults to 1%. A token created without a rate comes
back with canEditCreatorFee: false and stays on pump.fun's default schedule
permanently -- there is no second chance at it.
(This was previously documented as impossible. It was, until pump.fun enabled
creatorFeeConfigurable on its Global account; scripts/src/fee-rules.ts
reads the live gate and the ceiling rather than trusting either claim.)
A handle with no Telegram username cannot be paid. Vaults are keyed to the username, not the numeric ID. Someone who has never set one has nothing to claim.
A tiny balance is not worth withdrawing. A claim costs 10,000 lamports. The terminal refuses to offer a withdrawal below that rather than making the recipient poorer - see Claim your fees.