Documentation · v1.2

Launch on Pons — the full manual.

Everything you need to launch a coin from a single tweet, watch its lifecycle, and collect the fees it earns. This document is authoritative — if anything in the app disagrees with what's written here, this page wins.

Last updated · todayProtocol v1.2X API v2

Overview

Launch on Pons is a bridge between X (Twitter) and the Pons launch protocol. It watches for a specific mention pattern, verifies the poster owns the account, pulls the attached image as the coin's logo, and submits the coin through Pons. The X account that posted the launch tweet becomes the sole fee recipient for that coin's lifetime.

The bridge is stateless in the sense that it doesn't hold your keys or your tokens. The only thing it stores is the mapping between an X account and the coins it launched, plus the metadata needed to render this site. Everything else lives on-chain or on X.

One tweet
Post it. That's the whole submit action.
Launcher-only fees
Only the posting X handle can claim.
No custody
Pons never holds your keys or tokens.

Quickstart

  1. Follow @launchpons on X (optional, helps deliverability).
  2. Compose a tweet using the format below. Attach one square image.
  3. Post. Within about 30 seconds the bot replies with a status link.
  4. Come to the status page and paste your tweet URL if you'd rather watch it here.
  5. Once live, connect X on the Fees page to claim earnings.

The tweet format

The launch command is a single tweet. The format is fixed:

@launchpons $TICKER Token Name

Attach exactly one image. That image becomes the coin's logo.

Example: @launchpons $PONSY Ponsy the friendly frog with a square PNG attached.

Optional flags can be appended at the end of the tweet, each prefixed with a colon. Unknown flags are ignored silently.

FlagEffect
:supply=1BSets total supply. Defaults to 1,000,000,000.
:fee=1.25Sets creator fee in percent (0–5).
:buyback=0.5Portion routed to the buyback vault.
:lp=lockedLocks LP for 12 months. Default is locked.
:desc=...Short description. Everything after the equals until the next flag.

Parser rules

  • Detects the @launchpons mention anywhere in the tweet, case-insensitive.
  • Reads the first $TICKER token in the tweet body.
  • Treats the text between the ticker and the first flag (or end of tweet) as the token name. Trimmed, collapsed whitespace.
  • Normalizes the ticker: uppercased, no $ duplicates, no whitespace, 2–10 characters, ASCII letters and digits only.
  • Rejects tickers that collide with a reserved list (ETH, WETH, USDC, USDT, DAI, BTC, WBTC, RBH, PONS).
  • Rejects tweets missing a ticker, name, or image.
  • Skips tweets already processed for the same account and tweet id (idempotent).
  • Retries are handled by the bot up to 3 times over 5 minutes for transient X read failures.

Image handling

  • Only the first image attached to the launch tweet is used.
  • PNG, JPG, or WEBP. Recommended: 512×512 square, under 2 MB.
  • Transparent PNGs are preserved end-to-end.
  • If X image detection is unreliable (rare — usually on video or GIF tweets), Pons looks for an image in a connected reply from the same account within a 5-minute window.
  • Images are hashed and stored server-side, then re-served through Pons's CDN. Original tweet media URLs are not required to keep working.
  • Duplicate logo hashes on the same handle are allowed. Duplicate hashes across different handles trigger manual review to prevent impersonation.

Status lifecycle

Every launch moves through the same six stages. We only advance a stage when the underlying event actually happens — nothing is faked or extrapolated.

  1. Tweet detected — the streaming filter matched.
  2. Details validated — ticker, name, and flags parsed cleanly.
  3. Logo received — image downloaded and stored.
  4. Submitted — the mint call was sent to Pons.
  5. Confirmed — the transaction is finalized on-chain.
  6. Live — the coin is tradeable and indexed.

A stage stalled for more than 10 minutes is marked failed and the bot replies with the reason. Failed launches can be re-attempted with a new tweet.

Try the status page →

Fees & payouts

Every trade on a Pons-launched coin pays a swap fee. That fee splits three ways, and the split is set by the launcher on the Fees page.

BucketDefaultRangeRecipient
Creator1.00%0 – 5%Original launcher (X handle)
Buyback0.50%0 – 5%Token buyback vault
Referral0.25%0 – 5%Referring handles
Protocol0.30%fixedPons protocol treasury

Protocol fee is paid by the router, not deducted from the launcher's share. Launchers keep 100% of their configured creator cut.

  • Fee changes take effect on the next block after saving.
  • Fees accrue per-trade and settle on claim.
  • There is no vesting, no lockup, and no minimum claim window.

Claiming fees

Only the X account that posted the launch tweet can claim that coin's fees. Ownership is proven through X's OAuth handshake — Pons requests read-only identity scope, verifies the returned handle matches the launcher on record, and only then unlocks the claim button.

  1. Open the Fees page.
  2. Click Connect X and complete OAuth.
  3. Set a payout wallet (optional — defaults to the launch wallet).
  4. Click Claim. Claims settle in under a minute.

Enabling auto-claim triggers a claim automatically once pending crosses 0.01 ETH. Gas for auto-claims is covered by Pons.

Error responses

When something is missing or malformed, the bot replies to your tweet with a short, specific message:

  • MISSING_TICKER — “Add a ticker using $TICKER.”
  • MISSING_NAME — “Add the token name after your ticker.”
  • MISSING_IMAGE — “Attach one image to use as the token logo.”
  • TICKER_RESERVED — “That ticker is reserved. Try another.”
  • TICKER_TAKEN — “That ticker has been used in the last 30 days.”
  • IMAGE_TOO_LARGE — “Logo must be under 2 MB.”
  • ALREADY_PROCESSED — “This launch request has already been processed.”
  • RATE_LIMITED — “Slow down — you can launch again in a few minutes.”

Rate limits

  • 1 successful launch per X handle per 10 minutes.
  • 5 launches per handle per 24 hours.
  • Failed launches don't count toward either limit.
  • Fee claim endpoint: 60 requests per minute per authenticated handle.
  • Public read endpoints (this site's launches feed): 300 requests per minute per IP.

Sustained abuse triggers a temporary handle block and a note in the bot's reply. If you think you were rate-limited by mistake, DM @launchpons.

Security & custody

  • No key custody. Pons never asks for your seed phrase or private key. Fee claims go to a wallet you set.
  • OAuth read-only. The X connection uses X's OAuth 2.0 with only the users.read and tweet.read scopes. Pons cannot post from your account.
  • Signed payouts. Every claim transaction is signed on-chain from a program-derived address that only the verified launcher can trigger.
  • Impersonation defense. Handle changes on X invalidate pending claim sessions. Duplicate logos across handles trigger review.
  • Auditability. The mint transaction, launcher handle, and fee configuration for every coin are queryable through the Pons API.

X integration

The bridge uses X API v2 with two subsystems:

  • Filtered stream — a persistent connection with a single rule matching @launchpons mentions. New tweets are handed to the parser within seconds.
  • User lookup — resolves the poster's handle and verified status. Used to link the launch to a canonical X user id, so handle renames don't break claims.
  • OAuth 2.0 PKCE — powers the Connect X flow on the Fees page.

If X API access is not configured in this deployment, the site continues to work as a composer and history browser, but no new launches will be indexed until credentials are added.

Pons API

All coin creation goes through Pons's public launch endpoint. Launch on Pons only ever calls two methods:

POST /v1/launches
  { ticker, name, logo_url, supply, fees, launcher_handle }

GET  /v1/launches/:mint
  → { status, contract_address, tx_signature, pons_url }

Response objects for GET are mirrored into the local database so the launches feed and status page can serve without hammering the upstream.

Glossary

Launcher
The X account that posted the original launch tweet. The sole fee recipient.
Bps
Basis points. 100 bps = 1%. Fee sliders use bps under the hood.
Mint
The unique contract address of a coin on Pons.
Buyback vault
A program-owned account that periodically buys and burns the coin using accumulated fees.
Pons URL
The canonical trading page for a launched coin.
LP
Liquidity pool. Pons launches lock LP for 12 months by default.

FAQ

Do I need an account here?+
No. Launches are attributed to whichever X account posted the tweet. You only sign in on the Fees page, and only to claim.
Can I launch from a reply?+
The command tweet itself must contain the format. Logos can be added in a connected reply if X strips the original image, but the ticker and name have to be in the launch tweet.
What if I change my X handle?+
Your launches stay tied to your X user id, not the handle string. Reconnect on the Fees page and claims will resume under the new handle.
Can somebody else claim my fees if they impersonate me?+
No. Claims require OAuth from the exact X user id that posted the launch tweet. Buying a similar-looking handle does not grant claim rights.
Can I delete a launch?+
No. Launches are on-chain. You can update social metadata around the token through the usual Pons flow.
Is there a public API?+
A read-only launches API is on the roadmap. The Pons endpoints above are already public.
What blockchain does Pons run on?+
The Robinhood Chain — Robinhood's Ethereum Layer 2. Fees settle in ETH by default; wrapped payouts are on the roadmap.
Who pays gas for claims?+
Manual claims: you. Auto-claims: Pons.

Changelog

  • v1.2 — Fees page, live-editable splits, auto-claim toggle.
  • v1.1 — Optional flags (:supply, :fee, :desc), reserved-ticker list.
  • v1.0 — Public launch. Streaming parser, status lifecycle, launches feed.