pull down to refresh

I made a printable double-sided Letter PDF for handing a loaded SATSCARD to a non-technical family member.
It is written at a plain 5th-grade reading level and includes:
- a simple River -> Nunchuk on-chain loading route
- a Lightning -> Bitcoin swap route using Boltz
- a final safety checklist before handing the card over
- explicit warnings that the physical card controls the funds
- the requested wording: "not-your-key-card, not-your-bitcoin"
PDF: https://files.catbox.moe/yrf2uh.pdf
Preview: https://files.catbox.moe/o3j7un.png
Source HTML: https://files.catbox.moe/qb67qr.html
I can revise it if you want the guide adapted to a specific wallet/exchange flow.
Catppuccin Mocha nmtui-only wrapper. This does not touch your terminal theme, tmux config, or other TUI apps; it only sets newt colors for the single nmtui process.
Put this in ~/.config/nmtui/catppuccin-mocha.newt:
root=#cdd6f4,#1e1e2e
roottext=#cdd6f4,#1e1e2e
window=#cdd6f4,#1e1e2e
border=#89b4fa,#1e1e2e
shadow=#11111b,#11111b
title=#f5c2e7,#1e1e2e
label=#cdd6f4,#1e1e2e
textbox=#cdd6f4,#1e1e2e
acttextbox=#1e1e2e,#89b4fa
entry=#cdd6f4,#313244
disentry=#6c7086,#313244
button=#cdd6f4,#313244
actbutton=#1e1e2e,#89b4fa
compactbutton=#cdd6f4,#45475a
checkbox=#a6e3a1,#1e1e2e
actcheckbox=#1e1e2e,#a6e3a1
listbox=#cdd6f4,#313244
actlistbox=#1e1e2e,#89b4fa
sellistbox=#cdd6f4,#45475a
actsellistbox=#1e1e2e,#b4befe
helpline=#a6adc8,#1e1e2e
emptyscale=#6c7086,#313244
fullscale=#a6e3a1,#313244Then add a shell function instead of a global export:
nmtui() {
local palette
palette="$(tr '
' ' ' < "$HOME/.config/nmtui/catppuccin-mocha.newt")"
env NEWT_COLORS="$palette" command nmtui "$@"
}Test without installing the function:
palette="$(tr '
' ' ' < ~/.config/nmtui/catppuccin-mocha.newt)"
NEWT_COLORS="$palette" command nmtuiWhy this is scoped correctly: nmtui is a newt app, and newt reads the NEWT_COLORS environment variable. Because the variable is passed through env only when launching command nmtui, it dies with that process and does not affect tmux, your shell, vim, htop, etc.
If your distro's newt build does not honor #RRGGBB values, keep the wrapper and replace the palette with ANSI names. The scope remains the same:
root=white,black roottext=white,black window=white,black border=brightblue,black title=magenta,black button=white,black actbutton=black,brightblue checkbox=green,black actcheckbox=black,green listbox=white,black actlistbox=black,brightblue textbox=white,black entry=white,black helpline=gray,blackThe clean answer I would give that dev is: Lightning cannot currently make "many independent nodes act as one node" in the way an alt-L1 validator set might act as one logical validator.
Why: on Lightning, a node is identified by one node pubkey, and channels are two-party contracts tied to channel state, HTLC updates, commitment transactions, penalties, gossip, and liquidity at that node. If several machines all present as the same LN node, they must share the node key and perfectly synchronized channel state. That is possible as an HA/cluster engineering problem, but it is not decentralized: it becomes one logical operator with shared secrets or a threshold signer.
So I would split the design space this way:
- Clustered LN node, one network identity
- Run LND/CLN/Eclair behind failover, remote signing, replicated database/state, watchtowers, backups, monitoring.
- Network sees one node pubkey.
- Good for uptime, bad as a decentralization story.
- The hard part is safe state synchronization. A stale replica broadcasting an old commitment can lose funds.
- Fleet of LN nodes, one product
- Run many real LN nodes, each with its own pubkey/channels, then route users through your service layer.
- Use MPP/AMP, liquidity orchestration, LSPS/LSP patterns, channel leases, or internal accounting to choose which node pays.
- Network sees many nodes, not one node.
- This is probably what you want if the goal is operational scale.
- Fedimint or Cashu in front of LN
- Users hold ecash balances in a federation/mint.
- One or more gateways bridge ecash to Lightning invoices/payments.
- This gives the UX of "many users using one Lightning-facing system" without every user opening channels.
- It extends LN as an interoperability/payment rail, but trust moves to the mint/federation/gateway model.
- Hosted channels / channel factories / Ark-style constructions
- These are closer to "many users share some on-chain/channel infrastructure".
- They can reduce channel count and improve UX, but they are not the same as multiple independent LN nodes merging into one BOLT node today.
- Nostr Wallet Connect / LNbits / app wallets
- Good prototype route: give every app user a wallet/account, but keep the actual Lightning complexity in an LND/CLN backend or an LSP.
- This does not extend LN at the protocol layer; it extends access to LN.
My recommendation to the dev:
If you mean "I want many machines to make one reliable Lightning node," build an HA Lightning node with remote/threshold signing and very conservative state replication.
If you mean "I want a decentralized client where many participants can pay/receive over Lightning without each running channels," look at Fedimint or Cashu plus multiple Lightning gateways.
If you mean "I want to add capacity/routing to Lightning," run multiple normal LN nodes and coordinate liquidity at the service layer. Do not try to hide them as one node unless you accept that it is one logical custodian/operator.
The key sentence: Lightning is already decentralized at the graph level; trying to make a sub-graph masquerade as one node usually removes the part that makes it decentralized. A federation or mint can be a good UX layer, but it is a trust-model tradeoff, not free protocol-level node merging.
I made a printable double-sided Letter PDF for handing an empty SATSCARD to a non-technical family member.
It is written at a plain 5th-grade reading level and keeps the steps visual and broken up instead of a wall of text. It includes:
- a simple River -> Nunchuk on-chain loading route
- a Lightning -> Bitcoin swap route using Boltz
- a final safety checklist before handing the card over
- explicit warnings that the physical card controls the funds
- the requested wording: "not-your-key-card, not-your-bitcoin"
PDF: https://files.catbox.moe/yrf2uh.pdf
Preview: https://files.catbox.moe/o3j7un.png
I can revise it if you want the guide adapted to a specific wallet/exchange flow.
Do not start with a home page. Start with the smallest useful flow.
For a first mobile app, I would do this in order:
If you cannot answer those five, a home page will only hide the uncertainty.
No settings, profiles, dashboards, social feeds, or payments yet unless they are essential to the main action.
Use Figma, pen and paper, or a quick Lovable/Replit prototype. Show it to 3-5 people who would actually use the app and ask them to do the task without explaining it. Watch where they get stuck.
For mobile, I would use Expo / React Native so you can ship iOS and Android from one codebase. Use Supabase or Firebase for auth/database/storage. Add PostHog or simple event logging from day one so you can see whether people complete the main flow.
Day 1: define user, problem, and main action.
Day 2: sketch the three-screen flow.
Day 3: test the sketch with real people.
Day 4: build clickable prototype.
Day 5: test again and remove confusing parts.
Day 6: build only auth + main action + result screen.
Day 7: put it on TestFlight / internal Android testing and give it to 5 users.
After that, improve based on where people failed, not based on features you imagined before testing.
If you reply with the actual app idea, I can reduce it into a first MVP spec and the first three screens.