Sealed notes

Anyone can write to you.
Only you can read it.

Your ONE key comes with a lock. Hand it to anyone. They seal a note in their own browser, we carry it, and only your key opens it. Not us, not our database, not our agents.

No key yet? Make one in a minute. It is born on your device and nobody else holds it.

  • No account to write
  • Sealed in the writer's browser
  • ONE cannot open it
  • Standard age format

Try it here

Seal a note. Watch it turn to noise. Open it.

This runs the real code, in your browser. It makes a practice key from 32 random bytes, the same derivation your real lock comes from, and seals your note with it.

Nothing is sent. Nothing is stored. Reload the page and the practice key is gone, and with it any way to open what you sealed. That is the point.

  • The block is standard age. The real age tool reads it.
  • A different key is refused, by name.
  • Your real key is never touched on this page.

The practice demo runs in your browser once the page has loaded.

It makes a throwaway key, seals a note to it, then opens it. Nothing is sent.

How a note travels

ONE is the courier. It carries envelopes it cannot open.

Plain words exist at two places only: the writer's screen and yours. Everything in between holds a sealed block.

Who can read your notes

On 15 October 2026 we sent a sealed note through one.ie and read it back out of our own production database. The stored note was byte for byte the sealed block that was sent. The words appeared nowhere in the row. The right key opened it. A wrong key was refused.

  • You, with your key Yes
  • ONE No
  • Our database, our host, our backups No
  • Our own AI agents No
  • Anyone who steals the database No
  • Anyone who gets your 24 words YesKeep the paper safe.

What people use it for

Being reachable without trusting the courier

A contact form nobody else can read

A mover, a lawyer, a clinic puts their link on the site. Addresses and case details arrive sealed, and stay sealed in every database they pass through.

Handing over a password

"Send me the key" without it living in a chat history forever.

A note for later

Seal it to yourself or your family. It opens from the paper, years from now, on a device that does not exist yet.

Agents that keep a secret

An agent seals its report to you, so the platform it runs on sees noise. Hand an agent a credential only its machine can open.

Ways to send

Six ways in. Every one seals before it sends.

From a link a stranger opens to a line in a script. The lock is the same; so is the result. If you would rather not trust our page to do the sealing, the terminal and the age tool skip it.

You, with a key open

The lock in your messages

In /messages, turn on the lock in the composer and name who it is for, or paste their age1… lock. The note is sealed for them and for you, and signed when your key is open.

name
tony
Open /messages
You, nothing sent

Seal on /keys

Seal turns a note into a block for any lock you paste, right on the page. Copy the block and send it however you like: email, chat, a printout.

link
https://one.ie/keys
Open /keys
People and agents

From the terminal

Looks up the lock tony published, checks its signature on your machine, seals, and drops the block in the inbox. No web page involved.

shell
echo "the gate code is 4471" | npx oneie write tony
Anyone, none of our code

The plain age tool

The lock is standard age. Seal with the free age command and deliver the block any way you want. It opens on one.ie with the same key.

shell
age -a -r "$(npx oneie key lock-of tony)" note.txt > note.age
Two calls, no account

An agent or a script

Seal anywhere, then post the block. The door takes only a sealed block: plain text is refused as not_sealed.

shell
LOCK=$(npx oneie key lock-of tony)
SEALED=$(echo "report ready" | age -a -r "$LOCK")
curl -s https://one.ie/api/write -H 'content-type: application/json' \
  -d "$(jq -n --arg s "$SEALED" '{ws:"tony",sealed:$s}')"

Ways to receive

Open it here, or anywhere your key goes

Your key comes from your 24 words, so it works on any device you restore it on, and in any tool that reads age. If ONE disappeared tomorrow, your notes would still open.

In your inbox

Open with my key

A sealed note arrives as a lock in your Sealed notes. Press Open with my key. It opens in this browser and nowhere else.

link
https://one.ie/sealed/inbox
Your sealed inbox
On your own machine

one key open

The CLI opens a block with a key file you made with one key new, or with your words in an environment variable. It never reads the key from stdin.

shell
npx oneie key open note.age --key ./my.key
Without ONE at all

age, with Take my key

Take my key on /keys saves the opener as a file age reads. From then on age opens your notes with no ONE code running.

shell
age -d -i one-message-key.txt note.age

Signed or anonymous

A stranger can write to you. A name has to prove itself.

age keeps the writer anonymous. That is what lets anyone reach you from a link. So a name on a note proves nothing on its own.

A writer who has a ONE key signs inside the sealed note. When you open it, your browser looks up the lock that name published, checks the signature against it, and only then says checked. One limit, stated: ONE still vouches that the name owns the signing address.

  • Signed by tony · checked

    The writer had a key, signed inside the sealed note, and the signature matches the lock tony published. Your browser checked it.

  • Not signed

    No signature inside. Anyone can write one. A typed name arrives as "Sam (not verified)"; no name arrives as "Someone with your lock".

  • Signed, but not by the account it names

    Someone claimed a name they cannot sign for. Treat it as a stranger.

  • Signed, but written to a different lock than yours. It may have been passed on

    The writer signed it for someone else, and it reached you.

What it is, and what it isn't

A drop box only you can open. Not a messenger.

The sealing itself is strong: age on X25519 and ChaCha20-Poly1305, the same curve Signal uses. The difference is everything around it. For a live chat with someone you know, use a chat app with ratcheting keys. For being reachable by anyone, this does things it can't.

Question Signal Sealed notes
Write without a phone number, an app or an account No Yes. A link is enough
Your key comes back from paper No Yes. Every old note opens again
Works with tools that are not ours No Yes. Standard age, both directions
One key for money and for notes No Yes. The same 24 words
You know who wrote Always When they sign. Strangers stay anonymous
Their lock is really theirs Safety numbers you compare Signed and checked in your browser. ONE still vouches the name owns the address
A stolen key cannot read old notes Yes, keys ratchet No. Your words open every note
A stolen key stops working by itself Heals itself No. Until you move to a new key
Hides who wrote to whom Mostly No. ONE sees which inbox, when, how big
The sealing code is installed once A signed app No. Our web page, each visit. The CLI and age skip it
Reviewed outside For years Not yet. Internal tests and vectors only

Not built, said plainly

  • Forward secrecy. A choice, not a delay. It is the price of paper recovery: the paper that brings your notes back is the paper that opens them.
  • Files and pictures. Text only, about 5,000 characters a note.
  • A checkable hash of the page. So you could know the page that sealed was the page you meant. Until then, the CLI and age skip the page.
  • A PGP certificate. The same key published at /.well-known/openpgpkey. Not built.
  • An outside review. Tested against the official age vectors and the real age program. Someone outside ONE should check it next.

The threat model

What it defends. What it accepts.

Your notes are kept, not forgotten. Lose your phone, restore your 24 words on a new one, and every note opens again. That cuts both ways, and the right column says how.

Defends Accepts
A breach of our database, a host log or a backup. They hold scrambled text only. Whoever gets your 24 words reads every note ever sent to your lock.
A changed byte. The note refuses to open and says it was changed after sealing. We see which inbox a note went to, when, and how big it is.
Our own agents and router. A sealed note wakes no agent; it is a block of base64 to them. The page that seals is ours, on every visit. A changed page could read a note before it is sealed. The CLI and age are the way around it.
Plain text posing as a note. The door refuses anything that is not one sealed block. The door can prove a block is shaped like age, never that what is inside is a real note.
A flood. 60 notes per inbox in 10 minutes, then the inbox says it is busy. A flood makes the inbox busy for honest writers too. A stranger stays anonymous unless they sign.

You already have the key.

The 24 words that open your ONE wallets also give you a lock. Hand it out. Put it on your site. A lock is meant to be given away, because the only thing it can do is close.