BlindDrop

The Local API Key Vault for AI Agents

New release

BlindDrop for macOS

Unlock your vault and manage keys, connections and agent sessions from a Mac app.

The BlindDrop macOS app: connections on the left; for the selected one, the request BlindDrop sends, the secret it uses, and recent use by agents.

Install BlindDrop

$ npm install --global --prefix "$HOME/.local" \
  https://github.com/IluvatarLabs/blinddrop/releases/download/v0.3.0/blinddrop-0.3.0.tgz

Paste that in a macOS or Linux terminal. Requires Node.js 22.13+.

Add ~/.local/bin to your PATH. Other versions are on the releases page.

What Does BlindDrop Do?

BlindDrop lets agents use your API keys without ever seeing them.

Keys stay in an encrypted vault on your computer. When an agent calls an API, BlindDrop adds the key, sends the request and returns the response.

# what the agent sends
execute_http {
  "connection": "github",
  "method": "GET",
  "path": "/user"
}

# what BlindDrop sends to api.github.com
GET /user
Authorization: Bearer <github-pat>

BlindDrop Connections

BlindDrop stores secrets and connections.

A secret is an API key or token. You type it at a hidden prompt, and BlindDrop never shows it again.

A connection is what an agent asks for by name: one HTTPS origin, how that API authenticates, and the secrets it uses.

$ blinddrop init
$ blinddrop secret set github-pat
$ blinddrop connection set github \
    --origin https://api.github.com \
    --auth bearer --secret github-pat

Supported: bearer tokens, header and query keys, HTTP Basic, OAuth, JWT bearer, AWS SigV4 and client TLS certificates.

Anything else goes in a JSON file. See the configuration reference.

$ blinddrop connection import partner-api \
    ./partner-api.json
{
  "origin": "https://api.example.com",
  "allowPrivate": false,
  "enabled": true,
  "auth": {
    "type": "bindings",
    "bindings": [
      { "in": "json", "name": "client_id",
        "secret": "client-id" },
      { "in": "json", "name": "secret",
        "secret": "client-secret" }
    ]
  }
}

BlindDrop Sessions

Agents can use connections only while a session runs.

Each session allows the connections you name. It lasts an hour unless you set --ttl.

The Claude Code plugin connects to a running session on its own, and also installs into Codex and Cursor. Other MCP clients get two tools: list_connections and execute_http.

For SDKs that accept a base URL, blinddrop run gives one command its own session.

$ blinddrop serve --http --allow github \
    --ttl 3600
# prints an MCP URL and session token
$ blinddrop run github -- \
    node examples/request.mjs /user
# prints your GitHub account details

What BlindDrop Does Not Do

Database connections, SSH, WebSocket, gRPC and browser logins are not supported.

It is not a sandbox, and the API you call still receives the key.

BlindDrop Resources

Documentation

Read the configuration reference, client guide, OAuth guide and Fly.io guide.

Source

BlindDrop, the agent plugin and the macOS app are on GitHub.

Get Help

Open an issue. Report vulnerabilities through the security policy.

Releases

Get the latest release and read the changelog.

License

Free for noncommercial use under the PolyForm Noncommercial License 1.0.0.

The BlindDrop macOS app, full size.