Safe multisig
A 2-of-3 Safe, with every transaction field in the signed hash. A delegatecall is shown and refused unless allowed. Settled on chain by the room.
A local-first client on the Logos stack
Muster (v.) — to assemble, as people gathering for a common purpose. Get people into a room, agree on what to do, and do it, without anyone outside the room watching.
Muster coordinates multi-party transactions inside end-to-end encrypted conversations. Pay from a shared account, split a bill, or request XMR. The conversation is the security boundary: who is in the room decides who can read what is being done.
safeTxHash from the effect you reviewed. It matches; your key may sign.Recorded, not drawn
Two people, two Basecamp installs, real transactions on the Sepolia testnet. Nothing here is mocked: the keys are in each person's Logos keystore, every signature is approved in the Logos Signer, and each payment is confirmed by the person it was owed to, from their own read of the chain.
Alice picks Split a bill and pastes Bob's contact link. Bob's Home shows the invitation; he joins, and each puts a name to the other, a name only they see.
Alice proposes 0.002 ETH. Bob agrees with his room key, then pays his share: the Logos Signer shows the one transaction it will sign. Alice's own read of the chain confirms it, and the split is final on both screens.
Alice discloses a 2-of-2 Safe; every member's client checks it against the chain. She proposes a payment from it, both owners approve in their Signer, and Bob settles it on-chain.
Every card answers for itself: which observer learns which field, from the room to anyone reading the chain, and the room's own history, step by step, from the record every member keeps.
Muster 0.3 in Logos Basecamp 0.3.2, recorded on a virtual display and cut for length; waits for the chain are sped up, never removed. The scripts that recorded them are in scripts/demo.
The shape of the product
A chat app asks who? first. Muster asks what you are doing, and derives the rest: the room, the account, and what each person must bring.
Your keys, your wallets, the plugins you trust, and the infrastructure you point at. RPC endpoints and store nodes are settings — untrusted and chosen by you. No server, no telemetry.
Name what you want to do with a group — pay from a shared account, split a bill, request a payment in XMR. The intention opens the room and asks each person for exactly what it needs.
Every proposal is a card with its live state. Open it to see the exact bytes you would sign, the domain they bind to, and where each input came from.
The lifecycle is the curriculum
Muster's first job is education. It walks people through the whole lifecycle of a multi-party transaction, and at each step answers four questions on screen. The teaching client and the real client are the same client: there is no demo mode.
Same step, different stack
Coordinating a shared transaction usually means a service in the middle: it holds the proposals, pools the signatures, and sees everything. Muster keeps that work inside the room.
Illustrative, from the vision. Inside the client, every "Logos protects" claim maps to a requirement and a test that fails if it stops being true, held in a claims registry that CI checks.
Ten invariants
Ten rules the code holds, whatever the tests say. Each has a typed spec with acceptance oracles, and probes that run against the module core.
What a room can do today
The core is driver-generic. A driver says where the threshold lives — in a contract, in a script, in an aggregate key, in an on-chain vote, or with each person paying their own share — and the room coordinates it.
A 2-of-3 Safe, with every transaction field in the signed hash. A delegatecall is shown and refused unless allowed. Settled on chain by the room.
P2WSH sortedmulti and taproot multi_a. Sign in the app, or export a PSBT to a signer outside Muster and import what comes back.
The room runs the key ceremony and both signing rounds over its log. On chain, the spend is one signature — the same as a single signer's.
Logos's own chain. Each approval is the member's own on-chain vote, read back and confirmed by the room before it counts.
One person fronted a bill. Each person agrees to their share and pays it from their own wallet; the creditor's client confirms each payment from its own read. Fiat bills convert exactly. With one payer, it is a payment request.
Net the room's open shares into fewer payments. Every balance is conserved, and every person covered agrees again before anyone pays.
The atlas lists every multisig family Muster has surveyed — built, candidate, watched and rejected — and every action a person can take, with who acts, what is signed, and who learns what. Open the atlas →
New · XMR in a room
Monero is fungible cash, and settlement stays on Monero. Muster covers the rest of the deal: agreeing in a private room, asking for the payment, and confirming it — with no new wallet app, and no custody.
monero: link or QR code carrying the address and the exact amount — from Cake, Feather, or Basecamp's own wallet.monero: link carries only the address and the amount.monero.split; its seven guarantees are a typed spec, graded 7/7.Monero multisig stays out: upstream calls it experimental, and the platform's wallet does not expose it. Every XMR action is each person paying their own part. The plan: Monero in rooms · the build: the labbook · the spec: derived-exo-dcc.5.
The whole transaction, link by link
A transaction between people leaks at seven links: discovery, diligence, negotiation, contracting, ordering, settlement, enforcement. Every one is in Muster's scope, at different stages. Each row says what the code does today; what is planned is named as planned.
Muster classifies; it never scores. A link is described by what holds it and whose conduct it still rests on, never by a percentage. The full table, with what each link leaks: explaining Muster, §4c.
The fourth question
A client that ships a real improvement and names its remaining leak teaches more than one that claims the perfect stack already exists. Each gap names the fix and where that fix actually stands.
Content is encrypted. But a store node still sees a room's content topic, and the timing and size of what is published and fetched. It never sees who is in the room.
Partly addressed: Muster can send a room's messages through the Logos mixnet. It is an opt-in setting, built on Logos Delivery 0.3's sender anonymity. It hides which participant sent a message, not who reads a room: reading still asks a store node for the room directly.
A verified balance checks a Merkle proof against a state root — which the client fetches from the RPC you configured, and trusts.
The fix: a beacon light-client sidecar that verifies the root itself. Deferred on infrastructure.
A split records who agreed and who paid, truthfully. But no contract holds the money: it is a promise the group can see, not one the chain enforces. An XMR request is the same.
The fix: a split with deposits, each share locked in escrow at agreement.
Explore
Two references are published here. Both are self-contained pages, and each figure says where its facts came from.




Install
Muster ships its own catalogue for Logos Basecamp. Add it once, then install Muster like any other app; Basecamp resolves every dependency from the official Logos catalogue. The latest release is muster-v0.3.0, published 2026-10-14.
No Basecamp yet? The same release carries an AppImage: Basecamp 0.3.2 with Muster and every module it needs already inside. Download it, chmod +x it, run it, and click M in the sidebar; the steps below are not needed.
In Basecamp, open . Under Add a repository, paste this URL and press Add:
https://raw.githubusercontent.com/corpetty/muster/main/catalog/logos-repo.jsonA Muster entry appears in the list, below Logos Official, enabled.
Open Applications, search muster, and click Muster. In the install dialog, untick Monero Node (local) unless you mean to run your own Monero node — the wallet can use a remote one. Keep the rest, then press Install.
Press Launch. Muster opens on Needs you, with a Getting started list; that is where you set up your accounts and chains (first-run runbook). Members of a room should run the same version.
muster_module and muster_ui, and nothing else. Basecamp takes the newest version of a package across every catalogue you enable, so a catalogue that listed an official package's name could replace it. Muster's never does; its release script refuses to.The full steps and the known rough edges: install from the catalogue · the catalogue · releases
Where it stands
Everything shown is enforced by running code. A Nim core behind a language-neutral contract, and a QML interface, built as Logos modules.
As of 2026-10-09 · the current phase is in CLAUDE.md