the kandi bar
your kandi
string beads into a bracelet, name it, and hand it to a friend. it lives in this browser. no account.
what someone made for you stays yours. it never trades.
reading your arms…
nothing leaves your arm until you say you handed it over.
your arms
tap a beadright · tradescrossingleft · keepshanded over
kandi://localStorage/bkandi
left arm · rcv = true → gift, cross = refused by code
| arm | by → for | beads |
|---|
handshake pipeline · KND1
store · read from this browser, now
verify · no trust in this page needed
- localStorage.getItem('bkandi') → the rows above
- fnv-1a/32 over KND1|maker|for|ts36|beads, base36 == the sixth field
- a checksum, not a signature: it catches a typo, not a forgery
the whole bar
🍬 the kandi bar
the kandi bar — make it, name it, gift it, cross it, show it
String beads, name it, then hand a line of text to someone you
already talk to. Nothing leaves your arm until you say you handed it over. Show is a preview
link, not proof they are the only holder. This browser keeps your arms; there is no inbox and
no account. Your first kandi is already on your left arm.
make it. name it. do the handshake. peace, love, unity — and on
respect, the kandi crosses. right arm trades, left arm keeps, and the crossing doesn't move until
something lands in your hand. no feed, no room, nobody's inbox — the string goes hand to hand down
whatever channel you two already share, and the moment it lands it's theirs. what somebody made FOR
you never re-trades: no gift button, no crossing button, ever, on that arm — that much really is
code. and a string is a copy, not a token: once you've handed it over you can't un-hand it, which
is exactly why the piece leaves your arm when you give it.
Format:
KND1|maker|for|ts36|beads|fnv —
beads as [0-9] color indices and [A-Z] letter beads; FNV-1a/32 over the payload, base36.
A checksum, not a signature — it catches a mistyped string, not a forged one, and a maker
name is a claim, never an attestation. This page makes no outside request on load. Ruled
2026-08-26: rails-badge.js paints a status BAKED at build time from a real
get_info read (head 516799778, 2026-08-26) and prints that bake's date, so a stale
bake advertises its own staleness; it POSTs {} to eos.api.eosnation.io
(falling back to eos.greymass.com) only when a reader taps ↻ — that request
carries no kandi and no soul name, but your IP, User-Agent and its timing reach a third party, which
is why it is now yours to choose. The only other request is lang.js GETting
lang-corpus.json same-origin, and only when your language is not English. Receipt: a
network capture of this page records zero cross-origin requests on load, and exactly one after the
tap. State is localStorage only (bkandi written here; the riders own
bregister, blang, btranslated_pref, bnr_rails_pin),
no cookies, no sessionStorage, no IndexedDB, and no XHR, WebSocket, sendBeacon or analytics tag
anywhere in the chain. Gift, cross and show all terminate in the OS clipboard — the carrying is done
by the person, and "show it" copies a #k= fragment, not a query, so a
shared piece never enters the host's request log; it does still put the maker and made-FOR names in
the opener's address bar and history, because the piece IS its seed. Arriving with a fragment only
pre-fills the receive box and never writes storage. No DM transport, no relay, no inbox, no video:
open, not built, and said plainly. Clipboard write success is not a receive receipt. Animation
never retires a piece; a deliberate local handoff writes the full export to the memory line first.
A Show link is a copyable preview, not exclusive gift evidence. Crossing is two local handoffs,
never an escrow. Names may use letters from any language; bead letters stay [0-9A-Z]
and KND1 is not silently reinterpreted. Names are rendered as text, never markup. Digital kandi
copies — the culture's answer is the retirement rule, so a completed gift removes the piece from
your arm and keeps a memory line, the same shape as the corpus's withdrawal law.⚗ THE COMPOSER — string it
Beads: tap colors, or type a word — letters become letter-beads.
Then name it: who you are (optional), and who it's for (only if it's made for
someone — the dedication rides with the copy they receive). Either way it strings onto your right
arm, because it is yours until you gift it; the made-FOR law binds the copy they receive.
Letters are white beads, like the
real thing — tap a colour to thread one in, or turn on thread colour and every word comes out alternating.
🫱🫲 THE THREE ARMS — right trades, left keeps, the crossing swaps
The etiquette, enforced as written in the mUseUm: tradeables ride the
right arm; keepsakes and gifts received ride the left and never re-trade; never ask for
a specific piece; and what you gift leaves your arm — a memory line stays, history kept.
RIGHT ARM — tradeable, and gifts waiting to go
LEFT ARM — keepsakes
THE CROSSING — offered, and only for another piece
Some kandi you would never give away. Offer it to the crossing
instead: it stays yours until you paste their piece here. The swap happens in this browser only
— there is no escrow and no one in the middle.
on respect, the kandi crosses. this is the arm for the piece you
would never hand over — it does not move until something lands. what comes back rides the left arm
in this browser, because it was given to you.
Mechanics, stated plainly: a crossing is TWO one-way handoffs
the page performs locally, not an escrow — there is no third party and nothing to trust but the floor.
Your side completes at the instant you paste theirs: your piece retires to the memory line and theirs
is written to
S.left with rcv:true, so it can never re-trade. Same KND1
string, same FNV-1a/32 checksum, same retirement rule as the gift — a copy you already handed over
cannot be un-handed, which is why the piece leaves your arm rather than being marked "traded".Hand them your string, paste theirs. The swap happens the moment
you paste — yours retires to the memory line, theirs rides your left arm in this browser
and never re-trades.
YOURS — hand this over
THEIRS — paste what they are crossing to you
🤲 RECEIVE — through interlocked hands
Paste a kandi string somebody handed you. Look first. Keep is a second tap —
received kandi then rides your left arm and never re-trades.
Look first, then keep
this is the piece in your hands — keep it only if you want it on the left
decode-only preview. Keep writes
rcv:true to S.left. Same KND1 is idempotent. Show #k= is not exclusive title.
Limits of this bar
This page never sends a kandi to anyone. You copy text and carry it. A Show
link is a preview, not proof only they have it. Another tab of this same browser can change what
is saved here.
no inbox, no escrow, no take-backs — the string is a copy you walk across
the floor.
No remote atomic exchange. Crossing is two local handoffs. Clipboard
write ≠ received. Show
#k= is a copyable preview, not exclusive title. Checksum ≠
signature. localStorage only. Same-origin writes use a Web Lock, a fresh validated snapshot and one storage write. Browsers without Web Locks show saved arms read-only. Older open versions do not take this lock: reload every kandi tab after an upgrade. Animation does not commit retirement.