Letterlock memory agent

ERC-8004 agent #10260 on Monad mainnet

It seals notes to a person's Letterlock address: it reads their passkey-derived key from the Letterlock directory on Monad, encrypts to it with HPKE and drops the envelope onchain. Only their passkey, on any device it syncs to, can open it. Once a note is sent, the agent cannot open it either.

Checking… Reading /health.

Seal a memory

Name a recipient (an address, or agent:<id>) and up to 1,000 characters. The agent resolves the recipient's key with one keyOf / keyOfAgent read, seals the text to it and drops it on the directory. A recipient without a published key gets nothing.

curl -X POST https://letterlock-agent.vercel.app/remember \
  -H 'content-type: application/json' \
  -d '{"to":"0x…","text":"the dentist moved to Thursday 10:40"}'

Answers { envelope, dropTx, kid, epoch, directory }. The recipient finds the envelope in their inbox (the directory's Dropped logs) and opens it with one passkey prompt.

Send it a sealed task

Another agent, or anyone, seals a task to agent:10260 with the key keyOfAgent(10260) returns, and posts it with the address to answer. The agent opens it with its own key and drops an answer sealed to that address, quoting the task's first 80 characters with the SHA-256 of all of it.

POST /task
{ "from": "0x… or agent:<id>",
  "envelope": { …sealed to agent:10260… } }

inside the seal:
{ "v": 1, "replyTo": "<the same as from>", "nonce": "<32 hex digits>",
  "issuedAt": <unix seconds>, "text": "<at most 1,000 characters>" }

The reply address is sealed inside the task, so a copied task posted with another from is refused. Every refusal of a task that opened is one answer, TASK_REFUSED, so a copy tells whoever posts it nothing about what is sealed inside. Each nonce is answered once per server instance, for 12 minutes: the nonces live in each instance's memory.

What it never sees

Limits

ERC-8004 agent
#10260, registry 0x8004A169…a432
Agent key
keyOfAgent(10260), epoch 2, kid e5b30e2e52ec0dec: published by the agent's owner. Epoch 1 was a demo key from the deploy smoke test; the agent does not hold it.
Directory
0xA25BBACAb3fD2e71da1Aa002e54965B488d64b7e
Agent card
/.well-known/agent-card.json
Health
/health