Early accessb0-x is in development. Deploys aren’t open yet; the sites gallery and the on-chain gateway are live. Examples are labelled.

Docs

Draft docs.

How b0-x is meant to work, written down early so developers can tell us what's wrong with it. The publisher at the top works today. The b0-x commands below it don't exist yet.

Publisher · works today b0-x CLI · draft, not implemented

Publishing today Works today

This is the publisher we use now. It's in the b0-x site's repo (tools/publish) and publishes a built static folder on chain: each file an inscription, plus an ORDFS directory. The gateway then serves it at b0-x.com/s/<name>/.

$ pnpm publish-site <dir> [--name x] [--owner <pubkey>] [--source <domain>]
    [--fee 100] [--relative] [--max-tx-mb 9.5] [--broadcast]

It's a dry run by default. It lists every file and its size, flags links that would break on ORDFS, and prints the fee. Nothing is broadcast.

FlagWhat it does
<dir>The built site folder.
--name xThe name in the gateway. Defaults to the folder name, without a trailing -site.
--owner <pubkey>The owner's identity public key (66 hex characters). New names only.
--source <domain>The site's own domain, recorded with the name.
--fee 100Fee rate in sats per kB. Default 100.
--relativeRewrites root-absolute links (like /app.css) to relative ones, so they work on ORDFS.
--max-tx-mb 9.5The largest transaction, in MB. A file bigger than this can't be published.
--broadcastBroadcasts the plan saved by the dry run, then records the new version in the gateway and points the name at it. Owner only: it signs with b0-x's publishing key.

Try it without the CLI: New project checks a folder in your browser the same way.

Getting started Sketch

You need bWalletX (web, Chrome extension or phone app) or another BRC-100 wallet, and a project whose build produces static files.

1. Sign in

$ npx b0-x login
→ Open bWalletX to approve sign-in for b0-x.com
✓ signed in as 03a1…9f2c

The CLI asks your wallet to sign a one-off challenge. No password, no API token to copy around.

2. Deploy

$ cd my-site
$ npx b0-x deploy            # builds and checks the output

Off-chain hosting and preview URLs are planned, not built. We haven't chosen the storage service.

3. Publish and name (optional)

$ npx b0-x publish           # inscribe this build as the next version
$ npx b0-x names point my-site latest

CLI reference Sketch

CommandWhat it does
b0-x loginSign in with bWalletX (BRC-100).
b0-x logoutForget the local session.
b0-x link [--vercel|--github]Link this folder to a Vercel project or GitHub repo.
b0-x deployBuild the static output and check it.
b0-x publish [--dry-run]Inscribe the current build as a new version. --dry-run prints files, sizes and cost without writing.
b0-x versionsList on-chain versions with their manifest outpoints.
b0-x names point <name> <version>Point an OpNS name you own at a version.

b0x.json Sketch

Optional. Without it, b0-x guesses from your framework.

{
  "name": "my-docs",
  "build": { "command": "pnpm build", "output": "out" },
  "publish": {
    "include": ["**/*"],
    "exclude": ["**/*.map", "drafts/**"],
    "maxSizeKB": 10000,
    "confirm": true
  },
  "name_service": { "opns": "my-docs", "follow": "latest" }
}

exclude matters most: anything published is permanent. Source maps, drafts and environment files should never be included, and .env* is always excluded whatever you set.

Limits

  • Static output only. API routes, serverless functions and databases stay on their current host.
  • Single-page apps need a fallback route; the config for that isn't designed yet.
  • A file too big for one transaction can't be published. Off-chain hosting for heavy media is planned, not built.