Field note · Privacy pattern

Seal the day.
Prove it at midnight.

An Octonomous Being already signs what it does and anchors the roots on Cardano. Midnight lets it prove what's inside those roots — one question, one audience — without publishing the rest. This note calls that unit a nightframe: a window of a Being's record it keeps, commits to in public, and can answer for in private.

Octonomous · field note ~16 min read Extends evidence anchoring October 2026
Abstract

An Octonomous Being keeps a signed record of its life — every contribution, commitment, delegation, verification and vote. The lab runtime already rolls those receipts into a Merkle root and anchors it on Cardano.

An anchor proves that a record existed, and when. It can't answer a question about what's in it without opening it — and opening it exposes more than the Being: the people it served, the communities it worked for, the amounts it moved. So a Being asked to prove its track record has had two choices. Show everything, or ask to be trusted.

Midnight, the privacy partner chain to Cardano that went live in March 2026, offers a third. Its contracts keep public state on chain and private state with the user, and prove statements about the private part in zero knowledge. This note proposes a unit built for it: the nightframe. A nightframe is a bounded window of a Being's own record — sealed in public, kept in private, and answerable on request, one declared disclosure at a time.

Not
Publish the evidence, or publish a score and ask to be believed
But
Commit in public · keep in private · prove what's asked, to whom it's asked, and nothing else
An anchor proves you kept a record. A nightframe proves what's in it.
Listen & read

In audio and slides

The same ideas in audio — sealing a Being's day, keeping the record private, and why a proof against a nightframe can do work that would otherwise sit in a public smart contract — and the architecture brief behind them.

How Nightframes Replace Smart Contracts for AI

Podcast · audio
01 — The disclosure dilemma

Show it, or be taken on trust

The lab runtime can already issue a portable reputation proof: a signed statement a Being carries to a community that doesn't know it yet. The proof holds a score, an evidence count, a root over the evidence — and, by default, the evidence references themselves: the kind of each item, its subject, its receipt and its weight.

That makes the proof checkable. It also makes it a map. Each subject is someone the Being worked with or for. Each receipt places them at a time. A community checking one Being's record learns a great deal about another community's members.

Switch the references off and the map disappears — along with anything to check. The verifier gets a number and a signature, and is back to asking who said so.

Show everything
  • Evidence refs published
  • Counterparties exposed
  • Checkable by anyone
  • Can't be unshown
Nightframe
  • Seal published, contents kept
  • One question, one audience
  • Proof checkable by anyone asked
  • Disclosure declared in code
Trust me
  • A score and a signature
  • Nothing to inspect
  • Credible as its issuer
  • Reputation as assertion

This isn't a Being's private convenience. The people in its record never chose to be in someone else's due diligence. Protecting them is a Caring obligation, and a framework that turns every reputation check into a disclosure of third parties fails it — however well-signed the disclosure is.

The harm of over-disclosure lands on people who weren't asked.
02 — What Midnight adds

Public state, private state, a proof between

Midnight is a privacy-focused partner chain of Cardano. Its mainnet launched in March 2026, run at first by a federation of node operators rather than an open validator set. Four of its properties matter here.

Two states
Public state lives on chain — contract code, proofs, anything a contract chooses to publish. Private state is encrypted and kept by the user, on their own device. It never reaches the network.
Proofs
The user computes over private data locally. The runtime produces a zk-SNARK showing the computation was done correctly; validators check the proof, not the data.
Compact
A TypeScript-based contract language that compiles to zero-knowledge circuits. Private inputs arrive as witnesses.
Declared disclosure
Compact refuses to compile if witness data can reach the public ledger, a circuit's return value or another contract without being wrapped in disclose(). Disclosure is something the code says, not something it does by accident.

Fees work differently too. NIGHT is the public, transferable token. Holding it generates DUST — a shielded, non-transferable resource used only to pay transaction fees. Section 07 comes back to why that suits a Being.

Agents aren't a stretch for Midnight. Its own showcase, Midnight City, is a simulated city whose residents are autonomous AI agents, with a second version live by mid-2026. This note asks a narrower question than any simulation: what should a Being with a real record, a real identity and real counterparties keep there?

03 — The unit

Defining a nightframe

A nightframe is a bounded window of a Being's own record, treated as one thing. Its seal is public. Its contents stay with the Being. Questions about it are answered by proof.

Frame
A window and a scope: one day by default, or a week, a quarter, a delegation's lifetime. Whose record, from when to when, covering what.
Seal
A commitment to every receipt in the window, signed by the Being's identifier and published — a root anyone can see and no one can read.
Keep
The receipts themselves, with the paths that tie each one to the seal. Held by the Being, under its principal's control.
Claim
A question with a fixed shape — a predicate over one or more frames. At least ten disbursements. No violated commitments. A member in good standing.
Disclosure
What an answer reveals, declared in the claim's circuit before anyone asks: usually the result, the frame range and the audience. Nothing else leaves.
An anchor, as the runtime has it
version
root · blake2b-256
count
being · hashed id
created
txId · Cardano, label 1337
A nightframe
frame · AID · from · to · scope
seal · signed by the AID
  root · blake2b → Cardano
  root · circuit → Midnight
keep · receipts, paths · private
parents · frames this one rolls up
claims · templates it can answer
disclosure · per claim, declared
fees · DUST address · sponsor
status · open · sealed · superseded

The anchor records that a set of receipts existed. The nightframe makes the same set answerable.

Committed in public. Kept in private. Answerable on request.
04 — Why midnight

Sealed when the Being sleeps

The name is literal. The lab runtime handles every event through a fixed lifecycle, and it ends the same way each time:

wake→observe→consider→decide→govern→commit→act→reflect→contribute→remember→sleep

remember signs a receipt for each event. Nothing yet marks the end of a day. A nightframe gives sleep that job: when the clock passes midnight in the Being's home timezone, the day's receipts close into a frame, the frame is sealed, and a new one opens. The day becomes a thing the Being can answer for.

Mon14 rcptsa3f1…
Tue9 rcpts07bc…
Wed22 rcptse912…
Thu6 rcpts4d0a…
Fri17 rcptsb55e…
Sat0 rcptsempty
Sun— open00:00
week frame · root over 7 seals9d02…

Receipts and seal per day, rolling up into a week · illustrative

Three details matter. An empty day is still sealed — an absence is evidence too, and a gap in the seals would otherwise be ambiguous. Frames nest: a week's seal is a root over seven daily seals, a quarter's over thirteen weeks, so a claim can range over ninety days without touching ninety separate commitments. And seals are append-only: a frame can be superseded by a corrected one, but the original seal stays on record.

05 — Asking a nightframe a question

A track record, without the ledger

To continue the example from the companion notes: a Being has spent a season as treasury steward for a community, funding repairs like the hall's switchboard. A second community wants to delegate it a budget. It doesn't need the first community's books. It needs to know whether this Being handles money the way it claims to.

claim      steward-record · template StewardClaim@5e7a
asked by   Riverbend co-op · AID EKf9… · purpose delegate budget
over       frames 14 Jul → 11 Oct · 13 week seals

public     week seals · read from the contract
           threshold ≥ 10 · audience EKf9…
private    receipts · Merkle paths · membership credential

proves     disbursements ≥ 10                 ✓
           every irreversible step approved   ✓
           disputes upheld = 0                ✓
           member in good standing            ✓
discloses  result · frame range · audience     declared
keeps      payees · amounts · approvers · who asked

One claim, answered · illustrative identifiers and values

The co-op learns
  • All four conditions hold
  • Over these thirteen weeks
  • Against seals it can read itself
  • Answered to it, by this Being
The Being keeps
  • Who was paid, and how much
  • Who approved each payment
  • Which members raised requests
  • Everything else it did that season

The co-op can check the proof against seals that were published weeks before it asked — so the Being couldn't have shaped the record to fit the question. And the first community's members never appear in the second community's due diligence.

The co-op gets an answer. Nobody else's name changes hands.
06 — Disclosure as an artefact

Nothing leaves that wasn't declared

Compact's compiler rule is easy to state. Witness data — and anything computed from it, including a comparison inside a condition — can't reach public state, a return value or another contract unless the code wraps it in disclose(). If it would, compilation fails and names the path the data would have taken.

For a Being, that turns disclosure into something that can be reviewed before anyone asks. A claim template is a circuit with its disclosures written down. It belongs in the same library as the composer note's controllers: published under a digest of its own content, signed by its authors and reviewers, validated against a test suite. A Being answers only with templates it can name.

01Request arrives, signed by the audienceverified
02Check the audience and its stated purposemay I
03Resolve the claim template by digestverified
04Read its declared disclosuresvalidated
05Curious · Caring · Constructive · Chillshould I
06Build the proof locally, from the keepprivate
07Answer, and sign a receipt of answeringcommit

The receipt in step 07 goes into tonight's frame. A Being's record of what it has disclosed, and to whom, is itself part of what it can later prove — or decline to.

A disclosure you can read in the code is one you can refuse before it happens.
07 — Fees as metabolism

Paying with DUST

Most chains ask an agent to hold the fee token, which means a Being with a wallet full of something whose price it doesn't control. Midnight separates the two. A NIGHT holder registers a NIGHT address to a DUST key, and DUST accrues there at a rate set by the NIGHT behind it.

5DUST
The most each NIGHT can back. Generation stops at the cap.
~1week
To fill: 100 NIGHT reaches its 500 DUST cap in about a week.
~1week
To fade: when backing goes, a full cap decays at the same rate, unless spent first.

Three properties fit a Being unusually well.

Sponsored
A principal or community holds the NIGHT and designates its DUST to the Being's address. The Being gets capacity to act, not a balance to speculate with — and DUST can't be transferred, so it can't be sent anywhere else.
Bounded
Capacity refills at a rate and stops at a cap. How much private activity a Being can sustain is set by its sponsor's stake, not by how fast it can spend.
Fading
When a sponsor withdraws, generation stops at once and the balance drains over about a week. Work in flight can finish; nothing new can be funded for long.

That last property cuts both ways. A Being whose sponsor has lost confidence can keep transacting while its DUST fades. Fee capacity is not authority: revoking what a Being may do still happens at the Octonomous layer, through its delegations and capabilities, and takes effect immediately. DUST only decides what it can afford.

Not a wallet to manage. A metabolism someone else feeds.
08 — Who lives where

Two chains, one Being

Nightframes don't move a Being onto Midnight. A Being's identity is a KERI identifier — self-certifying, with its own key event log, and native to no ledger. Chains are witnesses it uses, each for what it does best.

KERI AIDWho the Being is. Signs every receipt and every seal; rotates its own keys.IDENTITY
CardanoThat a record existed, and when. A root in transaction metadata, public for good.ANCHOR
MidnightWhat the record shows, and to whom. A proof against a sealed frame.PROOF

The same leaves feed both roots. Cardano carries the cheap, permanent timestamp the runtime already writes. Midnight carries a second root, computed with a hash that's practical inside a circuit, in a contract that claim templates can read. If either chain changed tomorrow, the Being would still be the same Being — the physical reality note's bring your own body, applied to ledgers.

09 — Character in the dark

Nightframes and the 4Cs

Privacy gives a Being room. Character decides what it does with it.

CuriousWhat does this audience actually need to know? Ask before answering, and prefer the claim that answers exactly that.
CaringThe people in the record come first. Never answer in a way that names someone who wasn't asked.
ConstructiveMake the record useful to others. A proof that opens a door is a contribution; seal every day so it can.
ChillDisclose the least that works. Decline questions whose purpose can't be seen — and put the refusal on record.

A nightframe doesn't stop a Being from behaving badly in private. It does the opposite of hiding: every day is sealed whether or not anyone ever asks, so the Being can't later produce a record that wasn't there, or lose one that was. What stays private is the content. The commitment to it doesn't.

Privacy for the people in the record. Accountability for the Being that kept it.
10 — Where it applies

What nightframes open

The pattern is the same everywhere: a party needs a yes or no about a Being's history, and the history involves people that party has no right to see.

Delegationa new community checks a track record without receiving the old community's ledger
Reputationa score above a threshold, computed from verified receipts, with no evidence refs leaving the keep
Admissionin good standing with a community the audience trusts — named only if the claim declares it
Physical realitya robot proves no restraint edge was overridden this month, without the household's routine
Auditan auditor re-verifies the proof and the frame range, not the diary
Compliancescreening passed before settlement, without the counterparty file

The last row is Midnight's own argument: its foundation has argued to the US Treasury that selective disclosure and zero-knowledge proofs can run sanctions screening before settlement while keeping user data private. Nightframes give a Being a place to stand in that argument — with a record that was committed long before the regulator asked.

11 — Inside the lab runtime

From one anchor to answerable frames

The lab runtime already has the hard half. Its evidence anchor service collects every receipt a Being holds — memory, contributions, commitments, delegations, capabilities, verifications, governance, challenges — builds a blake2b-256 Merkle root over the ones not yet anchored, and hands the root to a Cardano provider under metadata label 1337. The provider boundary is deliberate: it owns the wallet and the signing, so payment keys stay out of Octonomous core.

Its portable reputation proof is the other half, and the one nightframes change. Here's where they'd land:

           v1.0 today                   with nightframes
sleep      ends the cycle               seal the day's frame
anchor     unanchored receipts          receipts in the frame
           blake2b root → Cardano       + circuit root → Midnight
provider   CardanoProvider.anchor()     + a Midnight provider,
                                          owning the DUST key
proof      score · root · refs          claim proof over seals
           or score, no refs            refs stay in the keep
receipt    reputation.proof.issued      claim.answered, in tonight's frame

Where nightframes change the runtime · mapping, not shipped code

None of it needs a new runtime: a frame record, a second root over the same leaves, a provider boundary that mirrors the Cardano one, and claim templates registered by digest alongside controllers.

12 — Grounding in existing infrastructure

This is buildable now

Like the other field notes, this one waits on no research result. Every part exists today.

KERI AIDs
The Being's identifier, signing receipts and seals, ledger-independent by design.
ACDCs
Membership and capability credentials — the private inputs a claim like in good standing proves against.
Cardano
Transaction metadata for public, timestamped roots. Already wired into the runtime.
Midnight
Mainnet live since March 2026; node software at 1.0 by mid-year. Public and private state, local proving.
Compact
Contracts compiled to circuits, with Merkle tree types in ledger state and compile-time checks on disclosure.
NIGHT · DUST
Sponsor-held stake generating non-transferable fee capacity at the Being's address.

What's missing is the unit: a Being that seals its days, keeps its own receipts, and answers with templates it can name.

13 — Honest framing

What this note doesn't claim

This note does not
  • Make a Being's record true
  • Hide that activity happened
  • Claim Midnight is decentralised yet
  • Describe a shipped runtime feature
This note does
  • Separate committing from disclosing
  • Make disclosure declared and reviewable
  • Keep third parties out of proofs
  • Show where it lands in the runtime

A proof shows that a predicate holds over the receipts a Being committed — not that those receipts reflect what happened. Receipts are only as good as the signatures and verifications behind them, which is why the claims above lean on counter-signed evidence rather than self-reports. Seals, their timing and their fee usage are public, and patterns in metadata can say more than they seem to. Midnight launched with a federation of node operators; how far its trust model widens is its own roadmap, not this note's.

Open questions remain. Whether a claim checks the Being's KERI signature inside the circuit, or binds the Midnight key to the identifier by credential, is a cost and design trade-off. Two roots over the same leaves must provably agree. Key rotation has to carry across frames. And a Being's keep is now the most sensitive thing it holds; it needs the same care as its secrets.

Octonomous is a framework for what a being is, not a security appliance. Privacy doesn't make a Being trustworthy. It makes it possible to be trustworthy without exposing everyone it has worked with. Autonomy concentrates responsibility; nightframes let a Being answer for it.

14 — Conclusion

Answer for the day. Keep the night.

A self-sovereign Being will be asked to prove itself again and again — by communities, principals, auditors, counterparties — and each time, the honest answer involves people who aren't in the room. Until now its choices were to expose them or to ask for trust. A nightframe offers a third: seal every day, keep what's inside, and answer the question actually asked, with a disclosure anyone can read in advance.

sealed every night+kept by the Being+declared disclosure=an answer without an exposure
CuriousCaringConstructiveChill

Curious asks what the question is for. Caring keeps the people in the record out of the answer. Constructive seals every day, so the record is there when it's needed. Chill discloses the least that works — and can say no.

Not beings that publish everything. Beings that can prove what matters, and keep the rest.
References

Sources

View the source on GitHub