Unfoolablelight-client verified

Verified capability substrate · $NULL on Solana

TAKE NOBODY'S WORD FOR IT.

NULLIUS is a desktop where a window is a capability — an unforgeable, attenuable reference that confers exactly the authority it names and nothing more. Hand an AI agent a surface and you've handed it a budget it physically cannot exceed. Every action is a signed, verified turn the system cannot lie about — and a light client checks the whole history in one step. You don't trust the server. You check it.

nullius@devnet · light-client
> submit turn transfer 250 ∅ alice→bob
✓ COMMITTED receipt #204 · root a2f0c7…
> replay turn #204
✗ REFUSED freshness: nonce already spent
> verify(chain) # re-executing nothing
✓ UNFOOLABLE 204 receipts · trusts no executor

The capability kernel is real: ed25519-signed turns, HMAC-attenuated capabilities, hash-chained receipts a light client actually verifies. The playground runs that exact kernel in your browser. The Lean proofs, STARK proving and seL4 boot of a full deployment are faithfully represented, not reproduced — and this site says which is which.

Three layers. No new trust.

Everything you touch reduces to a kernel whose every transition is checked. Authority is something you show, never something you claim.

01 · Surface
The agentic desktop

Everything a human or AI agent touches: cap-confined surfaces, the web-of-cells, rehydratable snapshots. A window is a Cap{ Surface(cell), rights }. Progressive enhancement becomes progressive attenuation. Enter the surface →

02 · Kernel
The capability kernel

The object-capability core. One sentence carries it: a turn is the exercise of an attenuable, proof-carrying token over owned state, leaving a verifiable receipt. The kernel this site describes is the executor the node runs — the same file, in your browser.

03 · Substrate
Local to global, on seL4

One capability across a distance parameter. At n=1 it collapses to strong-local: immediate revocation, synchronous commit. On the network it flows to distributed with no seam. Read the substrate →

Three things only this substrate can do

Not features ported from elsewhere — categories that require an object-capability substrate with a verifiable history at once.

A window is a capability

A surface is the authority: a typed bundle of cap-gated affordances. An unauthorized action is refused in-band by the required ⊆ held gate, not by app good behaviour. Anti-cheat is free, because the cheat is unrepresentable.

A screenshot you re-open, live

A snapshot is a paused camera on a witnessed scene: it embeds a sturdyref behind a membrane. Two people open "the same" image and rehydrate two different, per-viewer, attenuated views. What you shared was never the pixels — it was the revocable right to renegotiate.

One capability, local to global

An seL4 capability and a NULLIUS capability are the same abstraction at two points on a distance parameter n. The bounds relax along n with no seam — same handle, same attenuate / delegate / invoke.

Cells · turns · receipts

Everything above rests on three objects. And on the visibility rule that makes privacy physics: you cannot read what you do not hold the capability for. Hover to reveal what your capability authorizes.

GET /api/cell/cell:treasury · presenting your cap
# authorized field — hover to decrypt
balance : 1,204,880 ∅ owner : 7fA2…e91c
# enemy vision — you hold no capability for this cell
fog[7,3] : ████████ fog[8,3] : ██████
01 / Cells
State behind its own rules

A cell holds balances, capabilities and named slots — plus a predicate over its own transitions the substrate enforces on every change. Nothing is ownerless. "A budget that cannot be exceeded" is just a cell whose predicate says so.

02 / Turns
Actions that show their warrant

An atomic batch of actions, ed25519-signed by its actor. Each presents a capability — narrowable but never amplifiable — and discharges every guard in scope. The whole turn commits or none of it does. Lineage: macaroons → biscuit → the proof system.

03 / Receipts
History you hand a stranger

A committed turn leaves Q — a receipt binding the entire post-state, with no field a tamperer can edit. Receipts chain by hash; a light client verifies a whole history by checking the chain, re-executing nothing and trusting no executor.

The protocol, in seven rungs

A light client cannot be fooled

Five properties a stranger learns by running the smallest possible check. The foil has a name — the pale ghost, a server presenting a state it never legitimately produced. It cannot pass.

A
Authority

Every state change is justified by an unforgeable, non-amplified, fresh token chain.

floor: ed25519 (the signature on each handoff), HMAC (caveat-chain tags). Enforced in this kernel — forge one in the playground.

B
Conservation

Per asset, the resource sum is identically zero — value only moves, never appears.

floor: integer arithmetic. Mints are issuer moves from a well cell that goes negative, so Σ = 0 by construction. Enforced.

C
Integrity

A receipt binds the whole post-state; a tampered field is rejected.

floor: SHA-256 collision-resistance (standing in for Poseidon2). Edit any field and the commitment no longer opens. The explorer flags it.

D
Freshness

No replay, no double-spend; a committed spend's nonce was fresh.

floor: a per-actor nullifier set. Replay a spent turn and it is refused. Enforced.

E
Unfoolability

A light client verifying a receipt chain learns A–D for the whole history; re-executing nothing.

floor: hash-chain soundness (standing in for FRI/STARK recursion), ed25519. verifyHistory() runs client-side.

5 guarantees · enforced in ONE executor that runs in both the node and your browser. The original pins each to a machine-checked Lean apex theorem; NULLIUS makes them true in running code and marks the formal layer honestly.
Honest seam. A full deployment machine-checks these in Lean and carries them through a real on-device STARK on seL4. Here they are enforced by real cryptographic code you can run and break, with the formal-verification and microkernel layers clearly marked as represented. Full delimitation on Verify.

Apps where the security property is the feature

Fog of war
You provably cannot peek

Fog of war is the membrane's per-viewer projection. To see a side's tiles you must hold the capability; a player holding only its own secret cannot construct the enemy's vision. Every move is a cap-gated verified turn.

pg-nullius
Your node is your Postgres

Reads are free SQL; writes are verified turns. A row's policy calls null_admits(token,'read',id) — the same decision the kernel makes, from the same capability token. Attenuation and revocation that RLS structurally can't express.

The organs
Real systems, one path

A line of credit is an attenuated capability (an over-line draw is refused). An encrypted group is one whose membership is physics. Each is an SDK noun on the same executor — no new kernel entry.

$NULL

The token of the NULLIUS substrate on Solana. Take nobody's word for it — including ours. The kernel is open and runs in your browser; verify before you believe.

CA not yet launched ⧉ copy

Touch it in five minutes

01 · the node
No install, just curl

The devnet is the same node the repo builds. Ask what produces its state, then faucet a cell:

curl -s nulliussol.xyz/status
# → state_producer:"lean"

curl -s -X POST nulliussol.xyz/api/faucet \
  -d '{"recipient":"cell:me","amount":1000}'
curl -s nulliussol.xyz/api/cell/cell:me
02 · break a turn
The rejection is the product

The playground runs the real executor in your browser. Stage a transfer, then overdraw, replay, or forge a capability and watch the substrate refuse you — no server round-trip for the decision. Then open the explorer and scrub any cell's history backward. Time travel is just reading receipts, because the receipts are the history.

Open playground