WeaKV Cyberpunk Logo

Your secrets are showing. Here's how to stop that.

Why environment variables are putting your business at risk — and what we built to fix it.

Get Started

🔑 What's an API key, really?

An API key is the master key to your house. It opens everything. It works for anyone holding it. No questions asked.

So where do most apps keep that master key? On sticky notes, left on the desk. Developers just call them "environment variables" — same idea, fancier name.

What happens when a key gets out:

One leaked key = thousands of dollars in unexpected charges.

The problem's been obvious for years, but nobody fixed it — so in 2022 one developer started building the idea, and in 2025 WeaKV launched. It's a local, encrypted vault that lives on your own machine. Secrets never leave it, and they're never stored in plain text.

⚙️ How It Works

Three steps. That's the whole story. No plain text. Ever.

1. Store

You lock your secret in the vault.

2. App Asks

Your app requests the secret when it needs it.

3. WeaKV Delivers

Handed over safely — nothing written down, nothing left in plain text.

🔀 Two Ways to Use It

Build it in, or run it beside your app. Same vault, your choice.

📚 Option One: Go Library

Plug it straight into your code and fetch secrets programmatically.

🖥️ Option Two: Exec CLI

A secure helper tool that runs alongside your app — it injects the secrets your script needs, then launches it. Nothing to import, nothing to change in your code.

🎚️ Two Simple Modes

Pick the one that matches the moment. Same vault, two settings.

🛠️ Dev Mode — While You Build

On your laptop: fast and easy while you're still working.

🚀 Production Mode — When You Go Live

On your server: locked down once real customers are using it.

⚡ Dead Simple CLI

# Store a secret
weakv set <key> <path> <env>

# Retrieve a secret
weakv get <key> <path>

# Run your app with secrets injected — no code changes needed
weakv exec <key1,key2,...> <path> [args...]

🐍 Python Integration

import ctypes

def gs(s):
    try:
        a = ctypes.CDLL("./libweakv.so")
        a.get_secret.restype = ctypes.c_char_p
        a.get_secret.argtype = [ctypes.c_char_p]
        return a.get_secret(s.encode("utf-8")).decode("utf-8")
    except:
        return "-1"

print(gs("secret"))

🎯 Design Goals

🏠 Local Only

Never travels over the internet, never sits in a config file, never lands in GitHub. It stays where you put it.

🚫 No Services

Zero running processes or background services. Just works when you need it.

🔐 Encrypted at Rest

All secrets are encrypted on disk. No more plain text files lying around.

🔗 Script Interlocking

Best effort to bind secrets to the calling script for added security.

⚙️ Dev & Prod Modes

Separate environments for development and production workflows.

🛡️ Drive-by Safe

Protects against casual scraping of compromised workstations and accidental commits.

💚 Built for Developers. Safe for Everyone.

Stop storing secrets in environment variables. Free to try — because the sticky note habit should have ended a long time ago.

🚀 Get Started

Ready to stop storing secrets in plain text? Download WeaKV and secure your development workflow today.

Platform / OS Architecture CLI Library
macOS Intel (amd64) weakv-darwin-amd64.zip libweakv-darwin-amd64.zip
macOS Apple Silicon (arm64) weakv-darwin-arm64.zip libweakv-darwin-arm64.zip
Linux Intel/AMD (amd64) weakv-linux-amd64.zip libweakv-linux-amd64.zip
Linux ARM64 weakv-linux-arm64.zip libweakv-linux-arm64.zip

Available for Linux, macOS