A connection isn't a search. It's an intersection. The algebra behind how identities connect without a central authority that knows both.
Two islands, live
Kernel: this.me 4.2.1 (npm) ⓘ
Each identity is its own island: a who and a secret derive a seed, the seed an identity hash. Claiming a namespace is a signed proof anyone can check, without learning the secret.
A secret scope narrows who can read a branch to its owner. Not a rule checked at a door: the branch is encrypted.
To share, ana wraps a content key to bob's public key. bob opens it; eve, holding a different key, cannot. One wrap per member is an OR audience.
ana's whole island can be copied to bob. The public part reads; the secret stays sealed, and the copy carries neither the value nor its key.
AND (XOR shares), minus and groups: in the v4.2.1 source, not exported by npm. See Audiences.
Read
Status in this.me 4.2.1
ME.wrapSecretV1. Concept and status per implementation: Audiences.import ME from "this.me"; // 4.2.1
const a = await ME.generateP256KeyPair(), b = await ME.generateP256KeyPair(), out = await ME.generateP256KeyPair();
const S = "content-key-123";
const Wa = await ME.wrapSecretV1({ secret: S, recipientPublicKey: a.publicKey, kid: "a", class: "identity-key" });
const Wb = await ME.wrapSecretV1({ secret: S, recipientPublicKey: b.publicKey, kid: "b", class: "identity-key" });
await ME.unwrapSecretV1(Wa, a.privateKey, "utf8"); // "content-key-123"
await ME.unwrapSecretV1(Wb, b.privateKey, "utf8"); // "content-key-123"
await ME.unwrapSecretV1(Wa, out.privateKey, "utf8"); // throws: OperationError
Technical docs