{
  "markdown": "# SecretCarousel\n\n[![npm version](https://img.shields.io/npm/v/secretcarousel.svg)](https://www.npmjs.com/package/secretcarousel)\n[![MCP](https://img.shields.io/badge/MCP-stdio_+_SSE-blue)](https://secretcarousel.com/docs/quickstart/remote-mcp.html)\n[![Zero-Knowledge](https://img.shields.io/badge/mode-zero--knowledge-8b5cf6)](https://secretcarousel.com/#security)\n[![smithery badge](https://smithery.ai/badge/jyswee/secretcarousel)](https://smithery.ai/servers/jyswee/secretcarousel)\n\n**The secret vault your coding agents run themselves — store, rotate, and hand off credentials from any agent, so they stop passing keys in plain text.**\n\n> **git for your code. sc for your agents' secrets.**\n\nYour agent touches credentials all day — a database URL here, an API key there — and the moment its context resets, those secrets end up pasted into a `.env` file in Slack, echoed into a log, or left in the transcript. *You* become the vault. SecretCarousel is the vault the agent runs itself: one command, and it stores secrets encrypted, rotates them on a schedule, and — the part nothing else does — hands a secret to another agent through a one-time, scoped, expiring **claim token**, even across companies. No plain-text value ever crosses the boundary.\n\n**Works with:** Claude Code · Cursor · Cline · Windsurf · Aider · Codex · any MCP client\n\n## Install\n\n```bash\nnpm install -g secretcarousel\n```\n\nThe npm package is `secretcarousel`; the command is `sc`.\n\nOr self-provision a vault in one command — no email, no card:\n\n```bash\nnpx secretcarousel signup my-project --local\n```\n\n## Quick Start\n\n```bash\n# Self-provision a tenant (API key saved to .sc/config.json)\nsc signup my-project --local\n\n# Store a secret — AES-256-GCM encrypted at rest; returns an id, never echoes the value\nsc secret \"DATABASE_URL\" \"postgres://user:pass@host/db\" -t database-credentials\n\n# Retrieve by id — decrypted on demand, access-logged\nsc secret show sec-abc123\n\n# List / search — ids + names, never values\nsc secrets\nsc search stripe\n\n# Rotate now\nsc rotate sec-abc123\n\n# Full reference\nsc --help\n```\n\n## Claim tokens — how agents hand off secrets\n\nThis is the part nothing else does. One agent mints a **one-time, scoped, expiring** token; another agent — different project, even different company — redeems it exactly once; the token burns; the whole exchange is audit-logged. The plain-text value never crosses the boundary as a copy-pasteable string.\n\n```bash\n# Agent A: hand a secret to another tenant/agent\nsc claim \"<the-secret-value>\" --to partner-tenant --contract CTR-ID\n\n# Agent B: redeem the token you were handed (once, audited)\nsc claim redeem CLM-TOKEN\n\n# List the tokens you've minted + their status\nsc claims\n```\n\nNo more DMing a key and hoping the other side deletes it. The token is single-use, time-boxed, and revocable, and every mint/redeem lands in the audit trail.\n\n## Zero-knowledge mode — even we can't read it\n\nBy default, secrets are encrypted at rest with AES-256-GCM. Flip on **zero-knowledge mode** and encryption happens *on your machine, before the value ever reaches the server* — SecretCarousel stores only ciphertext and never holds the key to unlock it. A database breach leaks gibberish.\n\n```bash\n# Store a zero-knowledge secret (encrypted client-side)\nsc secret \"SIGNING_KEY\" \"$(cat key.pem)\" --e2e\n\n# Retrieve — auto-decrypts locally with your device key\nsc secret show sec-def456\n```\n\nMultiple agents can share one zero-knowledge vault via an enrollment handshake — the vault key is passed device-to-device, never to the server:\n\n```bash\nsc enroll init                 # first device bootstraps the vault\nsc enroll create --minutes 15  # mint an enrollment token for another agent\nsc enroll redeem <token>       # joining agent unlocks the same vault\nsc enroll status               # vault + local device state\n```\n\n## Rotation — set it and forget it\n\n```bash\n# Rotate immediately\nsc rotate sec-abc123\n\n# Schedule rotation with alerts\nsc rotate set sec-abc123 --schedule \"30d\" --email ops@myproject.dev\n```\n\n## Sharing — time- and view-limited links for humans\n\n```bash\n# One-hour, single-view link a teammate can open in a browser\nsc share sec-abc123 --hours 1\n\n# List active shares\nsc shares\n```\n\n## Environments — .env in, .env out\n\n```bash\n# Export a project's secrets as a .env file\nsc env pull --env production > .env\n\n# Promote secrets from one environment to another\nsc env promote --from staging --to production\n```\n\n## MCP Server\n\nPrefer tools over a CLI? `sc` ships an MCP server. Point Claude Code (or any MCP client) at it and your agent gets the full toolset — store, retrieve, list, search, rotate, share, and the claim-token handoff — with structured JSON responses.\n\n```bash\nclaude mcp add secretcarousel -- sc mcp-serve\n```\n\nFor clients that use a JSON config (Cline, Cursor, Windsurf), pass your API key via the `SC_API_KEY` environment variable. The MCP server runs outside your project directory, so it will not pick up `.sc/config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"secretcarousel\": {\n      \"command\": \"sc\",\n      \"args\": [\"mcp-serve\"],\n      \"env\": { \"SC_API_KEY\": \"sc_your_key_here\" }\n    }\n  }\n}\n```\n\nNo key yet? Start it without one — the server boots in onboarding mode with an `sc_signup` tool that provisions a vault instantly (48-hour activation window; the emailed $0 card check starts the 7-day free trial), then the full toolset unlocks in place.\n\n### Remote MCP — zero install\n\nNo CLI at all? Claude Web, Claude Desktop, Raycast, or any hosted MCP client can connect straight to our remote server. Same toolset, same API key, nothing to install:\n\n```\nURL:  https://mcp.secretcarousel.com/sse\nAuth: Authorization: Bearer sc_YOUR_API_KEY\n```\n\nConnect without the header and it starts in onboarding mode — call `sc_signup` to self-provision a vault mid-session (48-hour activation window, 7-day free trial via emailed $0 card check). Setup guide: [Remote MCP quickstart](https://secretcarousel.com/docs/quickstart/remote-mcp.html).\n\n## Audit trail — provable, exportable\n\nEvery store, retrieve, rotate, share, mint, and redeem lands in an immutable event log. Read it from the terminal or export it for compliance.\n\n```bash\nsc audit --limit 50\nsc audit export --format csv > audit.csv\n```\n\n## Features\n\n- **Secrets** — store, retrieve, update, delete; AES-256-GCM at rest; typed (database-credentials, api-key, certificate, and more)\n- **Zero-knowledge mode** — client-side encryption; the server only ever sees ciphertext, multi-device vaults via an enrollment handshake\n- **Claim tokens** — hand a secret to another agent/tenant via a one-time, scoped, expiring, audited token\n- **Rotation** — rotate now or on a schedule, with email alerts\n- **Sharing** — time- and view-limited links for humans\n- **Environments** — export as `.env`, promote secrets between environments\n- **Scoped API keys** — read/write/admin per key, project-scoped\n- **MCP server** — local (`sc mcp-serve`) or fully remote (`mcp.secretcarousel.com`): Claude Code, Claude Web, Cursor, Raycast, any MCP client\n- **Audit trail** — immutable event log, exportable as CSV or JSON\n- **Agent self-signup** — an agent provisions its own vault mid-session, no human in the loop\n\n**Pricing:** 7-day free trial. Card required (secure Stripe checkout), nothing charged during the trial — cancel before it ends and you pay nothing. After that, from $9/mo: Starter $9 · Pro $29 · Scale $99, each with included secrets plus low overage. **Unlimited agents on every plan**, no per-seat pricing. [Details](https://secretcarousel.com/#pricing).\n\n## Per-Project Config\n\n```bash\nsc login --local --key YOUR_KEY    # saves to .sc/config.json (project-local)\nsc me                              # show tenant info + plan + usage\n```\n\nConfig is per-project and auto-loaded from `.sc/config.json`. Add `.sc/` to your `.gitignore`.\n\n## Agent Integration\n\nAdd to your CLAUDE.md, .cursorrules, .clinerules, .windsurfrules, or AGENTS.md:\n\n```\n## SecretCarousel\nThis project uses SecretCarousel as its secret vault.\nUse the `sc` CLI. Config is in .sc/config.json (auto-loaded).\nIf not configured: sc login --local --key YOUR_KEY\n\nNever paste a secret value into code, logs, or chat — store it with\n`sc secret \"NAME\" \"VALUE\"` and retrieve by id at the moment of use.\nTo hand a secret to another agent, mint a claim token — never send the raw value.\n```\n\n## Why this exists\n\nEvery coding agent handles credentials, and every one of them eventually leaks one — into a `.env` committed by mistake, a log line, a Slack paste, a transcript that outlives the session. I wanted the agent to own its secrets the way it owns its code: a vault it runs itself, where the value is fetched only at the moment of use and handed off without ever becoming a copy-pasteable string. It's early and iterating fast — if something's rough or missing, [open an issue](https://github.com/jyswee/secretcarousel/issues).\n\n## Documentation\n\n- [Quickstart Guides](https://secretcarousel.com/docs/quickstart.html)\n- [Full Reference](https://secretcarousel.com/llms.txt)\n\n## License\n\nProprietary — Tyga.Cloud Ltd. See [LICENSE](./LICENSE).\n",
  "bytes": 9118,
  "sha": "938bf42517d97337859e612a4d9db71b9ed560b34c40e99b884d6bbd2182e6d0",
  "repo_slug": "jyswee/secretcarousel",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_jyswee_secretcarousel_fda2579a/readme"
}