# Your own launchpad on aeX402 — founder guide

A **pad** is a white-label launchpad at its own address, `https://<slug>.aex402.com`.
You create and style it from the aeX402 Telegram bot. Nothing is deployed for you:
the pad is live as soon as it is created, and every change is a message.

## Create one

```
/pad new <slug>
```

- `<slug>`: 1–32 characters of `a-z`, `0-9` and `-`, not starting or ending with `-`.
  It becomes your hostname, so it cannot be changed later.
- One account can own up to 25 pads.
- Your bot wallet is set as the pad's referral wallet, so launches and trades made
  through the pad are attributed to you.

`/pad` lists your pads. `/pad show <slug>` shows everything that is set.

## Two layouts

| layout | what visitors get |
|---|---|
| `page` (default) | a fast, script-free page listing launches |
| `app` | the **full launchpad** — launch, swap, liquidity, staking — under your name and colours |

```
/pad set <slug> layout app
```

`app` puts a wallet-connected trading interface on your address, so it is opt-in.

## Style it

```
/pad set <slug> <field> <value>
```

| field | value | notes |
|---|---|---|
| `headline` | text, up to 80 characters | your launchpad's name; shown in the header, title and social previews |
| `subhead` | text, up to 160 characters | tagline / description |
| `accent` | `#rrggbb` | must be readable on your background; an unreadable colour is refused |
| `bg` | `dark` or `light` | switching can reset an accent that becomes unreadable; the bot tells you |

A new pad starts in aeX402's own look: a white page, black text and headings, and
JetBrains Mono, the same as aex402.com. Set `accent` and `bg` and the pad is yours;
buttons take your accent, with whichever of black or white text reads on it.
| `layout` | `page` or `app` | see above |
| `x`, `telegram`, `discord`, `github` | an `https://` URL | shown on both layouts |
| `web` | an `https://` URL | page layout only; the full launchpad has no website slot |

To remove a link, set it to nothing: `/pad set <slug> telegram`

A value the bot cannot use is **refused and nothing changes**: the reply says why
and shows the value that is still set.

## App layout only: choose what is offered

```
/pad set <slug> feature <name> on|off
/pad set <slug> chains sol,rh        (or: chains all)
/pad set <slug> frame top|sidebar    (or: frame, to follow the site)
```

**frame** is how the page is arranged, and it is yours to pick:

| frame | what visitors see |
|---|---|
| `top` | one row across the top — logo, Create, the links — over a grid of coin cards |
| `sidebar` | a column of links down the left, each with a line of description, content beside it |

`/pad set <slug> frame` with nothing after it clears your choice, and the pad follows
whatever aeX402's own site uses. Your colours, name and links are unaffected either way.

| feature | off means |
|---|---|
| `launchpad` | no "Create" page |
| `protocol` | closes the liquidity, N-pools, farming, fees, governance, protocol and tokenomics pages, and also Swap, Lock and Contest whatever their own setting |
| `swap` | no Swap page, and no swap panel on pool pages (pools show "Open", not "Trade") |
| `staking` | no Lock page |
| `competitiveFarming` | no Contest page |

`vesting`, `comments` and `points` cannot be switched: holders must always be able
to claim vested tokens, and the other two do not exist yet. The bot says so if you
try.

Chains: `sol` (Solana), `rh` (Robinhood Chain), `arc`. Anything else is dropped,
and the reply says what was kept. A chain you leave out is not served at all: even a
direct link to one of its pools shows "This site does not offer <chain>."

## Launch a token from your pad

```
/pad launch <slug> <0xYourAddress> <TICKER> <Name>
```

The bot builds an **unsigned** transaction for you to sign from your own wallet;
it never signs for you. The launch is added to your pad's listing.

## What your pad lists

By default a pad lists **only the launches made on it**: from `/pad launch`, or from
the "Create" page on your pad's own address. Every other coin on the protocol stays
off your pad.

```
/pad set <slug> listing all     list every launch on the protocol
/pad set <slug> listing pad     only launches made on this pad (the default)
```

`/pad show <slug>` says which one is set. The pad a launch came from is written into
the launch's on-chain id, so this needs no sign-up and cannot be faked by editing a
list. Two limits: listings cover Robinhood Chain launches (the only chain with a launch
feed today), and launches made before 2026-09-18 carry no pad and appear only under
`listing all`.

## Taking a pad offline

```
/pad suspend <slug> [reason]
/pad unsuspend <slug>
```

A suspended pad answers "gone" (HTTP 410).

## How fast changes appear

Changes are cached at the edge. Expect about **30 seconds** before a change shows,
and up to about **90 seconds** in other regions. Suspending and un-suspending take
the same time. If a page looks unchanged right after an edit, wait a minute
before editing again.

Measured 2026-09-17 on a live pad: an accent change was served **41 seconds**
after the command, and the change back **38 seconds** after that one. No deploy
happens for an edit — the page is rendered per request from your settings.

## Your own copy of the site

Every pad can get its own copy of the launchpad, which you change over time by
describing what you want. It is built and deployed separately from everyone
else's, and your domain points at your copy.

    /pad fork <slug>                  make your copy (a few minutes), then run it again to switch your pad onto it
    /pad fork <slug> off              go back to the shared site; your copy is kept
    /pad vibe <slug> <what to change> an agent edits your copy and builds a preview
    /pad vibe <slug> ship             publish the preview to your live pad
    /pad vibe <slug> undo             drop the last change

Trading code is locked: swaps, buys, sells, launches and wallet signing are
the same reviewed code on every copy, and a change that touches them is
refused. You can change layout, pages, copy, colours, images and add pages
under `/pad/`.

With a copy, `/pad domain <slug> yourdomain.com` attaches `www.yourdomain.com`
to your copy and tells you the CNAME to add; send the bare domain to `www` with
a URL redirect at your registrar.

A build takes about a minute or two. Changes go to a preview first; `ship` makes them live.

## Not available yet

- Uploading a logo.
- Image upload on the launchpad's "Create" page (paste an image URL instead).

## Your own domain

Claim it on the pad, then point DNS at it:

    /pad domain <slug> yourdomain.com     claim it
    /pad domain <slug> clear              release it

Then at your registrar, an ALIAS/ANAME record on the apex (or a CNAME on a
subdomain) to `<slug>.aex402.com`.

**One step is ours, and until it is done your domain answers Cloudflare error
1001 no matter how the DNS is set:** the hostname also has to be attached to the
account that serves the pads. Claiming it with `/pad domain` records the request;
ask us to finish it. `/pad show <slug>` reports the state (`pending_dns` until
then). A `.aex402.com` name is refused — you already have one by slug.

### Working today, while that step is pending: a redirect

A redirect gets visitors from your domain to your pad right now, with nothing
needed from us. At your registrar:

1. Remove the ALIAS/ANAME/CNAME record on that host. A redirect on the same host
   conflicts with it.
2. Add a URL redirect (Namecheap calls it "URL Redirect Record"; others say "URL
   forwarding") from your domain to `https://<slug>.aex402.com`, type
   **permanent (301)**. Add a second one for `www` if you use it.
3. Try both `http://yourdomain.com` and `https://yourdomain.com`. **Namecheap's
   URL Redirect does not serve HTTPS** (measured 2026-09-18: `http://` answered 301
   from `namecheap-nginx`, `https://` timed out). Browsers try `https://` first,
   so visitors see "site can't be reached" even though the redirect works.

   For a redirect that also works over HTTPS, use Cloudflare's free plan on your
   own account: add your domain there (this changes its nameservers at the
   registrar), then create a **Redirect Rule** sending all requests to
   `https://<slug>.aex402.com`. Cloudflare issues the certificate for your domain,
   so both `http://` and `https://` redirect. **When our step is done and you want
   your domain to serve the pad directly, tell us whether it is still on your own
   Cloudflare account:** a domain that is active in another Cloudflare account
   takes a different setup on our side (Cloudflare calls it "Orange-to-Orange"),
   so it matters which way you go.

**What visitors see: the address bar changes to `<slug>.aex402.com`.** A redirect
sends the browser to a new address, so your domain does not stay on screen. If
it has to stay on screen, the redirect is not the answer; only the step above
does that.

**Masked or framed forwarding does not work.** Registrar options called "masked
redirect", "URL frame" or "stealth forwarding" keep your domain in the address bar
by showing the launchpad inside a frame. The launchpad refuses to be framed
(`X-Frame-Options: DENY`), so a masked forward shows an empty page. That is on
purpose: a wallet interface inside someone else's frame is how clickjacking works.

When we tell you our step is done, **run `/pad domain <slug> yourdomain.com`
again**: the attach happens when that command runs, and a claim made earlier is
not retried on its own. The reply should say `pending_cert`. Then swap the
redirect back for the ALIAS/CNAME, and once the certificate is issued your domain
serves the launchpad directly with its own name in the address bar.
