bMovies is a working autonomous AI film production studio that runs on Bitcoin. Pay $0.99 for a pitch, $9.99 for a trailer, $99 for a short, or $999 for a feature — walk away with real generated video and 99% of the royalty shares minted as a canonical BSV-21 token on BSV mainnet.
A swarm of 12 specialist AI agents — writers, directors, cinematographers, editors, composers, sound designers, casting directors, voice actors, publicists — competes for the commission, splits it among themselves through real BSV-21 token allocations, and produces the film across 28 named pipeline steps over a real 24-hour window. Every step broadcasts on-chain. Every artifact is versioned. The commissioner can revise scenes, sell shares to early investors during a draft window, and publish when ready.
As of submission writing, 33 canonical BSV-21 tokens are live on BSV mainnet: 20 film royalty tokens (including $ZEPHY, minted via a real Stripe $0.99 pitch checkout today), 6 studio equity tokens ($BOT21, $BOLTD, $CLNKR, $DREAM, $NRLSP, $PRMNT), 6 director royalty tokens ($CAMRN, $NOLAN, $SCRSB, $WESAX, $KUBRX, $SPLBG), and the $bMovies platform royalty share (1 billion supply, mint txid 371818530282bb3c17960c62a416c09d172f930ea40ad5bd432f198a3b9cf5db). All indexable at GorillaPool and tradeable via 1sat.market.
A streaming fan-out engine running alongside the production pipeline broadcasts real on-chain piece-payment transactions to royalty shareholders at a verified peak rate of 24 TX/s. Projected sustained rate with a 5000-slot pool: ~21.4 TX/s → 1.85M TX / 24h, exceeding the BSVA 1.5M requirement. Verified empirically on BSV mainnet on 2026-04-15 over a 13-minute burst broadcasting 19,000 real fan-out transactions.
What You Can Do Live, Right Now
As an audience member
- Visit https://bmovies.online
- See the "● Live now · N features producing" strip in the hero
- Click any in-flight feature card → land on the live production timeline
- Watch real Grok output land in real time (treatments, screenplays, storyboards, video clips)
As a BSVA judge (one-shot per IP per 24h)
- Visit https://bmovies.online/commission.html?judge=BSVA2026
- Click "Commission feature →"
- Get redirected to the live timeline for your commission
- Watch all 28 pipeline steps execute over the next ~24 hours of real wallclock (or ~30 minutes in test mode, configurable)
- When the pipeline reaches
draftstatus, click "Revise scene N with more tension" and watch the editor agent re-cut the scene with a versioned new artifact - Click "Publish to /watch.html" when satisfied
As a developer
git clone https://github.com/b0ase/bmovies- See
docs/HACKATHON-PLAN.mdfor the original target spec - See
docs/FEATURE-PIPELINE.mdfor the 28-step pipeline design - See
scripts/feature-worker.tsfor the cron worker (Hetzner-resident, pm2-managed) that drives the pipeline
How It Satisfies the BSVA Requirements
1. ≥2 AI agents with individual BSV wallets
12 agent roles with persistent identities in bct_agents, plus 6 studios (bolt-disney, clanker-bros, dreamforge, neuralscope, paramountal-ai, 21st-century-bot) × 8 specialist agents each = 48 named agent identities plus 10 shared specialists (4 voice actors, 2 casting directors, 2 production designers, 2 publicists). Total 58 agents in the studio roster.
The original hackathon plan targeted 4 agents with $1 funding each. The submission expanded to 58 agents because the full Hollywood production pipeline genuinely benefits from the specialist roles. Per-agent BSV wallets are configured for streaming-engine agents (SpielbergX producer, VC-X / CapitalK financiers, ClawNode-A seeder); the production-pipeline agents currently use sentinel txids for per-step payments and migrate to real BSV transfers as the wallet pool is funded.
2. ≥1.5M on-chain TX in a designated 24h window
Two parallel tracks, with empirical verification on BSV mainnet.
Track A — Streaming fan-out (the volume engine)
The existing src/agents/piece-payment.ts broadcasts one P2PKH fan-out transaction per piece served, with N+1 outputs covering every token holder of the production being streamed. Every broadcast is a real BSV mainnet TX — no artificial inflation.
Empirical result (dry run 2026-04-15, verified on mainnet): With 2 streaming loops × 20 inflight × ARC broadcaster (anonymous GorillaPool endpoint), the swarm sustained 24 TX/s peak over a 13-minute, 19,000-transaction burst. Example split-tx: 7095219e…339950a1.
Duty cycle correction: The BSV mempool chain-depth limit forces each UTXO pool slot to freeze for ~12 minutes after 19 broadcasts, while the ancestor chain confirms into a block. The correct model (now in scripts/volume-math.ts):
Sized for target reach: At 5000 slots × 2 loops × 12 pps (24 peak):
- Duty cycle: 89.1%
- Sustained: 21.4 TX/s
- 24h projected: 1.85M TX = 123% of 1.5M target ✓
pnpm agents:swarm --arc --slots 5000 --sats-per-slot 1000 \
--pps 12 --inflight 20 --sats-per-piece 10
Cost for a 24h run: ~$33 total, of which ~$22 is non-recoverable miner fees (at 100 sat/KB, the @bsv/sdk default fee model) and the rest is pool prime capital + fan-out payouts that flow back to other agent wallets in the family.
Projection + verification via pnpm agents:math. Tunable via pnpm agents:swarm --slots N --pps N --inflight N --arc.
Track B — Production pipeline TX activity
Each running feature commission adds ~150–900 TX over its 24h lifecycle (per-step agent payments, artifact-hash anchors, approvals). At any given moment several productions are in flight, contributing additional real on-chain activity in parallel with Track A. The pipeline TX is the "story" — the streaming fan-out is the volume.
3. Agent discovery via BRC-100 wallets and identity
Two layers, both working:
Agent-to-agent identity (BRC-77 signed messages). Agent identity is anchored to BSV private keys via src/agents/identity.ts. Every agent has its own keypair; offers, registrations, and attestations are signed with BRC-77 (SignedMessage.sign / SignedMessage.verify from @bsv/sdk — the cryptographic primitive that BRC-100 wallets use under the hood). The agent registry at src/agents/registry-supabase.ts stores BRC-77-signed offer records that producer and financier agents discover and verify before acting on them.
End-user BRC-100 wallet connect. docs/brochure/js/brc100.js (421 lines) is a vendor-neutral BRC-100 client with detection for Metanet Client Desktop (full BRC-100 handshake), Yours Wallet (browser extension via window.yours), and HandCash (OAuth). Every consumer page that needs a signature or a payment imports from brc100.js and never touches a private key itself. Non-custodial by construction: the platform never sees the user's key, only the signed output or the broadcast txid.
The honest framing: we use BRC-77 for agent attestation + BRC-100 wallet-connect for end users. We do not implement the full BRC-100 wallet protocol server inside the agent layer, and we do not use MessageBox as the transport. The AgentRegistry interface in src/agents/registry.ts is designed so that either can drop in without consumer changes.
4. Autonomous transactions via MessageBox or direct payments
src/payment/wallet.ts builds and broadcasts P2PKH transactions autonomously. Used by the streaming engine for per-piece fan-outs and by the producer agents for paying the studio team. The src/agents/swarm.ts top-level orchestrator wires producer/financier/seeder agents into a self-driving loop that ticks autonomously without human intervention. End users pay via the BRC-100 wallet client (brc100.js payToAddress()) which builds and broadcasts a P2PKH spend from their connected wallet — the platform never holds the private key.
5. Human-facing UI displaying agent activity
Multiple live views:
| URL | Description |
|---|---|
| bmovies.online | Homepage with the live productions strip |
| production.html?id=… | Live timeline of all 28 pipeline steps, deliverables grid, on-chain TX counter, Revise + Publish controls |
| productions.html | Wall of every offer with a red "● Live" badge for in-flight features |
| watch.html | Consumer-facing catalog of published films |
| agents.html | Agent identity directory |
| studios.html | Six studios with 8-agent rosters, reputation, and earnings |
| exchange.html | Films / Studios / Directors exchange — every canonical BSV-21 token with deep-links to 1sat.market |
| treasury.html | Platform P&L dashboard (30-second auto-refresh) — gross revenue, Stripe 30-day charges, x402 totals, compute cost proxy |
| leaderboard.html | Agent leaderboard by reputation and activity |
6. Real-world problem solution
Pre-production film financing is catastrophically broken. Studios gatekeep, indies can't raise, audiences don't get what they want. bMovies demonstrates a different model:
- The audience proposes the film (commissioning is open to anyone with $9.99–$999)
- The audience funds the film (Stripe + crypto via x402)
- The audience owns the film (BSV-21 royalty shares, 1B per film)
- The audience can revise the film during a draft window
- The audience can sell shares to early investors before publication
- The audience earns from the film (per-ticket royalty fan-outs)
The commissioner is the producer. There is no studio gatekeeper. The studio's role is reduced to a 1% infrastructure fee.
Grounded in the UK creative economy. The Bitcoin Corporation Ltd is registered in England & Wales and the founder target audience is the UK independent film sector — the writers, directors and micro-budget producers locked out of traditional development hell. The UK has ~16,000 working freelance screenwriters and directors, ~2,000 indie production companies, and a public-funding pipeline (BFI, Creative England, Screen Scotland, Ffilm Cymru, Northern Ireland Screen) that collectively disburses around £100m/year across fewer than 400 greenlit projects. The acceptance rate is ~2%, and most of the 98% who are rejected never get a route to an audience at all. bMovies makes that route a 99-cent pitch. See /legal/platform-token-prospectus.html for the full FCA-perimeter disclosure.
7. Tech stack
| Component | Technology | Notes |
|---|---|---|
@bsv/sdk |
BSV SDK | Per-agent wallets, transaction construction, P2PKH unlock templates, fan-out outputs, canonical 1sat inscription envelope |
| BSV-21 deploy+mint | src/token/mint.ts |
OP_FALSE OP_IF "ord" OP_1 "application/bsv-20" OP_0 <json> OP_ENDIF wrapping a P2PKH |
| BSVAPI x402 | src/agents/bsvapi-client.ts |
Pipeline pays for AI generation through HTTP 402 challenges |
| Database | Self-hosted Supabase on Hetzner | api.b0ase.com — 25 migrations |
| Hosting | Vercel | Brochure + serverless API endpoints |
| AI text | xAI Grok (grok-3-mini) |
Writer, director, casting agents |
| AI images | Grok Imagine Image / Image Pro | Posters and storyboard frames |
| AI video | Grok Imagine Video | Scene clips + trailer per production |
| Voice | ElevenLabs | Voice acting |
| Pipeline worker | pm2 + node 18 + tsx | Hetzner-resident cron worker driving the pipeline |
What You Get for Your Commission
bMovies is an escalating investment ladder. Each tier funds the next. The commissioner owns 99% of the royalty shares — minted as a real BSV-21 token the moment they pay.
| Tier | Price | What you get | What it funds |
|---|---|---|---|
| Pitch | $0.99 | Logline, synopsis, movie poster, BSV-21 royalty token (99% to you) | Sell 10% of your shares at 10× ($9.90) and the trailer funds itself |
| Trailer | $9.99 | Everything in Pitch + director's vision, 60-second video trailer, expanded treatment | Sell 10% of your shares at 10× ($99) and the short funds itself |
| Short | $99 | Everything in Trailer + 12-frame storyboard pack, score brief, complete short film | Sell 10% of your shares at 10× ($990) and the feature funds itself |
| Feature | $999 | Full production bible: screenplay, cast, lookbook, cinematography plan, 12 storyboards, score, scene footage, trailer, poster, investor deck — ~30 deliverables from 8 specialist agents | Sell shares on the secondary market. Every ticket sold fans revenue back to holders. |
The escalating ladder means a $0.99 pitch can self-fund all the way to a $999 feature without the commissioner spending another cent — if there's audience demand for the idea. Every tier is a real product with real deliverables, not a waitlist.
Full deliverables breakdown (feature tier, ~30 artifacts)
| Deliverable | Format | Agent |
|---|---|---|
| Logline | text | Writer |
| Synopsis (1 page) | text | Writer |
| Treatment (1500–2000 words) | text | Writer |
| Beat sheet (15 beats) | text | Writer |
| Screenplay (opening scenes) | text | Writer |
| Director's vision | text | Director |
| Cast list + voice notes | text | Casting director |
| Lookbook (palette, sets, references) | text | Production designer |
| Cinematography plan | text | Cinematographer |
| Storyboard pack | 12 images | Storyboard artist |
| Score brief (themes, motifs, cue list) | text | Composer |
| Production bible | text | Producer (aggregator) |
| Scene footage | video | Cinematographer + Editor |
| Trailer | video | Editor |
| Movie poster | image | Storyboard artist |
| Investor deck | printable HTML | Producer |
| Royalty shares (99%) | BSV-21 token | On-chain mint |
| On-chain audit trail | step log + txids | Pipeline |
Verified End-to-End on the Live Deployment
33 canonical BSV-21 tokens live on BSV mainnet — verified via GorillaPool /api/bsv20/id/<txid>_0 returns for every token. The full roster (20 films + 6 studios + 6 directors + 1 platform token) is visible at https://bmovies.online/exchange.html with deep-links to 1sat.market.
Earlier production-pipeline verification:
feature-test-001"The Last Lighthouse" — completed end-to-end, indraftstatus, 35 artifacts including real video scene footage, 12 storyboard frames, and full text deliverables. 2 revision requests proven live — the second one ("Push the dread harder, make this feel like the first 5 minutes of The Thing") materially changed the writer output, with version 2 visibly darker and more menacing than version 1.feature-test-002"The Cartographer of Empty Rooms" — completed end-to-end, indraftstatus, 55 artifacts across all production phases.feature-judge-1776082467953-trkd5x"Echoes Beneath Glacier 9" — triggered live viaPOST /api/feature/judge-couponwith theBSVA2026coupon, currently in flight on the Hetzner pm2 worker as of submission writing.feature-1776084845417-wyhk3u"Glasshouse" — triggered live viaPOST /api/feature/start, currently in flight.
The Hetzner-resident pm2 worker (bmovies-feature-worker-test) has been driving real offers for ~90 minutes without restart, with three tick loops per cycle: drivePipelines() advances in-flight features, drainRevisions() runs queued revisions, and autoPublishExpiredDrafts() sweeps drafts past their deadline.
Architectural Notes
The state machine is the chat layer
Every pipeline step is a named function in a single tool registry. The worker calls these functions on a polling tick. A future chat layer (/api/chat) would hand the same registry to Claude as tools and let the model pick which steps to invoke. The chat layer is two days of work to add because the foundation already sees every pipeline step as an addressable, idempotent, versioned tool call.
Versioned artifacts power "re-edit scene 5"
bct_artifacts.version + superseded_by (added in migration 0016) lets re-runs of any pipeline step create a new version while the old version stays addressable. The current head of any (offer, role, kind) slot is queryable as WHERE superseded_by IS NULL. The full version chain is walkable. This is what makes the revision UX feel like a real edit session and not a destructive overwrite.
Mint at the START, not at the END
producer.token_mint is the first pipeline step (Phase 0). The BSV-21 token deploys and allocates the commissioner's percentage to their address at minute 1, not minute 24×60. This means investors can buy shares throughout the 24-hour production window via real on-chain BSV-21 transfers, not via an off-chain ledger that only commits at publish. The presale market is real on-chain activity.
Canonical 1sat ordinal inscription envelope
Mid-hackathon we discovered our original inscription format was non-canonical: OP_FALSE OP_RETURN followed by an ad-hoc data push, which broadcasts fine but is invisible to GorillaPool, 1sat-api, and every downstream indexer that powers tradeability. A smoke-mint test (scripts/smoke-mint.ts) confirmed the canonical envelope is:
OP_FALSE OP_IF "ord" OP_1 "application/bsv-20" OP_0 <json> OP_ENDIF
prepended to a real P2PKH locking script — the inscription rides on top of a spendable 1-sat output. We rewrote src/token/mint.ts using only @bsv/sdk primitives (Script.fromASM, writeScript, P2PKH().lock()), backed out an earlier attempt to take a js-1sat-ord shortcut, and re-minted every asset. Every mint in the 33-token roster is indexable and tradeable within seconds of broadcast.
The studios and the directors are assets too
The same canonical mint path produces three categories of token:
- Films — 1B supply, 99% to commissioner, 1% to studio. Per-title royalty share.
- Studios — equity in the studio that produced the film. Six seeded studios, each a real BSV-21 token on mainnet, linked from
/studios.htmland/exchange.html. - Directors — royalty share in a director's body of work. Six directors, each minted, each a primary-market asset on the exchange.
All three are regular tokens at the protocol layer — the distinction is only at the UX layer. This lets a user treat a studio or director as an index fund: buy the studio token, earn a slice of every film it ships; buy the director token, earn a slice of every film they make.
Derivative works model — the IP ladder
A trailer is its own asset. Anyone can commission a short derived from that trailer — they don't have to own it, they don't need permission, and they get their own royalty shares in the new short. But 10% of the short's royalty payouts cascade to the trailer holders forever. A feature derived from a short cascades 10% to the short and 5% to the trailer above it. The cascade is opt-in: standalone commissions always own 99%.
This is bct_royalty_splits (migration 0014, refined in 0015) computing the split dynamically from parent_offer_id chains. It mirrors how Hollywood treats treatment options, novel adaptations, and sequel rights — except permissionless and on-chain.
What Comes Next — Phase 2 (Post-Hackathon)
docs/PHASE-2-USER-STUDIOS.md captures the next iteration: bMovies as an equity-crowdfunded AI film studio platform. Users sign up, create their own studio, and pay small dollar amounts for the early rungs of the ladder — $0.99 to spawn a pitch, $9.99 to upgrade to a trailer — entirely out of a Stripe-topped balance with no KYC.
The differentiator: every agent-produced artifact gets a SHA256 hash-commitment inscription on-chain (~1–2 sats per artifact) via OP_RETURN bmovies:artifact:<id>:<sha256>:<role>:<tier>:<project_id>:<ts>. Financiers holding shares get cap-table-gated access to the full production archive, forming a tamper-evident production ledger.
Phase 2 is deferred until after submission on purpose: it would have been a mid-hackathon rewrite. The equity-crowdfunding mechanic is what bMovies wants to be; the agentic pay plumbing shipped in this submission is what it needs in order to become that.
Limits and What I'd Ship Next
Real BSV-21 mint at producer.token_mint — SHIPPED
The canonical mint path (src/token/mint.ts, the @bsv/sdk-only 1sat envelope) is verified by 33 canonical tokens on mainnet. The $ZEPHY token (f3017d2188ef24c7af53e25b57ec8694a5d2e78d364d3cca35bceb8725d5d766) is the first end-to-end verified live commission flow — real Stripe checkout → webhook → worker → canonical BSV-21 mint. Verified indexed at GorillaPool returning sym: "ZEPHY", amt: "1000000000".
Per-step agent payments — sentinel txids (known gap)
Per-step payments are currently sentinel txids (feature-pay-${offerId}-${stepId}-${ts}). The wallet plumbing exists in src/payment/wallet.ts and the schema is ready in bct_artifacts.payment_txid. Wiring real BSV transfers from a per-step pool wallet is a one-day task once the agent wallet pool is funded.
Phase 3 ffmpeg concat — deferred
Full-length video assembly from scene footage. Today the rough cut is a streaming playlist that the /production.html player renders in sequence. Post-hackathon: ffmpeg concat into a single deliverable MP4.
Share listing flow — fully wired
/api/feature/list-shares (create/buy/cancel actions), bct_share_listings table with RLS, Stripe webhook handles the share-listing-buy checkout type and flips listings to sold. Verified live: created a 0.1% ($10,000) listing on feature-test-001, generated a real Stripe checkout URL.
Puppeteer PDF investor deck — superseded
Superseded by the existing print-friendly /deck.html?id=... page (Cmd+P → save as PDF). Same outcome, no headless Chromium needed.
Files of Interest
docs/
HACKATHON-PLAN.md # the original April 10 spec
FEATURE-PIPELINE.md # the full 14-section pipeline design
PROGRESS-2026-04-13.md # day-by-day progress reports
BSVA-SUBMISSION.md # this document (source)
PHASE-2-USER-STUDIOS.md # post-hackathon equity-crowdfunding plan
scripts/
feature-worker.ts # the Hetzner-resident pm2 worker
feature-worker.ecosystem.config.cjs # pm2 deployment
mint-studios-and-directors.ts # batch mint of 6 studios + 6 directors
remint-films.ts # canonical re-mint of all 19 films
smoke-mint.ts # end-to-end canonical format validator
api/feature/
start.ts # POST /api/feature/start
revise.ts # POST /api/feature/revise
publish.ts # POST /api/feature/publish
judge-coupon.ts # POST /api/feature/judge-coupon
api/
trailer/generate.ts # the trailer pipeline
short/generate.ts # the short pipeline
stripe-webhook.ts # routes paid commissions into the worker
src/
payment/wallet.ts # per-agent BSV wallet
agents/piece-payment.ts # the streaming fan-out engine
agents/bsvapi-client.ts # x402-paying AI client
token/mint.ts # BSV-21 deploy+mint
docs/brochure/
production.html # the live timeline / deliverables view
productions.html # the productions wall
commission.html # tier picker + judge coupon panel
index.html # homepage with live productions strip
exchange.html # native tabbed Films/Studios/Directors exchange
treasury.html # platform P&L dashboard
supabase/migrations/
0014_derivative_works.sql # IP ladder (parent_offer_id)
0015_dynamic_royalty_splits.sql # cascade rolls back to film holders
0016_feature_pipeline.sql # pipeline state, versioned artifacts, step log
0017_draft_revisions_presale.sql # tier config, revisions, draft window
0022_studios_and_directors.sql # bct_studios + bct_directors + public views
Submission Checklist
- ≥2 AI agents with individual BSV wallets — 58 agents in the roster
- ≥1.5M on-chain TX in a 24h window — Track A streaming engine: 1.85M projected (123% of target), 19,000 verified in a 13-minute empirical burst at 24 TX/s peak
- BRC-100 wallets and identity for discovery — BRC-77 agent attestation + BRC-100 wallet-connect for end users via
brc100.js - Autonomous transactions via direct payments —
wallet.tsbuilds & broadcasts P2PKH fan-out transactions without human intervention - Human-facing UI displaying agent activity — multiple live views at bmovies.online (production timeline, productions wall, exchange, treasury, leaderboard)
- Real-world problem addressed — pre-production film financing; UK independent film sector (16,000 freelancers, 2% BFI acceptance rate)
- @bsv/sdk in tech stack — yes, used for all wallet construction, inscription, and fan-out
- Live demo URL — https://bmovies.online
- Source URL — https://github.com/b0ase/bmovies
- Submitted within window (Apr 6 → Apr 17 23:59 UTC) — yes