Create private, versioned HTML plans. Keep them hosted while they change, then publish them on Bitcoin when they should be permanent.
Open BitPlan · Read the docs · Install the CLI
Install the agent skill directly from its owning repository:
npx skills add opldotdev/bitplan.dev --skill bitplan -gThe repository also includes native plugin manifests for Claude Code, Codex, and Grok. Marketplace installations therefore load this canonical skill rather than a copied version maintained by another plugin.
BitPlan turns a self-contained HTML file into an encrypted plan. BRC-100 is the interface BitPlan uses to ask your wallet to encrypt and decrypt. Hosted drafts store only ciphertext on bitplan.dev and cost no BSV. When a plan is ready, the wallet can publish that ciphertext as a 1Sat Ordinal. Each on-chain version moves the same satoshi forward, giving the plan one permanent origin.
npx bitplan auth
bunx bitplan upload ./plan.html --hosted --linkThe command prints a reader link. Open it in a browser without connecting a wallet. Treat the complete link like a password: anyone who has it can read.
Publish the latest hosted version on chain when it is ready:
bunx bitplan inscribe ./plan.htmlnpx bitplan list
npx bitplan fetch <origin>
npx bitplan versionflowchart TD
Plan[HTML plan] --> CLI[BitPlan CLI]
CLI -->|Encrypt this plan| Wallet[BRC-100 wallet]
Wallet --> Hosted[Encrypted hosted draft]
Wallet -->|Sign and publish| Bitcoin[1Sat Ordinal]
Hosted --> Site[bitplan.dev]
Bitcoin --> OrdFS[OrdFS]
OrdFS --> Site[bitplan.dev]
Site --> WalletOrLink[Wallet or reader link]
WalletOrLink -->|Decrypt in the browser| Plaintext[Plan]
The CLI validates the HTML, then your wallet encrypts it. BitPlan either keeps the sealed envelope in hosted storage or loads it through OrdFS after an on-chain publish. Decryption happens in the browser.
Versions keep the same origin:
flowchart TD
V1[Version 1<br/>origin] --> V2[Version 2] --> V3[Latest]
Add one or more wallet identity public keys when publishing:
npx bitplan upload ./plan.html \
--share-with <identity-key>The document is encrypted once. Its document key is wrapped separately for the owner and each invited reader.
flowchart TD
Document[One encrypted document] --> Key[Document key]
Key --> Owner[Owner wallet]
Key --> ReaderA[Reader A identity key]
Key --> ReaderB[Reader B identity key]
| Path | Contents |
|---|---|
apps/web |
Next.js website, plan viewer, docs, and sponsorships |
packages/cli |
Published bitplan command-line package |
bun install --frozen-lockfile
bun run lint
bun run typecheck
bun test
bun run buildCompatibility tests open CLI-produced envelopes with the website implementation. Wallet and network boundaries use mocks, so the automated suite never publishes a transaction.
BitPlan prefers a BRC-100 wallet already installed by the user. A future 1Sat
CLI headless-wallet bridge is tracked separately; today's 1sat serve wallet
endpoint is a wallet-storage service and is not a BitPlan wallet endpoint.
Contributions are welcome. Start with CONTRIBUTING.md.
MIT · Third-party notices are listed in THIRD_PARTY_NOTICES.md.