If you build with encrypted data, local-first sync, or AI agents that hold user secrets — you've hit the same bug. You replicate topology T, and audience A changes. That's the inversion. .me fixes it structurally.
Keywords: encrypted audiences, end-to-end encryption, E2E, local-first software, personal data store, user-owned data, zero-knowledge architecture, secret scoping, namespace resolution protocol, NRP, personal semantic kernel, data replication vs authorization.
The bug every builder hits
You do everything right:
- Data is end-to-end encrypted
- You host a replica, backup to second device, add offline sync
- You forward a task to another agent
And suddenly readability expands. Or the host can read it. Or you need a new permission system.
Formally:
replicate(T) → change(A) // the bug
Replication changes audience. Topology leaks into authorization. Every local-first, E2E, and agent framework that doesn't solve this ends up re-building ACLs on top of sync.
What we want is:
replicate(T) ↛ change(A) // T ⊥ A
Topology and audience are orthogonal. You can move data anywhere — new host, new device, new monad, backup — without changing who can read it.
This is The Algebra of Encrypted Audiences. Not a policy. A structural property of the kernel.
Why current stacks invert both
Most systems today:
identity = distributed (N fragmented accounts per platform)
data = centralized (locked to platform that captured it)
You have 12 logins, but your photos can't leave Google without breaking sharing.
The correction:
identity = centralized (one root)
data = distributed (T independent of A)
One seed. One identity function. Unconstrained topology.
In [.me](https://neurons-me.github.io/.me/):
identityHash(K) = keccak256("this.me/identity:v1::" + K.seed)
seed never leaves the kernel. Every context — work, family, agent — is me.as(context), not a new account.
How .me implements T ⊥ A, verified
This is not a whitepaper promise. It's source-verified behavior in the kernel:
const me = new ME() as any;
me.security _; // path-bound secret scope
me.security.keys.api("sk_live_xxx");
me("security") // undefined — root is stealth, not in public index
me("security.keys.api") // "sk_live_xxx" — readable with full path
me.explain("security.keys.api")
// → shows derivation chain, masks raw to unauthorized readers: ●●●●
-
_is structural secrecy, not a flag. The public index was never populated with that prefix.A / ¬Aat the storage layer. -
~resets derivation.__creates structural pointers that dereference without copying secrets. -
explain()is auditable disclosure, notconsole.loghiding.
You can now replicate(T) — backup the monad, mount it on another host, sync via NRP — and A doesn't change. No new ACL.
Benchmarks: secret-scope stealth holds at scale — secret scope p50/p95/p99 across node counts — and public + secret coexistence never leaks.
For agent builders: this is why your agents leak
If your agent holds user wallet, keys, memories:
- You put secrets in env / vector store
- You replicate conversation to another agent to help
- Audience just expanded to that agent + its host + its logs
You patched it with another proxy. You need me.wallet _ — a branch that computes internally, never resolves from public index, but me.profile.card -> me.wallet can still dereference it when authorized.
4 agents, same graph, 4 different answers to canProceed — without 4 copies. That's Robots That Understand Context.
User-centric resolution, not platform-centric
*Platform-centric:
*
resolve(request) = platform.scope(request) // platform is the boundary
.me-centric:
resolve(request) = me.graph(request) // user's graph is the boundary
You don't declare schema for a platform. You declare:
me.whatever.you.want("x")
And any surface that can resolve me://whatever.you.want — CLI, GUI, NRP mesh, another agent — can find it if it has audience.
This is Inverted Dependency Indexing + Namespace Resolution Protocol (NRP) — mesh-aware hop-by-hop resolution for me:// URIs, not DNS.
See: User Centric System and Centralize The Self, Distribute The Data
Stack: kernel, axioms, NRP, GUI
This is not another personal data store wrapper.
-
Personal semantic kernel: one value
methat is both callable and infinitely chainable.typeof me === "function"andtypeof me.profile.name === "function". -
10 axioms: Secret Root Stealth, Path-Bound Scopes, Noise Reset, Structural Pointers
__/->, Query as Event?, Tombstone-, Hash-chain integrity, LWW deterministic merge. All fire-tested:node tests/axioms.test.ts - NRP: Discover, score, forward, learn. Living network of monads.
- Demos + GUI: neurons-me.github.io
Start here
If T ⊥ A clicked in one second because you suffer it:
- Read Axiom of Distinction — 3 axioms, 60 lines.
- Read Algebra of Encrypted Audiences — the mechanism.
- Clone
.me, runme.security _yourself. Break it.
me is not a platform to learn. It's a paradigm to resolve into.
world → .me → meaning

Top comments (0)