Epic: bitSpire integration & multi-tenant overhaul (v2) #5
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
The current
satmachineadminextension is superuser-only on a single LNbits instance with one ATM, built against the legacy Lamassu (SSH-tunneled PostgreSQLcash_out_txspolling). The upstream ATM has been rebuilt as bitSpire (aiolabs/lamassu-nextdevbranch), which is Nostr-native (kind-21000 NIP-44 v2 encrypted RPC between the ATM and LNbits, auto-account-creation from npub, decentralized relay-based discovery). Legacy Lamassu's PostgreSQL is gone.Three planned-feature streams converge into this overhaul:
aiolabs/lamassu-next#22— LNbits as Nostr-native UI layer (LNbitsnostr-transportbranch — what we depend on).aiolabs/lamassu-next#42— Nostr-native operator dashboard + seed-URL onboarding + kind-30079 telemetry.aiolabs/lamassu-next#43— Enriched kind-30078 beacon (name/location/fees/limits/denominations). Note: not yet shipped (verified ondevcommit2b712af— current payload is only{cash_in, cash_out, cash_level, fiat, model}).aiolabs/lamassu-next#44— upstream dependency filed as part of this overhaul: carry the principal/commission split end-to-end viaPayment.extraon cash-out invoices and LNURL-withdraw links.Goal
Rebuild Satoshi Machine to support a decentralized network of bitSpire ATMs that can plug into any LNbits instance, with three first-class actors:
~/dev/webapp, so satmachineclient is in maintenance mode.)satmachineadmin absorbs the operator dashboard role when an operator is on LNbits —
apps/dashboardin lamassu-next becomes the self-host-without-LNbits fallback.Key design decisions (2026-05-14)
Payment.tag.super_fee_pct(read-only to operator). Operator's split rules apply to the remainder (commission_sats * (1 - super_fee_pct)).platform_fee_satsandoperator_fee_satsas separate absolute BIGINT values (Stripe Connect pattern) so v2's promo engine ships without a breaking migration.v2-bitspire(created frommain).Phased delivery
lamassu-next#43)lamassu-next#42lamassu-next#42Sub-issues (will be filed phase-by-phase as work picks up)
aiolabs/lamassu-next#43)aiolabs/lamassu-next#42)Upstream coordination
aiolabs/lamassu-next#42— fleet management plane, seed-URL onboarding (we mirror the seed-URL design).aiolabs/lamassu-next#43— beacon enrichment (we ingest opportunistically).aiolabs/lamassu-next#44—Payment.extrasplit metadata (eliminates back-derivation).P0 status — IN PROGRESS on branch
v2-bitspireCommits so far:
ae4e241feat(v2): add m005 satmachine_v2 schema for bitSpire + multi-tenant013e3d5feat(v2): rewrite models.py for v2 schema937749ffeat(v2): operator-scoped CRUD + stub legacy entry pointsVerified: clean import against LNbits 1.4
nostr-transport; 22/23 tests pass (calculationsmath suite intact; 1 async-test fail is env-only —pytest-asynciomissing in borrowed venv).Local plan:
~/.claude/plans/snug-gliding-shamir.md.