I ran the use.bsv.tools first-run path as a new BSV/BRC-100/Metanet developer on a real macOS machine, starting from a clean clone.
What I ran:
git clone https://github.com/p2ppsr/use.bsv.tools.git
cd use.bsv.tools/starter
npm install
npm test
npm run preflight
npm run dev
node ./bin/wallet-preflight.mjs --strict
What worked:
npm install completed cleanly with no vulnerabilities.
npm test passed.
npm run dev served the starter at http://127.0.0.1:7171.
- The three no-spend UI flows complete:
- Paid API returns an HTTP 402 challenge and mock receipt.
- Private Memory encrypts locally, stores ciphertext, lists it, and decrypts locally.
- Creation Proof hashes metadata, signs it with WebCrypto, and verifies the signature.
- Browser console had no errors in the starter UI.
Where the real-world first-builder path still breaks:
-
Real wallet readiness can dead-end even when a wallet is installed.
On this machine, Metanet Client.app was already listening on both expected ports, 127.0.0.1:3321 and 127.0.0.1:2121. The preflight correctly detected the listeners, but every status call timed out:
getVersion: timeout
isAuthenticated: timeout
getNetwork: timeout
- real wallet loop: skipped because status checks failed
- identity key: skipped because status checks failed
curl also connected to http://localhost:3321/getVersion and then received no response, so this was not just the starter UI. node ./bin/wallet-preflight.mjs --strict exited 1, which is correct for a production gate, but the new developer is left with no concrete recovery path.
Missing: exact instructions for what to do inside Metanet Client or BSV Desktop when ports are open but wallet API calls hang. The site needs screenshots or very explicit steps for origin approval, auth state, local API state, port ownership, app restart, and choosing one wallet when multiple wallet apps are installed.
-
The visible app result is still raw JSON, not a product-shaped success state.
The starter proves mechanics, but every success state is JSON.stringify(...) output. That is useful for maintainers but not a satisfying first BSV result. A new developer should finish with a visible receipt/proof/record they can point to, not a debug dump.
Suggested improvement: render each path as a real mini-product state:
- Paid API: show price, payment challenge, paid receipt, and where a real AuthFetch/payment middleware swap occurs.
- Private Memory: show stored record metadata, encrypted-vs-decrypted comparison, and whether the record is actually wallet-owned or only no-spend demo data.
- Creation Proof: show a shareable proof card with signer, timestamp, artifact hash, verification status, and the next hook for UHRP storage or paid unlock.
-
The no-spend flows can be mistaken for production primitives.
The README is honest that this is no-spend mock mode, but the app still needs stronger boundaries in the UI and in the generated prompts:
- Private Memory uses a static browser AES-GCM key derived from
use-bsv-tools-starter-no-spend-key. That is fine for a demo, but it is not wallet-owned user data.
- Creation Proof uses a throwaway browser P-256 key, not a BRC-100 wallet identity or a durable creator identity.
- Paid API pays by retrying with
x-bsv-mock-payment: paid, not through AuthFetch or actual payment middleware.
Missing: a hard “mock vs real” diff table for each flow with exact APIs/packages to swap in and acceptance checks for the real version.
-
Preflight is too slow and too raw for the first-run UI.
On this run:
npm test took roughly 56 seconds.
- CLI preflight took roughly 31 seconds.
- UI preflight stayed on “Checking local wallet ports and real BRC-100 crypto loop...” for more than 35 seconds, then eventually rendered a raw JSON object.
Suggested improvement: probe endpoints in parallel, show per-endpoint progress as rows, cap slow wallet probes more aggressively, and turn the final result into a diagnosis with next actions instead of dumping the full JSON by default.
-
The site needs a real ecosystem bridge after the starter.
The current path gives a good first local slice, but it does not yet connect the dots for a developer who wants to build a non-toy Metanet app. The next page should be an explicit upgrade ladder:
- BRC-100 wallet readiness and permissions
- real wallet-backed signing/encryption
- AuthFetch or payment middleware for low-value payments
- UHRP/NanoStore upload and retrieval for content-addressed storage
- Overlay topic manager + lookup service for shared/queryable state
- CARS/LARS or another deployment path
- app catalog / marketplace publication path
Each rung should include: package name, known-good repo/example, one command, expected output, failure modes, and how to verify from another machine.
-
Docs need to stay accessible from terminal/agents.
Several linked Project Babbage docs pages render as “You need to enable JavaScript” in basic fetch/search contexts. An aspiring developer using an AI agent or terminal-first workflow needs canonical markdown/raw docs, or the site should link directly to source-backed docs pages where possible. Otherwise the instruction “do not invent API methods” is hard to follow during real agent-assisted development.
-
Small starter packaging issue.
starter/package.json contains duplicate dependencies keys. npm tolerates it, but starters should avoid anything that makes a new developer wonder whether the example is carefully maintained.
What I think would make this site the right website:
- Keep the current starter. It is a useful first step.
- Make the first run end in a tangible artifact, not only diagnostics: a paid receipt, wallet-backed private record, or signed proof page.
- Make real-wallet failure recovery first-class. “Port open but API timeout” should have a concrete checklist.
- Add a production upgrade ladder from starter -> wallet-backed -> UHRP -> overlay -> deploy/publish.
- Keep every tutorial tied to a pass/fail command and a visible result a new developer can verify.
- Make the mock/real boundary impossible to miss.
The important framing: this should not merely feel like a toy. A first-builder path should answer, “What did I actually build, who controls it, where is it stored, what did it cost, can another machine verify it, and what exact step makes it production-real?”
I ran the
use.bsv.toolsfirst-run path as a new BSV/BRC-100/Metanet developer on a real macOS machine, starting from a clean clone.What I ran:
What worked:
npm installcompleted cleanly with no vulnerabilities.npm testpassed.npm run devserved the starter athttp://127.0.0.1:7171.Where the real-world first-builder path still breaks:
Real wallet readiness can dead-end even when a wallet is installed.
On this machine,
Metanet Client.appwas already listening on both expected ports,127.0.0.1:3321and127.0.0.1:2121. The preflight correctly detected the listeners, but every status call timed out:getVersion: timeoutisAuthenticated: timeoutgetNetwork: timeoutcurlalso connected tohttp://localhost:3321/getVersionand then received no response, so this was not just the starter UI.node ./bin/wallet-preflight.mjs --strictexited1, which is correct for a production gate, but the new developer is left with no concrete recovery path.Missing: exact instructions for what to do inside Metanet Client or BSV Desktop when ports are open but wallet API calls hang. The site needs screenshots or very explicit steps for origin approval, auth state, local API state, port ownership, app restart, and choosing one wallet when multiple wallet apps are installed.
The visible app result is still raw JSON, not a product-shaped success state.
The starter proves mechanics, but every success state is
JSON.stringify(...)output. That is useful for maintainers but not a satisfying first BSV result. A new developer should finish with a visible receipt/proof/record they can point to, not a debug dump.Suggested improvement: render each path as a real mini-product state:
The no-spend flows can be mistaken for production primitives.
The README is honest that this is no-spend mock mode, but the app still needs stronger boundaries in the UI and in the generated prompts:
use-bsv-tools-starter-no-spend-key. That is fine for a demo, but it is not wallet-owned user data.x-bsv-mock-payment: paid, not through AuthFetch or actual payment middleware.Missing: a hard “mock vs real” diff table for each flow with exact APIs/packages to swap in and acceptance checks for the real version.
Preflight is too slow and too raw for the first-run UI.
On this run:
npm testtook roughly 56 seconds.Suggested improvement: probe endpoints in parallel, show per-endpoint progress as rows, cap slow wallet probes more aggressively, and turn the final result into a diagnosis with next actions instead of dumping the full JSON by default.
The site needs a real ecosystem bridge after the starter.
The current path gives a good first local slice, but it does not yet connect the dots for a developer who wants to build a non-toy Metanet app. The next page should be an explicit upgrade ladder:
Each rung should include: package name, known-good repo/example, one command, expected output, failure modes, and how to verify from another machine.
Docs need to stay accessible from terminal/agents.
Several linked Project Babbage docs pages render as “You need to enable JavaScript” in basic fetch/search contexts. An aspiring developer using an AI agent or terminal-first workflow needs canonical markdown/raw docs, or the site should link directly to source-backed docs pages where possible. Otherwise the instruction “do not invent API methods” is hard to follow during real agent-assisted development.
Small starter packaging issue.
starter/package.jsoncontains duplicatedependencieskeys. npm tolerates it, but starters should avoid anything that makes a new developer wonder whether the example is carefully maintained.What I think would make this site the right website:
The important framing: this should not merely feel like a toy. A first-builder path should answer, “What did I actually build, who controls it, where is it stored, what did it cost, can another machine verify it, and what exact step makes it production-real?”