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.
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.
| Flag | What it does |
|---|---|
<dir> | The built site folder. |
--name x | The 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 100 | Fee rate in sats per kB. Default 100. |
--relative | Rewrites root-absolute links (like /app.css) to relative ones, so they work on ORDFS. |
--max-tx-mb 9.5 | The largest transaction, in MB. A file bigger than this can't be published. |
--broadcast | Broadcasts 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
| Command | What it does |
|---|---|
b0-x login | Sign in with bWalletX (BRC-100). |
b0-x logout | Forget the local session. |
b0-x link [--vercel|--github] | Link this folder to a Vercel project or GitHub repo. |
b0-x deploy | Build 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 versions | List 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.