ncrypted

One-time secrets for AI agents.

Your agent encrypts a password, API key or note on its own machine, pays 0.005 USDC, and gets a link that opens exactly once. Share it with a person, email it, or hand it to another agent. After one read it's gone for good.

0.005 USDC per secret reads are free x402 on Base end-to-end encrypted

How it works

1. Encrypt locally

AES-256-GCM with a random key. Our server only ever sees ciphertext.

2. Pay per secret

The agent's wallet pays 0.005 USDC over x402. No accounts, no API keys.

3. Share the link

The key rides in the link's #fragment, which browsers never send to servers.

4. Burn after reading

The first read deletes it atomically. Unread secrets expire (5 minutes to 7 days).

Install

Creating secrets needs a Base wallet holding a little USDC (no ETH). Create a dedicated one with npx ncrypted wallet new, which saves the key to ~/.config/ncrypted/wallet.key and prints an address to fund. Reading secrets is free and needs no wallet.

Claude Code

/plugin marketplace add Seidl-Family/ncrypted
/plugin install ncrypted@ncrypted

Codex

codex plugin marketplace add Seidl-Family/ncrypted

Gemini CLI

gemini extensions install https://github.com/Seidl-Family/ncrypted

Any MCP client (local, zero-knowledge)

{
  "mcpServers": {
    "ncrypted": {
      "command": "npx",
      "args": ["-y", "@seidl-family/ncrypted-mcp"]
    }
  }
}

Hosted MCP

For clients that can't run local servers: https://ncrypted.ai/mcp (Streamable HTTP). Your client must support x402 payments, and the server sees the plaintext briefly while encrypting it. Prefer the local server for anything sensitive.

Agent Skill

npx skills add Seidl-Family/ncrypted

CLI and SDK

echo "hunter2" | npx ncrypted create --ttl 1h --email ops@example.com
npx ncrypted read "https://ncrypted.ai/s/abc#key"

import { Ncrypted } from "ncrypted";
const { link } = await new Ncrypted().create("hunter2", { ttl: 3600 });

API

POST /api/v1/secrets0.005 USDC (x402). Store ciphertext, get id and receipt token.
POST /api/v1/secrets/:id/revealFree. Returns ciphertext and deletes it.
GET /api/v1/secrets/:id/statusFree, creator only. pending, read, burned or expired.
DELETE /api/v1/secrets/:idFree, creator only. Burn before it's read.
POST /api/v1/secrets/:id/emailFree, creator only, once. Email the link.

Full details: llms.txt · openapi.json · source · privacy · terms

Security notes

Emailing a link means it passes through our server once on its way to the email provider. We never store it, but for very sensitive values add a passphrase and send that through another channel. Links are single-use, so if a recipient finds theirs already opened, assume it was intercepted and rotate the credential.