Apilocker — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Apilocker (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<div align="center">
<img src="https://www.apilocker.app/brand/logo-256.png?v=2" alt="API Locker mascot" width="180" height="180" />
One vault, three types of credentials. Replace your `.env` file with one token.
</div>
API Locker is an encrypted credential vault for developers. Store your LLM API keys, service API keys, and OAuth credentials in one place — then inject them into any command with apilocker run -- npm start. Your raw credentials never touch disk, never live in shell history, never get committed to git.
Free to use. Try it →
# Install
npm install -g apilocker
# One-click browser confirmation — no pasted tokens
apilocker register
# Store a credential (for any of 34 provider templates, plus "custom")
apilocker store --name OPENAI_API_KEY --provider openai --key sk-proj-...
# Run any command with your vault secrets injected as env vars
apilocker run -- npm start
# ↑
# process.env.OPENAI_API_KEY is populated for the lifetime of this command,
# then gone. No .env file. Nothing on disk. Nothing in shell history.That's the whole pitch. Everything else in this repo is making that flow work for every kind of credential a developer has to deal with.
API Locker distinguishes three credential types because they're used differently:
<table> <tr> <td width="33%" valign="top">
Single opaque tokens for model APIs.
OpenAI, Anthropic, Gemini, Groq, Mistral.
apilocker store --name OPENAI_API_KEY \
--provider openai \
--key sk-proj-xxxxx</td> <td width="33%" valign="top">
Single tokens for everyday SaaS.
Stripe, Twilio, Resend, ElevenLabs, Cloudflare, GitHub, Clerk, Sentry, PostHog, Cloudinary, Mux, SendGrid, Vercel, Upstash, LemonSqueezy.
apilocker store --name STRIPE_SECRET_KEY \
--provider stripe \
--key sk_live_xxxxx</td> <td width="33%" valign="top">
Multi-field credentials for sign-in flows.
Google, GitHub, Slack, Microsoft, Notion, Spotify, Twitter/X, LinkedIn, Discord, Zoom, Dropbox, Salesforce, HubSpot.
apilocker store --oauth \
--name google-oauth \
--provider google-oauth \
--client-id ... \
--client-secret ...</td> </tr> </table>
Under the hood, LLM and Service credentials share the same single-string encrypted storage. OAuth is a multi-field encrypted JSON blob. Users experience three product surfaces; implementation shares one foundation.
.env files?| Problem | .env file | API Locker |
|---|---|---|
| Secrets on disk | ✅ (plaintext) | ❌ (encrypted, AES-256-GCM) |
| Secrets in git history if misconfigured | ✅ | ❌ |
| Secrets in shell history when debugging | ✅ | ❌ |
| Sharing across machines | Manual copy-paste | ✅ (one apilocker register per device) |
| Rotation | Manual edit in every copy | One dashboard click |
| Audit log of who accessed what | ❌ | ✅ (every reveal + proxy call) |
| Revocation of a specific device | Nuke every local copy | One apilocker devices revoke |
| AI agent access (Claude, Cursor, etc.) | "Paste this into Cursor settings" | Native MCP integration |
apilocker run -- cmd injects your vault secrets as env vars for the duration of one command, then clears them.POST /v1/proxy/:keyId forwards authenticated calls upstream (Stripe, OpenAI, etc.) with the raw key injected server-side. Your app code never sees the secret..apilockerrc files. Old aliases transparently resolve via a previous_names fallback.apilocker activity --follow.apilocker doctor surfaces stale rotations, unused keys, expiring tokens, and local config permission issues.apilocker import .env migrates an existing project into the vault in one command.API Locker exposes a full Model Context Protocol server so AI agents can read and manage your vault directly.
Claude Code (one command):
claude mcp add apilocker -- apilocker mcpClaude Desktop, Cursor, Zed, Continue — use the apilocker mcp stdio bridge in your client's config:
{
"mcpServers": {
"apilocker": {
"command": "apilocker",
"args": ["mcp"]
}
}
}Full MCP docs with the 21-tool catalog and per-client setup instructions: apilocker.app/docs/mcp
This is a monorepo. The three surfaces are kept together because they share types, provider templates, and product conventions.
apilocker/
├── cli/ # The `apilocker` npm package (published as apilocker)
├── api/ # Cloudflare Worker backend (api.apilocker.app)
├── site/ # Marketing site + dashboard + docs (www.apilocker.app)
└── README.md # You are hereapilocker npm package. Built with Node 18+ and Commander. See cli/README.md for the full command reference./v1/mcp./docs/mcp integration guide, and a hidden admin analytics page.apilocker register opens your browser, you click Authorize once, the CLI writes a per-device master token to ~/.apilocker/config.json (mode 0600).apilocker run -- npm start reveals the needed credentials for one command and exports them as env vars.POST /v1/proxy/:keyId, and the API Locker Worker injects the raw key into the upstream call server-side. Your app never sees the secret.apilocker mcp stdio bridge and gets the same 21-tool surface as the CLI..apilockerrc files are unaffected by rename, and revoking a device never touches any other device..apilocker.appFree plan available. Unlimited keys, unlimited tokens, unlimited proxy calls. Early adopters get grandfathered into free Pro permanently when paid plans launch.
api.apilocker.appwww.apilocker.app/dashboard/docs/mcpio.github.apilocker/apilockerIssues and PRs welcome. The repo is intentionally kept as a monorepo so a single PR can touch the CLI, API, and site in coordinated steps.
The right address depends on what you want to talk about:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.