Skip to content
Download

Never commit your secrets again.

Load secrets at runtime, manage them from one space, and share them securely with teammates.

existing-project

~/.sct/existing-project/secrets.sct

  • AUTH_SECRET
  • POSTGRES_URL
  • STRIPE_KEY

Each value has its own key in macOS Keychain. Send these to a teammate.

~/code/existing-project $ ls -A

boot.ts package.json

~/code/existing-project $ bun boot.ts

process.env inside the app

AUTH_SECRET32 chars
POSTGRES_URL48 chars
STRIPE_KEY32 chars

For Apple Silicon Macs.

1. Take .env out of the repo

One vault in ~/.sct holds them, outside every project folder.

Before
  • existing-project/
  • .envplaintext
  • STRIPE_KEY=sk_live_…
  • .env.localplaintext
  • .gitignore.env*
  • package.json
  • server.ts

Plaintext in the repo, one git add from a leak.

After
  • existing-project/
  • boot.tscalls loadEnv()
  • package.json
  • server.ts
  • ~/.sct/existing-project/
  • secrets.sctencrypted
  • keysmacOS Keychain

No secret file in the project.

2. Load secrets when the app starts

npm install @sct/env
Read the SDK guide
boot.ts
import { loadEnv } from '@sct/env'import Stripe from 'stripe'
// Reads this project's secrets from macOS Keychain into process.env.await loadEnv({  onChange: () => console.log('process.env updated'),})
export const stripe = new Stripe(process.env.STRIPE_KEY)

3. Send them to a teammate

AirDrop works nearby, and the relay works from anywhere.

AirDrop, Mac to Mac nearby

Your Mac

Your teammate sees this same code.

7Q4M 2KX9 81TD

Encrypted for one Mac only.

Teammate's Mac

Nothing received yet.

Pair once
Compare one code on both Macs.
Encrypted on your Mac
AES-256-GCM, X25519 key wrap and an Ed25519 signature.
Relay sees ciphertext
Names and values stay encrypted on SpacetimeDB.
Access can end
Set when relay access ends. AirDrop packages expire in 24 hours.

What you need

RequirementWhy
macOS on Apple SiliconThe DMG comes from the latest GitHub release.
Node.js 22.18 or later, or BunThe @sct/env SDK runs in server-side code.
The sct command on PATHThe SDK starts it. The SDK guide covers the setup.
A coding agent, if you use oneAgents use secrets through the sct CLI or MCP server. Each request opens an approval window on your Mac, and the agent never sees a value.

Get .sct for your Mac

The build is not notarized, so macOS blocks the first launch until you clear the quarantine flag.

  1. Open sct-macos-arm64.dmg and drag sct.app to Applications.
  2. xattr -dr com.apple.quarantine /Applications/sct.app
  3. Open sct.app, add a project folder, and save its secrets.