De maneki-neko van DUCAT, met een Monero-munt in de hand
peer-to-peer handel in de buurt · specificatie concept 1.1.0-dev13

DUCAT

Veilid voor het transport. Monero voor de afwikkeling. Geen exploitant ertussen.

Er staat nergens een DUCAT-server — contacten, berichten, rekeningen en bonnen zijn DHT-records en end-to-end verzegelde payloads, en elke telefoon draait een volledige Veilid-node, die de routering en opslag teruggeeft die hij gebruikt.

0 conformiteitsvectoren 0 bedrijfsmodi 0 talen 0 servers

Debug-ondertekend, alleen stagenet. Nog niet voor echt geld.

Staat op

Handel met niemand ertussen

Een dukaat was zes eeuwen lang een gouden munt die van Venetië tot Wenen tot de Levant werd aangenomen — geen relatie met een uitgever, geen rekening erachter, geen toestemming eraan verbonden. DUCAT is precies dat, voor het moment dat je tegenover iemand staat en zakendoet.

🐱

Nergens een server

Contacten, rekeningen, betalingen en bonnen reizen als end-to-end verzegelde payloads over Veilids DHT. Er valt niets te dagvaarden, te beperken, te verwijderen of uit te zetten, want er draait niets. Elke telefoon is een volledige node en geeft de routering en opslag terug die hij gebruikt.

🔑

Identiteit is een sleutelpaar

Op de telefoon gemaakt. Geen e-mail, geen telefoonnummer, niemand om je bij te registreren — en daarom kan niemand hem ook voor je herstellen, en de app zegt dat hardop in plaats van het weg te moffelen.

🎫

Kaartjes voor eenmalig gebruik

Je geeft iemand een kaartje — QR, ducat:-link of een NFC-tik — en het geldt voor één persoon. Eenmaal ingewisseld werkt het niet meer, dus een schermafbeelding die ergens anders belandt is geen ingang.

🔒

Verzegelde gesprekken

Versleuteling in X3DH-vorm, met eenmalige prekeys en forward secrecy. Wanneer de app moet terugvallen op de ondertekende prekey, toont hij je een open slot in plaats van het te verbergen.

💬

Gesprekken die geld dragen

Op een postbus gebaseerde gesprekken die werken terwijl een van beiden offline is — ze dragen gespecificeerde rekeningen waarvan de regels moeten optellen tot het totaal, anders wordt het bericht geweigerd, betalingen, en bonnen die de ontvanger uitgeeft en die verwijzen naar de transactie die ze erkennen. Kleine groepen waaieren uit over diezelfde gesprekken tussen twee: geen groepssleutel, geen gedeeld register, elke eigenschap van het gesprek onveranderd.

Zes stappen, geen account,
ongeveer een minuut

Elke schermafbeelding op deze pagina is de app op een telefoon, geen mockup. Niets hier vraagt je je aan te melden, want er is niemand om je bij aan te melden.

Stap 1 van 6: maak je identiteit — een sleutelpaar gemaakt op deze telefoon, geen account
1 · Identiteit — een sleutelpaar, geen aanmelding
Stap 4 van 6: kies een pincode, met de waarschuwing dat er geen herstel is, ronduit gezegd
4 · Een pincode — en geen manier om hem te herstellen, ronduit gezegd
Stap 5 van 6: hoe vreemden elkaar vertrouwen — beide kanten leggen borg in, afronden geeft hem terug
5 · Vertrouwen — uitgelegd vóór je eerste deal
Stap 6 van 6: de back-up, die eerlijk gezegd nog geen back-up is tot hij de telefoon verlaat
6 · Back-up — „nog geen back-up” tot hij de telefoon verlaat

Je identiteit is een sleutelpaar dat op het apparaat ontstaat — geen e-mail, geen telefoonnummer, niemand om je bij te registreren, en daarom kan niemand hem ook voor je herstellen. De laatste stap is de back-up, want een portemonnee die je niet kunt herstellen is de enige manier waarop hier echt iemand geld verliest.

Geld dat van jou is

Een Monero-portemonnee in eigen beheer met overal omrekening naar lokale valuta, gescand en uitgegeven door een ingebouwde monero-oxide-engine — geen wallet-daemon op de telefoon.

Persoonlijk startscherm: saldo in XMR en lokale valuta, synchronisatiestatus, teller van uitgeefbare notes, modustegels en recente bewegingen
Het saldo en de notes erachter
Betalen of vragen: bedrag in lokale valuta of XMR, kostenberekening, wat er daarna overblijft
De hele rekensom voordat je toezegt
Het afschrift: lopend saldo, zoeken in bonnen, CSV-export
Een afschrift heropgebouwd uit de keten
Kiezen wie je betaalt: contacten met hun sleutelvingerafdrukken
Wie je betaalt, op sleutelvingerafdruk

Bij het betalen zie je het bedrag, de geschatte netwerkkosten, het totaal, wat je daarna overhoudt, hoeveel notes het uitgeeft en ongeveer hoe lang het duurt — en je kiest zelf een snelheid. De geschiedenis wordt heropgebouwd uit de keten: verzendingen herkend aan het key image, wisselgeld nooit als inkomsten getoond, elke regel met het lopende saldo, en het hele afschrift exporteerbaar als CSV.

Monero geeft losse notes uit in plaats van een saldo, dus een portemonnee met één grote note kan niet twee keer achter elkaar betalen. De app telt de notes die hij kan uitgeven en zegt dat je er één moet breken voordat je bij de kassa staat, in plaats van daar te falen.

Gesprekken die geld dragen

Een contact is een sleutelpaar, geen identificatie. Eén scan opent een op een postbus gebaseerd gesprek dat werkt terwijl een van beiden offline is — en die gesprekken dragen handel, niet alleen tekst.

Jouw kaartje: een eenmalige QR die een gesprek opent, geldig voor één persoon
Jouw kaartje — geldig voor één persoon
Een gesprek dat geld draagt: gespecificeerde rekening met belastingregel, de bon, een banner voor afgewikkelde escrow
Rekening, betaling, bon — in het gesprek
Een groep van drie op een gedeeld prikbord: één record per generatie, een vraag en het antwoord vanaf een andere telefoon
Groepen — één gedeeld record per generatie
Zoeken in wat mensen zeiden, met naamtreffers boven berichttreffers
Zoek wat mensen werkelijk zeiden

Je geeft iemand een kaartje — via QR, ducat:-link of een NFC-tik — en het is geldig voor één persoon: eenmaal ingewisseld werkt het niet meer, dus een schermafbeelding die ergens anders belandt is geen ingang.

Een groep is een ledenlijst die alleen groeit, en haar woorden reizen op één gedeeld prikbordrecord per generatie (§16.24): elk lid schrijft zijn eigen pagina's onder een groepssleutel die de lijst meedraagt, dus een bericht aan vijf mensen is één schrijfactie in plaats van vijf, en het netwerk kan dat record van geen enkel ander onderscheiden. Niemand kan zich als een ander voordoen, en weggaan is een lokale zaak. Een groep kan een rekening delen: één totaal wordt een apart verzoek aan elke persoon plus een zin waaraan iedereen het rekenwerk kan nalopen, en elk verzoek springt op betaald zodra de verwijzing binnenkomt.

Je telefoon is het hele bedrijf

Kies een van negen modi en de hele app draagt over — met eigen tabbladen, niets meer van de portemonnee. Bijna niets hiervan had een nieuw protocolobject nodig, en dat is de zin waar de specificatie het trotst op is.

Bedrijfsmodi: persoonlijk, kassa, lopende rekening, taxi, donaties, marktplaats, verhuur, hulp inhuren, kiosk
Negen modi, één protocol
Kassa: ingeboekte artikelen met een berekende belastingregel
Kassa — met de belasting berekend
Eén code voor de klant om te scannen; de gespecificeerde rekening komt op hun telefoon
Eén code — de rekening komt binnen bij het scannen
Lopende rekeningen: open, gefactureerd en wachtend, afgesloten met één rekening
Lopende rekeningen — afgerekend vanuit de bus naar huis
Kioskmodus, kantklant: tik aan wat je wilt, de belasting staat er vóór je toezegt
Kiosk — de klant bestelt zelf
Personeelspaneel van de kiosk achter een pincode: bestellingen, menu en het tarief
Personeelspaneel achter een pincode
Een vaste donatiecode, met de koppelbaarheidskosten op het scherm
Donaties — met de kosten benoemd

Een kassa boekt artikelen in of neemt een ingetypt totaal, berekent de omzetbelasting voor haar regio en toont één code; de rekening verschijnt op de telefoon van de klant zodra die scant, en een bon gaat terug wanneer die betaalt. Een lopende rekening meldt elk drankje aan de klant en sluit af met één rekening. Een kiosk geeft de telefoon volledig aan de klant, met een personeelspaneel achter een pincode. Een donatiebox biedt beide wegen: een DUCAT-code die een gesprek opent en een bon terugstuurt zodra het geld binnen is, en een vast adres waaraan elke Monero-portemonnee kan geven, met de koppelbaarheidskosten op het scherm in plaats van in een beleidsstuk.

Een rit die niemand toewijst

Typ waar je heen wilt. Je telefoon maakt van een GPS-positie een geocel — een openbaar prikbord waarvan het adres de plek zelf is — en plaatst een oproep: een kaartje voor eenmalig gebruik, een grof gebied en een prijs berekend uit de echte route. Er komt geen naam op het prikbord — niet op het kaartje en niet in het record erachter. Chauffeurs houden hun cel en de buren in de gaten en nemen hem aan; de DHT is de scheidsrechter van de race, en er bestaat geen bemiddelaar.

De groene lijn is het punt: DUCATs tarieven liggen zo'n 15% onder wat een platform de passagier rekent, en de chauffeur houdt alles — de ontbrekende platformafdracht, teruggegeven aan hen beiden. De acceptatie komt met een gezicht erbij: naam, auto, kleur, kenteken, aankomsttijd — verzegeld naar de passagier, nooit getoond op het prikbord. Je eigen naam en het portiek waar je staat gaan op hetzelfde moment de andere kant op, naar de ene chauffeur die hem aannam.

Eén toegeving, ronduit op het scherm gezegd: het zoeken van adressen, de routering en de kaarttegels bevragen OpenStreetMap — de enige plek waar DUCAT locatie het apparaat laat verlaten. De prikborden zelf dragen nooit beter dan ~1,2 km.

Een rit oproepen: route, afstand, tijd, en het tarief tegenover wat een platform zou rekenen
De oproep, afgezet tegen het platform
De taximeter: tarief één keer ingetypt, een ophaalcode, de voorwaarden komen bij de start in het gesprek
De meter, met de voorwaarden in het gesprek

Verkoop het, verhuur het, of bied een uur van je tijd aan

Dezelfde prikbordmachinerie draagt meer dan ritten. Een advertentie op de marktplaats, een verhuur, of een uur vakkundige hulp gaan allemaal naar een prikbord met de buurt als adres, en een onbekende vlakbij leest het zonder dat een van jullie beiden een platform aanraakt.

Advertenties staan op grovere prikborden dan oproepen — zo'n vijf kilometer breed, omdat mensen wel willen rijden voor een sleutelbos. Het zoeken leest jouw bord en de ring eromheen, en tekent resultaten zodra ze antwoorden, zodat iets dat vlakbij geparkeerd staat binnen zes seconden op het scherm staat, terwijl „hier is niets aangeboden” zo'n veertig seconden duurt en de gebieden onderweg afvinkt.

Door de marktplaats bladeren: een advertentie gevonden op het prikbord, met prijs, borg en een knop om te vragen
Marktplaats
Door hulp bladeren: een vaardigheid die vlakbij wordt aangeboden, per uur geprijsd
Hulp inhuren
Een voertuig te huur zetten: de openbare helft die naar het prikbord gaat
De openbare helft — wat het prikbord mag lezen
Alleen voor wie boekt: het adres en de overdrachtsdetails gaan nooit naar het prikbord
De private helft — nooit op het prikbord
Uitrusting in de buurt vinden: een actieve advertentie met dagprijs en de borg
Het vinden — prijs, borg en een manier om te vragen

Het advertentieformulier is in tweeën gedeeld en de app vertelt je welke helft welke is: alles in het eerste deel gaat naar een openbaar prikbord dat iedereen in de buurt kan lezen, en het adres, waar de sleutels liggen en het kenteken gaan in het tweede, dat je telefoon pas verlaat als een boeking echt is.

Een thuis, een feed
en een eigen plank

De records die een rekening dragen, dragen net zo goed een pagina. Je sleutel is al een adres, dus wat je schrijft heeft ergens om te wonen zonder iemand om ruimte te vragen.

De Feed: berichten van de mensen die je houdt, en je eigen thuis
De feed — berichten van de mensen die je houdt
De Bibliotheek: nummers geordend op uitgever, weggeschreven in plaats van geopend
De bibliotheek — nummers geordend op uitgever
Wereldwijd: publicaties op prikborden per onderwerp, waarbij „Alles” elke plank tegelijk leest
Wereldwijd — prikborden per onderwerp, alle planken tegelijk
Een geopende advertentie: de foto's uit haar bundel, de beschrijving van de verkoper, de ingetypte prijs naast de koers van vandaag
Een geopende advertentie — de foto's en de ingetypte prijs

Het thuis van een persona staat op het adres dat zijn eigen sleutel noemt, en de feed is de tijdlijn van de mensen die je houdt — een bericht kan een foto en een bestand meedragen, en hartjes komen terug. Sites worden vanaf de schijf geserveerd door wie ze publiceerde en openen in een verzegelde kamer, zodat er bij het lezen nergens anders iets wordt opgehaald.

Publicaties — een krant, een serie, een stuk software — worden wereldwijd verkocht op prikborden per onderwerp in plaats van per buurt: een bericht landt op het bord van het onderwerp én op dat van zijn taal, en „Alles” leest alle zes planken naast elkaar. Een advertentie haalt haar bundel van de telefoon van de verkoper — tot 24 foto's op ware grootte, een beschrijving, specificaties en bijgevoegde bestanden — in zijn geheel geweigerd bij elke sleutel die zij niet noemt, zodat een slecht document geen goede foto's kan verbergen.

Jullie leggen allebei een borg in.
Afronden geeft hem terug.

Er is geen bedrijf in het midden dat partij kan kiezen, dus doet DUCAT iets eenvoudigers. Het geld staat op een adres dat alleen jullie tweeën kunnen openen, en de vrijgave geeft elke kant zijn eigen borg bij naam terug. Niemand kan een borg afnemen — wij inbegrepen, want er is geen wij om te betalen.

~10% een rit kort, weinig kans op schade
~20% een slaapplek de sleutels van iemands huis
~30% een voertuig schade kan de prijs overtreffen

Die getallen zijn beredeneerd, niet gegokt — Bisqs 2-uit-2-model zonder bewaarder is het dichtstbijzijnde werkende precedent, en de literatuur over dubbele borg bewijst dat de opzet in evenwicht bestand is tegen valsspelen. Daar volgen twee grenzen uit: een borg die minder waard is dan de kosten om hem terug te geven wordt nul in plaats van decoratie, en geen enkele overstijgt de helft van de prijs. De meest blootgestelde partij stort als tweede, zodat haar geld nooit alleen op een gedeeld adres staat.

⅔

Escrow zonder bedrijf erachter

Wanneer een deal meer vraagt dan een borg: passagier, chauffeur en een wederzijds vertrouwd arbiter-contact voeren over het verzegelde gesprek een gedistribueerde sleutelgeneratie uit — drie apparaten leiden één Monero-adres af, elk met slechts een aandeel, elke twee kunnen tekenen, nergens een uitgever. Het gelukkige pad zijn twee tikken.

Al het andere is een schikking: de ene kant stelt een verdeling voor, de andere tekent of biedt tegen. Wie vastloopt vraagt de arbiter, wiens medeondertekening de uitspraak is — een gekaapte arbiter kan hooguit kiezen tussen de genoemde partijen, zichzelf nooit uitbetalen. Op de keten bewezen op stagenet in elke vorm, inclusief een FROST-vrijgave met twee invoeren.

∅

Wat een naam heeft gekost

Voordat er een deal is, is er een onbekende, en de vraag is wat zijn naam hem heeft gekost. Een persona kan Monero verbranden — sturen naar een adres waarvan niemand de sleutels heeft, afgeleid uit een hash die iedereen zelf kan narekenen — en Monero's eigen betaalbewijs daarvoor meedragen. Je client controleert dat bewijs bij zijn eigen node, vraagt een tweede node of de transactie in een blok staat, en toont de persona van dan af in woorden overal waar je iets beslist: 0,01 XMR verbrand, sinds blok N. Nooit een score. De regel die telt is de waarschuwing: als wat je op het spel zet meer waard is dan wat zij hebben verbrand, zegt de app dat, want een naam die niets heeft gekost, verliest niets door te verdwijnen.

Na een afgewikkelde deal mag elke kant een beoordeelde bon ondertekenen, en iedereen die je in levenden lijve hebt ontmoet mag een borgstelling ondertekenen. Beide reizen in een verzegeld gesprek en beide worden alleen door de lezer gewogen — één stem per ondertekenaar, waarbij alleen ondertekenaars meetellen wier eigen verbranding je hebt gecontroleerd, en een borgstelling alleen meetelt van mensen die al in jouw contacten staan. Eén stap ver, geen graaf, nergens iets gepubliceerd. Reputatie die geld kost in plaats van privacy.

En hij gedraagt zich als een app

Een privacygereedschap dat onprettig werkt, wordt één keer gebruikt. Dit benoemt wat dingen je kosten, spreekt twintig talen, en heeft een donker thema dat geen bijgedachte is.

Profiel: de koppelbaarheidskosten van contacten je direct laten betalen, gezegd waar je kiest
Kosten benoemd op het moment dat je kiest
Hetzelfde startscherm in het donkere Mocha-thema
Mocha — het donkere thema, goed gedaan
Hetzelfde startscherm in het Arabisch: volledig van rechts naar links gespiegeld, met Oost-Arabische cijfers
Arabisch — een volledige spiegeling
De zakelijke helft van de instellingen: tariefregio, belastingtarief, privacy, back-up
De zakelijke helft van de instellingen

Gemak heeft een prijs in een privacysysteem, en de app benoemt die op het moment dat je kiest in plaats van in een beleidsstuk dat niemand leest. Contacten je direct laten betalen betekent één adres hergebruiken — dus zegt hij dat iedereen die de keten bekijkt kan zien dat elke keer dezelfde persoon betaald werd, ook mensen die je maar één keer betaalden, en wijst op het alternatief. Diezelfde gewoonte loopt overal door: een waarneming in de mempool wordt getoond als gezien, nooit afgewikkeld; een profiel wordt altijd gepresenteerd als de bewering die het is.

Hij spreekt twintig talen — elk scherm leest uit resources, meervouden worden samengesteld in plaats van aan elkaar geplakt, en Arabisch en Farsi bewijzen de spiegeling. Bonnen zijn registers, geen berichten: elke bon staat in zijn eigen opslag, overleeft het wissen van gesprek en contact, en reist mee in de versleutelde back-up — die de mensen net zo goed meeneemt als het geld.

Dezelfde applicatie op een bureau

Een native venster over dezelfde Rust die de telefoon draait — zodat de kassa van een winkelier, een kiosk, de perskamer, de markt en de feed één implementatie zijn en geen port.

De Chat-pagina van het bureau: groepen op borden boven de gesprekken tussen twee, met een gesprekspaneel
Chat — groepen op borden, boven de gesprekken tussen twee
De kassa van het bureau: een ingeboekte verkoop en lopende rekeningen
De kassa — een ingeboekte verkoop en de lopende rekeningen
De Markt-pagina van het bureau: advertenties bij een cel met hun miniaturen
De markt — advertenties bij een cel, met hun miniaturen
De Status-pagina van het bureau: de node, zijn routeringstabel, Opnieuw verbinden, het logboek
Status — de node, zijn routeringstabel, Opnieuw verbinden

Hij spreekt de twintig talen van de telefoon uit dezelfde resources, en is tegen de telefoon beproefd in elke rite: chat, groepen op borden, rekeningen en bonnen, een kioskbestelling betaald vanaf een telefoon die het bureau nooit eerder had ontmoet, bestanden en sites geserveerd en opgehaald, en gesprekken met echt geluid.

Wat bewezen is, en wat niet

De README houdt bij wat er werkelijk end-to-end heeft gedraaid op het echte netwerk en het echte stagenet — en benoemt de gaten in plaats van ze te begraven.

End-to-end aangetoond
  • Twee volledig toegewezen ritten telefoon↔desktop — van geocel-oproep tot afwikkeling op de keten, fooi en bon — en de rit met borg inmiddels ook op twee telefoons tot het einde gereden
  • De volledige escrow-boog — twee telefoons en een arbiter aan het bureau leidden onafhankelijk één 2-uit-3-adres af; storten → vrijgeven → chauffeur betaald
  • Een boeking — eigenaar en gast storten elk een borg, de pot bevestigd door de eigen scan van de gast, verdeling voorgesteld, getekend, beide kanten heel; hij hervatte in plaats van opnieuw te beginnen toen halverwege een Monero-node een time-out kreeg
  • Lopende rekening van telefoon naar desktop, van rekening tot bon; tien aanvallen geweigerd
  • Een telefoon tot niets gewist werd door de installatie geleid: eerste kaartje, eerste betaling, een kioskverkoop van begin tot eind betaald — daarna opnieuw gewist en hersteld uit zijn eigen back-up
  • Elk escrow-spoor op één dag door de interface — een marktplaatsverkoop, een straatoproep met live positie die tussen telefoons oversteekt, een verhuur van uitrusting, en een hulpklus waarvan de eerste run een echte race condition aan het licht bracht en verhielp
  • De vertrouwenslaag, doorlopen in plaats van beargumenteerd — een verbranding bewezen en in 12 s gecontroleerd bij de eigen node van een vreemde, een beoordeelde bon terecht op nul gewogen, vier desktops die concludeerden: „2 van je contacten kennen hen”, en een naamloos oproepkaartje dat pas een naam kreeg van de gegevens die daarna gedeeld werden
Gezegd, niet begraven
  • Geen review door iemand buiten het project — §2.5 is het argument waarom dat ertoe doet; een interne ronde langs vijf aanvalsvlakken vond ruim veertig dingen en verhielp de meeste, wat minder waard is
  • Geen implementeerder die core/ nooit gelezen heeft
  • NFC geverifieerd bij het compileren, nooit in het veld getest tussen twee telefoons — en de tik nooit op een toestel gemeten
  • Latentiecijfers gemeten op een desktop met een aangesloten node, niet op een telefoon op accu
  • Twee radio's, twee accu's, twee onafhankelijke klokken — de velddag staat nog open
  • De desktop heeft geen tweede factor — geen apparaatvergrendeling en geen eigen geheim, dus de vraag die de telefoon stelt voordat er geld af gaat, kan daar niet draaien
!

Pre-alfa. Stagenet. Niet voor echt geld.

Elke build is debug-ondertekend en wikkelt af op Monero's stagenet — munten zonder waarde, met opzet. De specificatie is concept 1.1.0-dev13 en zegt over zichzelf: niets hier is definitief, en §14 is de echte agenda. Probeer hem, breek hem, lees hem — financier hem alleen niet.

De specificatie is het product.
Al het andere houdt haar eerlijk.

ducat-protocol.md is het hoofdartefact — vijf delen, een wijzigingslog vooraan, en een conformiteitssuite die een tweede implementatie draait, zodat het document niet stilletjes van de code kan afdrijven.

★ ducat-protocol.md   de specificatie — concept 1.1.0-dev13, wijzigingen vooraan
  core/               referentie-implementatie (Rust)
  vectors/            406 conformiteitsgevallen + schema
  conformance/        vier controleurs, bij elke push
  harness/            end-to-end over echte Veilid-routes
  sim/                offline simulator, marktscenario's
  applications/       android/ + desktop/ (dezelfde bronnen)
  mobile/             de Rust-brug: portemonnee · postbus · node
  research/           bewijs, geen product

Vier controleurs, bij elke push

  • Elke vector gevalideerd tegen schema.json
  • Een tweede implementatie draait alle 406 en moet het eens zijn
  • Het document gecontroleerd tegen de code — dat ving een normatieve sectie op waarnaar drie keer verwezen werd en die nooit geschreven was, een waardebereik dat het register niet declareerde, en zes vectorsoorten die het document nooit benoemde
  • Niets wat geïmporteerd is blijft ongedeclareerd

Rentmeesterschap is normatief, niet aspirationeel: §18.7 maakt Veilids ethiek tot een conformiteitseis — geen protocolkosten, geen betaling aan nodes, nooit. Bouw wat je wilt met deze code, maar een client die vervoer te gelde maakt is geen DUCAT.

Zet hem op een telefoon,
of op een bureau

Niets vooraf te installeren — elke build draagt zijn eigen Rust-bibliotheek en JVM mee. Android op de telefoon, en dezelfde applicatie als native venster op Linux, Windows en macOS. Er is geen iOS-build; die krijgt een map zodra hij er een verdient.

🤖 Android

Telefoonbrowser, nieuwste build, geen releasepagina om door te ploegen. armeabi-v7a alleen voor telefoons ouder dan ongeveer 2016; x86_64 is voor emulators.

🐧 Linux

De .deb en .rpm installeren als pakketten; de AppImage draait gewoon.

🪟 Windows

Niet ondertekend — Windows waarschuwt bij de eerste keer openen.

🍎 macOS

Builds voor Apple Silicon en Intel. Niet ondertekend — macOS waarschuwt bij de eerste keer openen.

Debug-ondertekend, alleen stagenet — niet voor echt geld.