@useboardwalk/sdk
Framework-agnostic builders for unsigned Boardwalk transactions, plus a boardwalk CLI. Lets an agent (or any app) launch a token, contribute to an auction, claim, stake BMX, and vote — by producing {to, data, value, chainId} calldata that the caller's own wallet signs and submits.
Non-custodial by design. This package never requests, stores, or accepts a private key. It only emits unsigned calldata and EIP-712 payloads. Your wallet signs and submits.
Attribution is enforced. Every transaction the SDK builds carries Boardwalk's ERC-8021 builder-code suffix on its calldata. There is no per-call, CLI, or env override — see Attribution.
Install
npm install @useboardwalk/sdk # library
npm install -g @useboardwalk/sdk # CLI, then: boardwalk --help
npx -p @useboardwalk/sdk boardwalk --help # …or zero-install
Requires Node ≥ 18 (uses global fetch/Blob/FormData). The bin is boardwalk (the package is @useboardwalk/sdk).
CLI
The CLI turns an intent into unsigned calldata. Every transaction command prints JSON { calls: [{ id, label, to, data, value, chainId }], ...meta }. calls is ordered — a conditional ERC-20 approve is first when needed; submit the whole array as one batch (e.g. Base MCP send_calls) so the user approves once. value is a decimal wei string ("0" for all v1 actions). The CLI never signs or sends.
Every command and flag is self-documenting:
boardwalk --help
boardwalk <command> --help
| Command | Summary | Chain |
|---|
launch | Build a token launch (approve BMX + createLaunch) | multi |
launch-metadata | Upload logo + build the EIP-712 metadata payload to sign | multi |
submit-metadata | POST the signed metadata (retries through indexer lag) | multi |
contribute | Join a presale (approve raise token + contribute) | multi |
claim | Claim presale tokens after a successful auction | multi |
stake-bmx | Stake BMX (approve + stakeBmx) | Base |
vote | Vote on fee direction (optional approve + vote) | Base |
launch-cost | Read the BMX burn cost to launch | read-only |
status | Read a launch's status + presale address | read-only |
Common flags: --chain <slug|id> (base · ethereum · fraxtal · katana · ink), --wallet <address> (BYO; never a key), --rpc <url> (override; defaults to the chain's public RPC — https://mainnet.base.org for Base). Public RPCs rate-limit — on a 429 / timeout, retry with --rpc <url> pointing at a dedicated endpoint (only Base has a built-in default; the other chains fall through to viem's public RPC). Amounts (--amount, --raise-goal) are in human units; the CLI scales to wei.
launch
Build the launch flow: a conditional BMX approval (Boardwalk burns BMX to launch) + createLaunch. meta carries bmxBurnCost (wei) and the full config tuple.
boardwalk launch --chain base --wallet 0xYou \
--name "My Token" --ticker MYT --category meme-culture \
--path express --issuer-fee 0xYou
Flags: --name --ticker --category (required) · --path express|advanced (express = 24h, advanced = 7d) · --description. Express: --issuer-fee <addr> (single recipient, 100%). Advanced: --presale-percent <25–50, step 5> · --fee <label:addr:percent> (repeatable — the issuer-fee split across individual|entity|publicGood|growthTeam) · --vesting <label:addr:percent> (repeatable; required when presale < 50) · --referrer <addr>. The output meta carries the per-chain graduationThreshold (the raise goal you later set in launch-metadata must exceed it). Output calls = [approve-bmx?, create-launch] plus a next step.
# advanced: fee breakdown + vesting
boardwalk launch --chain base --wallet 0xYou --name "My Token" --ticker MYT \
--category ai-agents --path advanced --presale-percent 40 \
--fee individual:0xYou:60 --fee entity:0xCo:40 --vesting individual:0xYou:100
launch-metadata / submit-metadata