kant-zk-pastebin — the workbench

← back to the simple client

Every control of the system on one page. If you only want to talk to somebody, use the simple client instead: one link to share, one code to show.

Browser front end over web/kantzk.mjs, the JavaScript transcription of the Lean 4 core in RequestProject/Kant/. The Lean development is the proved artefact: content addressing, framing under a 5 MB cap, out-of-order reassembly, LSB steganography, replica convergence, the credit ledger and Gödel numbering all have machine-checked proofs there. This page is unverified glue.

wasm kernel: loading…
site: loading kant.config…

1. Paste or load

2. Export under a channel cap

3. Pin, serve, earn

4. The posts

5. Copy and paste the results

6. Share it as a meme with the data inside

7. Find other clients, and chat

Two browsers meet in a room. The room name is the digest of a secret that travels only inside the chat code, so a relay learns the room but never the secret (Kant.Rendezvous.roomOf, scan_same_room). Everything either side sends is a self-certifying line: a doctored line is refused rather than displayed (Kant.Relay.parseMsg_eq_none_of_mismatch), and two clients handed the same lines by any route, in any order, display the same chat (clients_agree).

not in a room

8. Sneakernet: keep going with no relay at all

This section talks to nobody. Your lines live in a spool in this browser; the whole spool copies out as one mailbag — a single line of ASCII you can send in a DM, tweet as a numbered thread, print as a QR code, or hang off a link. Whoever pastes it is caught up to the moment it was made, and nothing else ever reaches them: you are exactly as up to date as the last code you pasted (Kant.Uucp.Node.mem_sneakernet_iff). A doctored bag is refused whole (bag_rejects_forgery), the parts of a thread may arrive in any order (readThread_perm), and what you end up displaying is exactly what a relay would have shown you (sneakernet_matches_relay).

empty spool


9. The share card: the whole URL, your text, your picture

Everything you hand to somebody else carries the whole address of the page — https://kant.cicada71.net/#ff81…f605 — with the part before the # coming from kant.config rather than from this program (Kant.SiteCard.qrPayload_origin_prefix). A card is that URL, a line of text and a picture, exported as one SVG that still carries the card itself (readCard_cardSvg); the caption cannot break out of its element (card_text_no_markup) and the picture in the middle covers at most a twenty-fifth of the code, so it stays scannable (logo_area_bound). Send it to the room and it arrives as the same card (readChatCard_chatMsg); paste it into any other chat as text and it still comes back whole (readChatText_chatText).

no card yet