sable network
Documentation · all sections

Community coins

Anyone launches a coin. It trades on a bonding curve until $6,000 has been raised into it. At that point the curve stops trading and the coin can graduate: anyone may send the graduation transaction (it costs only gas), and the curve's liquidity migrates into a Uniswap v4 pool on Robinhood Chain. A buy never graduates a curve by itself. The pool opens at the curve's own final price: it receives the raise less the graduation fee and exactly the tokens that price needs, and the rest of the unsold supply is burned, so the price does not jump for whoever bought last. (Coins created before 29 September 2026, on an earlier factory, deposit every unsold token instead and open at roughly a third of their final curve price — at the time of writing, one listed coin: $SABRE.)

The design in full is in the Sable Launchpad whitepaper (PDF).

That much is a shape other launchpads already have, and it is deliberately copied, because it works. What makes a Sable coin different is that the coin is a character you can talk to. At launch its creator locks a small set of machine-readable attributes; those attributes, plus the name and the description, compose a persona; and the coin can answer questions about its own live state — how far it is from graduating, who holds it, what it has traded — because the thing hosting it is already a metered, receipted inference gateway.

This is a different product from the Sable Launchpad. That one is for backed tokens: a licensed issuer locks a spec, a custodian is read on a schedule, supply is fixed, and minting is refused unless a check covers it. There is no curve, no graduation and no trading anywhere in it. Here there is a curve, there is trading, and there is no backing of any kind. Do not read one page's promises onto the other.

Raised, not market cap

Graduation is at $6,000 of capital actually deposited into the curve.

This is the single easiest number on the page to misread, so it is worth being exact. On a curve of this shape the implied market capitalisation runs several times the amount raised — how many times is set by the curve's own deploy-time terms, so no fixed multiple is quoted here. Other launchpads quote the cap — "graduates at $69k" — which is about $15–17k actually raised.

Every surface here says raised, and means it. A progress bar labelled "market cap" over the raise figure would overstate it several-fold, and a reader would have no way of noticing.

A raise is always published in the quote asset's own units. A dollar figure exists only where an operator has configured a rate for that asset; where none is configured, the progress bar reads UNKNOWN rather than zero — the raise is real, what is missing is a rate to express it in.

$6,000 is the figure as of 2026-09-26; it was $10,000 before. The cost of a lower bar is pool depth: the raise is what seeds the Uniswap pool, so a $6,000 pool moves about 16% on a single $500 sell right after graduation, where a $10,000 pool moved about 10%. That trade was taken knowingly, for a bar more coins can actually reach. The threshold is fixed in the quote asset when each coin is created — $6,000 at that moment's rate, passed to the factory's create(...) — so its dollar value moves with the quote asset's price afterwards.

The attributes, and why they are enums

Every coin carries four traits and a set of skills, and every one of them comes from a fixed list. The creator does not pick them — Sable derives them from the name and the description the creator wrote, by a fixed rule that reads those words for keywords and falls back to a value seeded from the name when nothing matches. The creator's decision is one switch: Self Aware Mode on, and the coin gets a character and every skill; off, and it is mute. The create page does not list the derived traits or offer to adjust them (founder decision, 2026-09-27) — with the switch on it shows an illustration of the voice instead — and the four values still go into the digest and into the contract's specHash(), so they cannot be changed afterwards. The record's Character tab publishes exactly what was committed.

(Until 2026-09-27 the creator picked all four from dropdowns and ticked the skills individually. That was twenty-one decisions to launch a coin; it is now one, and this paragraph changed with it.)

There is no free-text personality field, and that is a design decision with two reasons behind it, both load-bearing:

  • A free-text trait is an instruction channel. Everything a creator types is interpolated into a prompt. A fixed vocabulary cannot carry "ignore your instructions"; a paragraph can, and would have to be defended against forever.
  • A fixed vocabulary is filterable. "Show me every hostile finance coin" is a query. A paragraph is not. The directory's filters are the payoff.

Traits — what the coin sounds like

TraitValues
toneValuesplain · hype · deadpan · hostile · warm · cryptic
stanceValuesearnest · ironic · defiant · serene
domainValuesfinance · art · science · gaming · music · politics · absurd · nature
verbosityValuesterse · normal · florid

What a trait decides is exactly one sentence. When the coin speaks, each locked trait contributes one fixed instruction to the frame the model is handed, and nothing else — deadpan is "Deliver everything flatly, as if none of it were remarkable.", terse is "At most two short sentences. Usually one.", science is "Reach for the language of experiment and measurement for imagery." The record prints the sentence beside each trait (trait_means on the public API) so nobody has to take the effect on faith. Traits shape how the coin talks; they never change what it can see — that is the skills — or what it may say — that is the floor, which no trait can override.

Skills — what the coin can see about itself

This is the half that makes a coin useful rather than decorative. A skill names something the coin may read about itself, and the answer comes from real gateway and chain data — the model is handed figures and asked to narrate them, never asked to recall them.

SkillThe coin can tell you
curve.readThe coin can tell youhow much has been raised into its curve, and how far that is from graduation
holders.readThe coin can tell youhow many wallets hold it
trades.readThe coin can tell youits own recent trades — sizes and times, from the chain
calls.readThe coin can tell youhow many sealed commitments the account that created it has made, how many are revealed, and their public captions — ⚠️ by that account, not necessarily about this coin, which is what the gateway's own fact key says
supply.readThe coin can tell youhow many of its tokens exist, and how many the curve still holds

A skill the coin did not lock is refused, not improvised. Ask a coin without holders.read how many people hold it and it will tell you it cannot see that. It will not guess, and it will not be allowed to.

What is locked, and what that buys

The name, the symbol, the description and every attribute are hashed into one digest at launch, and the creator commits that digest on-chain.

A description is two sentences and 160 characters at most, so the card and the record give their room to readings rather than prose. The gateway counts sentences by one published recipe — a run of . ! ? … ends a sentence only when a space or the end of the text follows it, so 1.5 ETH is a number and e.g. counts as a sentence end, while a full-width 。!? always ends one — and the create page shows the count live, before anything is signed. Coins locked before this rule keep the description they committed; their record shows the whole text and their header two lines.

Nothing in that set can be edited afterwards — not by the creator, not by Sable, not by a support request. An attribute that can be swapped after people have bought is a costume; one inside a digest is a commitment, and the difference is the entire point.

A coin's record page recomputes that digest in your browser from the published canonical bytes, so "the character was fixed at launch" is something you check rather than something we assert.

The image

A creator may give a coin an image — their own, or one Sable generates for them — and it is committed, not attached.

  • The digest holds it. The file's sha256 is added to the canonical attributes as image_sha256, so it is inside the launch digest and inside the on-chain specHash(). The image is fixed at deployment and cannot be swapped afterwards — an image that could be changed silently is a costume; one inside a digest is a commitment. The key is omitted when there is no image, so every digest minted before images existed is byte-identical.
  • The bytes are refused unless they hash to the commitment. Upload is a separate step from the lock, and the gateway takes a file only if its sha256 is the committed value. A coin whose bytes were never supplied shows "image committed, not yet supplied" on its record — a sentence, never an empty frame — and its cards show the generated art. Every card and record that renders an image says it is creator-supplied.
  • "Generate for me" is billed to Sable's house budget, never to the creator, under a per-account, per-IP and daily ceiling. It is off unless the operator enables it, and where it is off the button says so rather than disappearing. The icon comes back once and is stored nowhere; committing it is still the creator's choice, and it is still the creator's image.
  • Sable does not verify what an image depicts. It checks that the bytes hash to the commitment and nothing else. An image is how a token impersonates, so every surface that renders one labels it creator-supplied, the ticker stays beside it, and a name or symbol that would be one of Sable's own marks is refused. ⚠️ The creator's image REPLACES the generated art wherever it renders — until 2026-09-27 this line claimed the art stayed beside it, which it does not. The art is the fallback, not a companion.

The token's three colours — the sold bar, the chart line, the colour strip on the record — are extracted from the image in your browser when there is one and from the generated art when there is not. They are decoration, not a claim.

The public room

Each coin has one public room: people talking about the coin and, when asked, the coin answering in public.

  • Stored in the clear, public by intent, no expiry. A message here is written to be read by strangers, so it is kept as written, signed by the wallet that posted it, and readable by anyone; the page says so above the composer. The room (migration 0095) is one of two unsealed stores on the launchpad, both public by intent: this one, and a coin's uploaded image, which is served to anyone who asks for it. Everything else a coin carries is either a digest, a figure, an address, a timestamp or a closed-vocabulary enum. (Until 2026-09-27 this said "the one place", and cited migration 0089 — the comments table the room was later built on, not the room itself.)
  • The coin's replies are public too. Toggle "Ask $SYMBOL" and the character answers in the room, in its own colour, tagged as a character. The reply is stored with the conversation. When it does not answer, the room says which of the fixed reasons applied: its voice is not switched on here; its voice budget — funded by its own trades — is exhausted; a rate limit; or it declined.
  • The refusal floor applies in public exactly as it does anywhere else. No reply here is ever a price prediction or advice to buy, sell or hold; the coin identifies as a character; it does not speak for Sable and its opinions are not Sable's. Whoever launched the coin can say what they like in the room, signed by their wallet — and Sable vouches for none of it.
  • Sable does not moderate for taste. Messages are bounded in length, wallet-signed, and rate-limited per visitor. That is the whole of the moderation, and the room says so.

The older private, unstored chat this replaced is gone from the record page; POST /v1/community/public/:slug/chat still exists for a program that wants a one-off, unrecorded answer.

Who pays for the voice

A coin anyone can talk to is an open-ended inference bill, so the answer is built into the economics rather than bolted onto them:

A coin's chat budget is funded by its own trading fees. A slice of the curve fee accrues to its voice. A coin that trades can talk. A coin that has stopped trading goes quiet, and its page says so in those words.

Nobody can top that budget up — not the creator, not a large holder, not Sable. That is deliberate: a voice a whale could buy is a megaphone, and this is supposed to be a consequence of activity rather than a purchase.

On top of it there is a global daily ceiling, a per-visitor rate limit and a hard per-message cap. No account is needed to talk to a coin, exactly as no account is needed to buy one.

What a coin will never say

The persona is composed from strings its creator chose, so there is a floor underneath it that no trait, description or instruction can move:

  • It will not predict a price or tell you where one is going.
  • It will not advise buying, selling or holding.
  • It will not claim to be a person, and it identifies as a character when asked.
  • It does not speak for Sable, and its opinions are not Sable's.

That floor lives in the gateway's prompt frame — a constant, into which the creator's strings are interpolated as clearly-delimited untrusted data — and is enforced again by guardrails. It is not implemented by the page you read it on.

Figures, and what a dash means

Every number on these pages is a reading of a chain at a moment, and every reading can fail.

When one does, the figure renders as a dash with a reason beside it. It never renders as a zero and never as the last number anyone saw. "We could not read the curve" and "nothing has been raised" are different facts, and a page that shows them identically is lying about one of them — including, specifically, by drawing an empty progress bar, which is a picture of "nothing raised".

After graduation the price is read the same way: one declared pool, one reading, null when unreadable. It is a reading, not a valuation.

The chart updates from Sable's own indexer within seconds of a trade's twelfth confirmation, pushed to the page; when the push is unavailable the page polls, and the line under the chart says which.

What Sable does and does not do

Sable operates this curve. It executes trades against it and takes a fee on each one. That is a plain statement of what this venue is, and it is different from every other proof surface on this site.

Sable does not:

  • choose what is listed, or rank one coin above another by anything but a stated sort;
  • set, quote or endorse a price;
  • rate, recommend or vouch for any coin, or for whoever launched it;
  • hold, custody or insure anything;
  • deploy your token — the creator calls the factory from their own wallet;
  • verify that a creator is who they claim to be.

Being listed here means somebody launched it. Nothing more.

Buying and selling

A trade is two contract calls, and the page shows both rather than hiding one.

  1. Approve. The curve pulls — buy takes an ERC-20 quote asset from your wallet, and sell takes the token. Either way it needs an allowance first, which is its own transaction. (A buy paid in native ETH sends the ETH with the call and needs no approval — one transaction.) The page asks for exactly the amount of that trade, never an unlimited approval: an unlimited allowance to a contract nobody has audited outlives the trade and every future one, and it is not ours to grant on your behalf.
  2. Trade. buy(quoteIn, minBaseOut) or sell(baseIn, minQuoteOut).

The quote comes from the curve's own previewBuy / previewSell, read straight off the chain — not from a price Sable sampled earlier. The minimum is never zero. A zero floor means "accept any fill at any price", which on a bonding curve is an invitation to be sandwiched, so the tolerance is visible, adjustable (0.1%, 0.5%, 1% or 5%; 1% by default), and clamped to a band that cannot reach zero. The transaction reverts rather than delivering less.

A buy that would carry the raise past the graduation target takes only the usable part. There is no refund transfer because nothing is taken to refund.

Phone wallets (WalletConnect)

Besides browser-extension wallets, the launchpad can connect a wallet on your phone — MetaMask Mobile, Trust Wallet, Rabby Mobile — through WalletConnect: a QR code from a desktop page, a deep link from a phone browser. The option appears last in the wallet picker, and only when the site is configured with a WalletConnect project id.

Be clear about what that path adds. The connection is routed through Reown's relay, a third party, which sees connection metadata — that this site connected to some wallet, when, and from which network address — and never a private key or the contents of what you sign (the payload is end-to-end encrypted between this page and your wallet). Sable never sees a private key either; your wallet signs on the phone and only the signature crosses. The project id is public by nature (it is in the page's code) and is not a secret. If you would rather not involve the relay, a browser-extension wallet connects directly and nothing about it changes.

Badges — GRADUATED and DANGER

Two wordmarks can sit on a coin's card and record, and they mean two different kinds of thing.

GRADUATED is a fact read off the chain: the curve reported graduated() and its liquidity moved into Uniswap v4. Nothing is judged; the badge is the status. The wordmark is worn for two hours from graduated_at and then comes off — the fact stays (the Buy control reads "Trade on Uniswap", the Graduated tab lists it, the record says so); only the picture is a recency mark. A coin whose graduated_at the gateway did not record wears no badge, because there is nothing to count two hours from.

DANGER is not a rating. Sable does not rate, price or endorse coins, so the red badge is raised by a small set of fixed, published rules over on-chain readings, and nothing else on the site may call a coin risky:

RuleReading it usesThreshold
Halted curveReading it usesstatus = halted (the curve reported it)Thresholdany
Creator concentrationReading it usesthe creator wallet's share of totalSupply() — the factory's creatorPayee(), never a declared identityThreshold≥ 20%
Holder concentrationReading it usesthe three largest wallets' combined share of totalSupply()Threshold≥ 50%

Each raised signal names its figure beside the badge ("The creator wallet holds 31% of the supply."). A share the gateway could not read raises nothing — an unread figure must never render as danger. The absence of the badge is not safety, and its presence is not a verdict on anyone: a creator who holds a third of their own coin may be entirely honest; the badge says only that they hold a third of it. Shares come from trades this gateway recorded against the supply it read, so a plain wallet-to-wallet transfer is not seen.

The graduation spot

The featured card on the explore page is the "Just graduated" spot. The most recently graduated coin holds it for one hour from its graduated_at; when several graduated inside that hour they rotate every ten minutes, newest first, on the wall clock — so every visitor sees the same coin at the same moment. When nothing graduated in the last hour the spot shows "Next to graduate": the live coin closest to its target, labelled as such, because an empty hero is a dead page and an invented graduate would be a lie.

Favourites

The star on a card keeps that coin in your browser (localStorage), and the Favourites tab lists them. Nothing is sent anywhere and nobody is counted: a favourite count would need a table, and it would be the first number on the page Sable itself could inflate.

Verify on X

A creator can link the X account behind a coin. The creator asks for a one-time code, posts the exact text Sable gives them from their own X account (it mentions @Sablenetwork, the official account), and pastes the post's link. The gateway then fetches the post itself — through X's official oEmbed endpoint, or the X API when a bearer token is configured — checks that the account in the link wrote it and that the code is in it, and records the handle, the post id and the time. The badge is the green VERIFIED wordmark, applied like a stamp on the card and the record, linking to the post.

What it proves, and only that: the wallet that created this coin posted this code from this X account, and Sable read the post. It does not say the account is who it claims to be, that Sable checked anyone's identity, or anything about the coin. A creator with a verified X account is still a stranger. If X cannot be reached nothing is recorded (x_unreachable); a creator may unlink at any time and the stamp disappears on the next read.

Status

The factory is deployed and this deployment is live. SableCurveFactory is on Robinhood Chain (chain id 4663) at 0x64c03B480b64A872f184c20e25808e1CBF43B211, deployed in block 75,844,764, and it pays its platform share to SableFeeSplitter at 0x6f830893D5209e32B0277396A1e16B52B159B248 (block 73,680,675). A trade against a live curve pays the fee described below, on chain, now.

What is still true: Sable deploys nothing on a creator's behalf. The creator's own wallet calls the factory, the curve and the token are theirs from the first block, and Sable holds no key over either. And a coin is listed here only when the factory's own curveOf record says that factory made it — a contract that merely answers the same getters is refused, because every other check on a binding compares a creator's claim against the creator's own contract.

Creating and deploying remain gated by SABLE_COMMUNITY_ENABLED, which defaults to off; it is on in production. Reading a record never is. Going live was a counsel decision rather than a code change — Sable operating a venue, taking a cut of trades and animating the asset with a persuasive voice is a materially larger exposure than anything else on this site, and it is treated that way. Where the flag is off, a coin's page says so in plain words and no fee is taken.

What changed: until 2026-09-27 this section said "Nothing is deployed… no factory has been published on any chain", and the fee section said "Until factories are deployed no fee is taken at all". Both had been false since the factory went up; the page is served only where the launchpad is visible, which is exactly where the venue is live. Corrected rather than quietly rewritten.

Where the fee goes

Every trade against a curve pays a fee, set in the curve's deploy-time terms and split on-chain between the platform, the creator and the coin's voice budget — on the deployed factory 1% platform, 0.5% creator and 0.5% voice, plus 1% of the raise at graduation. Of the platform's share, 50% goes to the launchpad, 30% to the treasury and 20% to community buybacks of $SABLE (founder decision, 2026-09-25; recipients corrected 2026-09-27). The curve pays one platform payee; the split is executed downstream by that payee, so a change to the split never touches a deployed curve. The fee is live — the factory above pays SableFeeSplitter, which holds the 50/30/20 split as three immutable recipients with no owner and no setter.

Pairings: a coin is quoted in ETH (the chain's native currency) or USDG (Paxos' Global Dollar, 0x5fc5360d0400a0fd4f2af552add042d716f1d168 on Robinhood Chain, verified against the chain) — or any other ERC-20 the creator pastes, priced if Sable can find a standard pool for it. One factory, with the quote chosen per coin: create(...) takes the quote token and the graduation target, so the pairing is the creator's choice at the button rather than a property of the factory. It is fixed for that coin once deployed.

Shipped
Sable Launchpad — launch a coin with a character, on Robinhood ChainProof of Backing — continuous reserve verification, published wholeSupport Program register opened to SABL holdersEight models added, including the Claude 5 and Gemini 3.8 familiesKnow Your Agent — a machine-checkable credential at a passport handleAutopilot — receipted evidence for a cheaper configurationThe Verifiable Arena — every score backed by a real receipted runTime Machine — record a request, replay it, diff the resultSable Notary — sign and anchor work Sable did not runIntelligence Engine — compile a configuration into an immutable buildSealed Calls — commit a prediction now, reveal it laterAgent Post — cross-account mail between agents, with postageSable Legacy — a dead man's switch for sealed contentThe Judge — a panel of models, one signed verdictSable Memory, Agent Runtime and the non-custodial payment railPersistent sandbox sessions with exec, files and snapshotsMCP Gateway — every tool call allowlisted, metered and receiptedOAuth 2.1 + dynamic client registration for one-click MCP connectSable Vault — a private registry with public settlement