Slinky's app icon: a glass asterisk with a keyhole

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.

v1.0.0 · macOS 15 Sequoia · Apple silicon ·

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.

Add Item esc
Paste a key, recovery codes or .env lines
Looks like an OpenAI key.
Key or Token Add expiry date
Encrypted on this Mac Save to Keys & Tokens ↵

Projects

Every project’s .env,
in one place.

  • Drop a project folder

    Slinky reads its .env files and sorts them into Local, Preview and Production. It never changes them.

  • Checks .gitignore

    Files git could commit get a warning, before they end up in your repo.

  • Shows what’s missing

    .env.example tells Slinky what the project needs. Copy an environment as .env lines when your host asks.

Recovery

Backup codes
that keep count.

RECOVERY CODES
Vercel
4left
t2w6r-9bn3jf5m8c-2kd4x

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.

STRIPE_SECRET_KEY
Stripe · live
GITHUB_TOKEN
GitHub
GitHub recovery codes
8 left · copies the next unused code
OPENAI_API_KEY
Slinky · Local
Apple Account recovery key
Recovery key · Apple
DATABASE_URL
harbor-app · Production
STRIPE_SECRET_KEY
sk_live_••••••••4f2a

Return copies this item. The clipboard clears in 60 seconds.

↵ Copy⌘↵ Copy as KEY=valueesc Close
Copied.

Locking

Locked unless
you’re using it.

Slinky

Slinky wants to unlock your vault.
Touch ID or enter your password to allow this.

Use Password…

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 or a CSV. Passwords stay behind.

A 5 MB download

Native Swift and Apple frameworks only. No web views, no dependencies.

5MB

Updates in place

One click, and only if the update is signed by Slinky’s developer.

Health

Finds your saved keys where they shouldn’t be, with one-click fixes and a check before each commit.

The slinky command

Run your app with a project’s variables after Touch ID, with no .env on disk. For you and your agents.

Apple developer files

App Store Connect .p8 keys, certificates and service accounts, in the vault. Save a notarytool profile without the .p8 lying around.

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.

Free and open source

MIT licensed, made by Testament Made. Read every line on GitHub.

heyderekj/slinky

Compare

Where Slinky fits

Apple Passwords is great for logins. Slinky is for everything else you’re told to keep safe.

SlinkyApple Passwords1Password.env filesDoppler or InfisicalKeychain Access
Made for API keys and tokensYesNoYesPartly: Plain textYesPartly: Generic items
A project’s .env, per environmentYesNoPartly: With its CLIYesYesNo
A command that runs your appYesNoYes: op runNoYesPartly: Prints values
AI agents use keys without seeing themYesNoPartly: With op runNo: In the clearPartly: Infisical’s proxyNo
Recovery codes that cross themselves offYesNoNoNoNoNo
Stays on your MacYesPartly: iCloudNo: Their cloudPartly: UnencryptedNo: Their serversYes
Opens with Touch IDYesYesYesNoNoPartly: Password
PriceFree, open sourceFreeSubscriptionFreeFree tier, then paidFree

Yes Partly No As of October 2026.

Give your secrets a home.

Free, about 5 MB, and nothing leaves your Mac.

Download for Macv1.0.0 · macOS 15 Sequoia · Apple silicon

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.
  • Locked means the key isn’t in memory at all.

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.
  • 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. 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, no server and no sync. Slinky goes online 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. Time Machine backs up the encrypted file like any other.

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?

No. It reads your .env files and .gitignore to set things up. It only writes a file when you choose Save .env.example, which has names and no values.

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 or a spreadsheet. Slinky picks out keys, tokens and codes, and leaves passwords behind.

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.