Slinky
Slinky keeps secrets out of files.
A Mac app that keeps API keys, .env variables and recovery codes out of files. Free and open source.
Keys & Tokens
API keys and access tokens your software and AI tools use, with expiry dates and live-key warnings.
Projects
Each app’s .env variables for Local, Preview and Production, out of the project folder.
Recovery
Backup codes that cross themselves off, and recovery keys for the day you need them.
Add Item
Paste it once.
Slinky files it.
Projects
Every project’s .env,
in one place.
Recovery
Backup codes
that keep count.
Only 4 codes left. Click one to copy it.
Quick Access
Your keys,
a shortcut away.
⌥⌘K, from anywhere
Find a key by name and press Return. Try it here: type “stripe” or “codes”.
Private copies
Clipboard history apps skip what Slinky copies, and it clears itself after a minute.
Shortcuts too
Add to Slinky, Copy from Slinky with Touch ID, Quick Access and Lock, right in the Shortcuts app.
Return copies this item. The clipboard clears in 60 seconds.
Locking
Locked unless
you’re using it.
Slinky
Slinky wants to unlock your vault.
Touch ID or enter your password to allow this.
Try the lock switch at the top right
Slinky Recovery Key
You need this key to open your vault on another Mac, or if Touch ID stops working. Slinky doesn’t keep a copy.
Keep it somewhere safe, away from your Mac.
Sync
Your vault,
on each of your Macs.
An encrypted copy of your vault, moved by your sync service. It opens only with your Recovery Key or on a Mac you’ve set up. It’s also a backup.
This folder already has a Slinky vault, from your other Mac. Enter its Recovery Key to use it here. This Mac’s items are added to it.
Sharing
Share keys with your team.
No server in between.
AI agents
Agents use your keys.
They never see them.
slinky run
Claude Code, Cursor and Codex start your app through slinky run. You approve each command with Touch ID, and the keys never reach the chat.
Names, never values
Connected agents can list names and ask for what’s missing. Live keys stay out, and so do shells and tools that send things off your Mac.
Paste it here, not in the chat
When an agent needs a key Slinky doesn’t have, Slinky opens with the name filled in, for you to paste.
Slinky
Slinky wants to let Claude Code run “npm run dev” with 4 secrets from Acme.
Use Password…Features
Also in Slinky
Import
Bring keys from 1Password, Apple Passwords, Bitwarden, LastPass, KeePass or a CSV, even ones in notes. Rename them first, and Undo takes it all back. Passwords stay behind.
Small and native
Native Swift and Apple frameworks only. No web views, no dependencies.
6MB
Updates in place
One click, and only if the update is signed by Slinky’s developer.
The slinky command
Run your app with a project’s variables after Touch ID, with no .env on disk. Write a names-only .env.example, open an item, or lock Slinky from the terminal.
Make a new key, send it where it runs
“Make New Key on GitHub…” opens the right page and replaces it everywhere it’s used. Send a project’s variables to Vercel, Netlify, Cloudflare or Fly through their own tools.
Health
Finds your saved keys where they shouldn’t be, with one-click fixes and a check before each commit.
Apple developer files
App Store Connect .p8 keys, certificates and service accounts, in the vault. Save a notarytool profile without the .p8 lying around.
Activity
What was copied or run, when, and by whom. Names only, kept in your vault.
Made for the keyboard
⌘1 to ⌘8 for each place, ⌘E to edit, ⇧⌘C to copy as NAME=value. Select several to change them together.
Ready for macOS 27
Slinky’s menu bar menu works like the menus beside it, from the keyboard too. Lock Slinky from Control Center or the menu bar (macOS 26 and later). In Shortcuts, Copy from Slinky and Add to Slinky run only in Slinky itself.
Free and open source
MIT licensed, made by Testament Made. Read every line on GitHub.
Compare
Where Slinky fits
Apple Passwords is great for logins. Slinky is for everything else you’re told to keep safe.
| Slinky | Apple Passwords | 1Password | .env files | Doppler or Infisical | Keychain Access | |
|---|---|---|---|---|---|---|
| Made for API keys and tokens | Yes | No | Yes | Partly: Plain text | Yes | Partly: Generic items |
| A project’s .env, per environment | Yes | No | Yes: Environments | Yes | Yes | No |
| A command that runs your app | Yes | No | Yes: op run | No | Yes | Partly: Prints values |
| AI agents use keys without seeing them | Yes | No | Yes: Environments MCP | No: In the clear | Partly: Infisical’s proxy | No |
| Recovery codes that cross themselves off | Yes | No | No | No | No | No |
| Stays on your Mac | Yes: Unless you share it | Partly: iCloud | No: Their cloud | Partly: Unencrypted | No: Their servers | Yes |
| Share with your team | Yes: Encrypted files, no server | Partly: Passwords only | Yes | No: Pasted in chat | Yes | No |
| Opens with Touch ID | Yes | Yes | Yes | No | No | Partly: Password |
| Price | Free, open source | Free | Subscription | Free | Free tier, then paid | Free |
Yes Partly No As of October 2026. Full comparisons
Give your secrets a home.
Free, about 6 MB, and nothing leaves your Mac.
Privacy
Your things, in plain English
Where they live
- One encrypted file on your Mac.
- Opened by your Mac’s Secure Enclave with Touch ID, or your printed Recovery Key.
- On macOS 26 and later, the key that opens it is locked twice: with a classic key and a post-quantum one (P-256 and ML-KEM-768). An older vault moves over the next time you unlock it.
- Locked means the key isn’t in memory at all.
- Optional sync: an encrypted copy in a folder you choose, moved by your own sync service.
What leaves your Mac
- Nothing about you or your vault.
- Once a day, a check with GitHub for a newer version. You can turn it off.
- Only if you turn it on, a request to each saved website for its icon.
- When you choose Send to Host, the values you pick go to that host, through its own tool.
- When you share, Slinky makes a signed, encrypted file only the people you pick can open (on macOS 26 and later, with the same post-quantum lock and ML-DSA-65 signatures). You send it, or your team’s own sync service moves it. Slinky makes no request for it.
- No account, no analytics in the app, no server.
Questions
Good to know
Is Slinky free?
Yes. Slinky is free and open source under the MIT License, made by Testament Made, LLC, the same people behind Dinky and Binky.
Where are my things stored?
In one encrypted file on your Mac. The key that opens it is protected by your Mac’s Secure Enclave and opened with Touch ID. On macOS 26 and later, that key is locked with both a classic and a post-quantum key (P-256 and ML-KEM-768), and an older vault moves over the next time you unlock it. A printed Recovery Key is the backup.
Why does macOS say it can’t check Slinky?
Slinky is signed but not notarized yet. The first time, open System Settings › Privacy & Security and click Open Anyway. You only do this once; updates install without asking again.
Should I keep passwords in Slinky?
No. Website passwords belong in Apple Passwords. Slinky is for the other things: API keys, tokens, .env variables, backup codes and recovery keys.
Is there an account or sync?
No account and no server. Sync is optional: turn it on and Slinky keeps an encrypted copy of your vault in a folder you choose, like one in iCloud Drive or Dropbox, and your sync service moves it between your Macs. It opens only with your Recovery Key or on a Mac you’ve set up, so the sync service can’t read it. You can also share with the people you choose, still without an account: Slinky makes an encrypted file that only their Macs can open, and you send it any way you like, or keeps a shared project in a folder your team already syncs. Slinky itself goes online only for a daily check with GitHub for a newer version, which you can turn off, and, only if you turn it on, to ask each saved website for its icon.
What if I lose my Mac?
Restore your backup on a new Mac and open Slinky with your Recovery Key. Slinky then sets up Touch ID on that Mac.
Does Slinky change my project files?
Only when you ask. It reads your .env files and .gitignore to show what it found. It writes a file only when you choose Save .env.example (names, no values), Move into Slinky, or Stop Commits with Secrets.
What about clipboard history apps?
Everything Slinky copies is marked private, so Raycast, Paste, Maccy and others skip it, and the clipboard clears itself after 60 seconds.
Can I bring my keys from another app?
Yes. Import a 1Password export, or a CSV from Apple Passwords, Bitwarden, LastPass, KeePass or a spreadsheet. Slinky picks out keys, tokens and codes, even ones in notes, and leaves passwords behind. You can rename things first, and Undo takes the import back.
Will it work with AI coding tools?
Yes. Connect Claude Code, Cursor, Codex or Claude in Settings. Agents see names, never values: they run your app through slinky run, you approve each command with Touch ID, and live keys stay out. Holding back keys this way keeps them out of the model, not out of a determined program; Slinky isn’t a sandbox.
Does Slinky read my files?
Only to help, and only on your Mac. Health looks for exact copies of your saved values in linked projects and their git history, AI tools’ saved conversations and your shell history, and reports names and places. Nothing is sent anywhere.
Can it send my variables to Vercel or Cloudflare?
Yes, when you choose Send to Host in a project. Slinky uses the host’s own command-line tool, signed in as you: Vercel, Netlify, Cloudflare Workers or Pages, or Fly.io. You see the names first, and Touch ID confirms it.
Does it help with App Store Connect and notarization?
Yes. Keep your App Store Connect .p8 key in Slinky, add its Issuer ID, and save a notarytool profile from it, so the key isn’t lying in a folder. App-specific passwords are recognised when you paste them.