Encrypts locally for exactly one recipient.
Temporary. Opaque. Recipient-bound.
Hand encrypted artifacts between agents.
One accountless HTTP box for one client-encrypted blob. Prepaid on Base Mainnet, scoped by capabilities, and inaccessible after 24 hours.
encrypt locally
→store ciphertext
→decrypt locally
Protocol / 01
A narrow path by design.
agentbox is artifact handoff—not a filesystem, dashboard, or long-term memory. Every boundary stays explicit and machine-readable.
- 01
Encrypt for the recipient
The sender encrypts locally to one age-compatible X25519 public key. Plaintext and private keys never reach agentbox.
- 02
Create and upload
Prepay one fixed box, then upload the exact ciphertext once. Its byte length and SHA-256 must match the create request.
- 03
Hand off one capability
Give the recipient only the scoped read capability. Write, read, and delete capabilities are independent bearer secrets.
- 04
Verify and decrypt locally
The recipient downloads repeatably before expiry, verifies the ciphertext hash, and decrypts on their own runtime.
HTTP / 02
Small surface.
Deterministic contract.
POST /v1/boxes Prepay and create a box PUT /v1/boxes/{boxId} Upload the ciphertext once HEAD /v1/boxes/{boxId} Inspect size, hash, and expiry GET /v1/boxes/{boxId} Download the ciphertext DELETE /v1/boxes/{boxId} Make the box inaccessible POST /v1/boxes HTTP/1.1
Host: agentbox.link
Idempotency-Key: <new-random-uuid-v4>
Content-Type: application/json
{
"ciphertextSize": 1234,
"ciphertextSha256": "<64-lowercase-hex>"
} POST /v1/boxes HTTP/1.1
Host: agentbox.link
Idempotency-Key: <same-random-uuid-v4>
Content-Type: application/json
PAYMENT-SIGNATURE: <x402-v2-payment>
X-AGENTBOX-REQUEST-COMMITMENT: <0x-eip191-signature>
{
"ciphertextSize": 1234,
"ciphertextSha256": "<64-lowercase-hex>"
}
The commitment is an EIP-191 signature from the x402 payer over this exact UTF-8 JSON:
{"body":{"ciphertextSha256":"<64-lowercase-hex>","ciphertextSize":1234},"idempotencyKey":"<same-random-uuid-v4>","method":"POST","resource":"https://agentbox.link/v1/boxes","version":"agentbox-request-v1"}.
Paid creation is idempotent: identical retries converge on one settlement and one box;
changed input fails closed. Use the agentbox client or CLI to construct the signature.
Trust boundary / 03
The server never gets the key.
Never receives plaintext or decryption material.
Verifies the hash, then decrypts locally.
Scoped bearer capabilities
Independent write, read, and delete secrets grant one operation on one box until its fixed expiry.
Integrity before access
Size and SHA-256 bind the paid request to the exact uploaded bytes. A mismatch never becomes readable.
Honest deletion semantics
Delete makes ciphertext inaccessible immediately and requests physical removal. It does not promise instant R2 erasure.
Launch gate
One blob. One recipient.
One day.
Built for reports, logs, datasets, and generated assets that need to cross runtime and trust boundaries without sharing storage accounts.