This is device firmware, not a re-creation of it. The actual Python that runs on a SeedSigner runs here, executed by Pyodide (CPython compiled to WebAssembly) in a Web Worker. The wallet's own code is untouched: nothing in it is patched, and the pinned release it is built from is rebuilt below rather than pasted in. Two builds are on offer, stock SeedSigner and the 3rdIteration smartcard fork, and the control under the device says which is running and switches between them.
What a browser cannot provide is replaced at the four points where the firmware reaches for hardware, and each is replaced from outside it:
Driving it. Click the device's own buttons, or use the keyboard: the arrows move, Enter selects, and 1, 2 and 3 are the three side buttons.
Nothing leaves your browser. The wallet has no network
of any kind, and this page's content security policy names exactly one
other origin it may reach: signet.bitsaga.be, the faucet and
chain endpoints of Bitsaga Signet, which nothing asks anything until you
open the simulator wallet or start the multisig tutorial.
That one origin is mine. Bitsaga Signet is a Bitcoin test network I run, and it exists so that the simulator wallet and the multisig tutorial can finish:
It is still a simulator, running in a tab on an ordinary computer, with no secure element and no air gap. Treat every key it shows as public and never type a seed phrase you rely on. Mainnet works here exactly as it does on hardware, and that is the danger rather than a feature: on Mainnet this page derives the real mainnet account keys and produces valid mainnet signatures. It sits in the device's own Settings and Advanced menus where it always has, neither hidden nor recommended, and the multisig tutorial has no use for it, because Bitsaga Signet does the whole thing.
Each firmware is pinned to the newest release its project has published, by tag and by commit, rather than to a branch. A branch moves and can be rewritten out from under a rebuild; a published tag cannot.
The page is checking itself, so this is a convenience and not proof: only rebuilding the zip and comparing the hash is a check that does not depend on this page being honest.
The upstream tree at the commit above, this repository's stand-ins for the hardware a browser does not have, and these pinned dependencies. Nothing else.
Check it yourself: rebuild the zip · the same rebuild on a clean runner · tests · upstream's own tests · source · latest release · device images · DoomSigner
Never enter a seed phrase you rely on. Use a throwaway test seed. On Mainnet this page holds the real mainnet keys for whatever you give it, with no secure element under them: treat anything typed in as public.
starting…