Skip to main content

A minimal AES-256-GCM-based secrets manager for Python

Project description

🔐 MiniSecret

PyPI version License Python

MiniSecret is a minimal, secure secrets manager for Python projects and automation agents.
It uses AES-256-GCM encryption and an environment-based master key to keep your secrets safe, simple, and offline.


📦 Features

  • 🔒 AES-256-GCM authenticated encryption
  • 🔐 Environment-based master key (MINISECRET_KEY)
  • 🧊 Local encrypted file store (secrets.enc.json)
  • ⚙️ Simple Python class + optional CLI tool
  • 🧽 Secure memory auto-wipe for sensitive values
  • 🚫 No cloud dependencies or runtime daemons

🧪 Summary Comparison

Feature MiniSecret python-keyring python-decouple hvac / AWS / GCP
🔐 Encryption ✅ AES-256-GCM ✅ OS-backed ❌ None ✅ Enterprise
📁 File-based
💻 Works offline ⚠️ Limited
🧠 Simple to use
🛡️ Secrets in memory only ✅ Optional

⚙️ Installation

Install directly from PyPI:

pip install minisecret

🔑 Setup: Master Key

✅ Step 1: Generate a Strong Key

python -c "import os, base64; print(base64.urlsafe_b64encode(os.urandom(32)).decode())"

✅ Step 2: Set the MINISECRET_KEY Environment Variable

🔹 Linux/macOS (temporary)

export MINISECRET_KEY="your-generated-key"

To persist: add to ~/.bashrc, ~/.zshrc, or .profile.

🔹 Windows PowerShell (temporary)

$env:MINISECRET_KEY = "your-generated-key"

🔹 Windows GUI (persistent)

  1. Search for "Environment Variables"
  2. Add a new User variable
    • Name: MINISECRET_KEY
    • Value: your-generated-key

🧪 Example: Store and Use Secrets

You want to store the following secret:

MySecretPassword

✅ CLI: Store the Secret

minisecret put my_password MySecretPassword

✅ CLI: Retrieve the Secret

minisecret get my_password

Secure retrieval (auto-wiped from memory):

minisecret get my_password --secure

List all stored keys:

minisecret list

✅ Python: Use the Stored Secret

from minisecret import MiniSecret
import pyautogui
import time

secrets = MiniSecret()

# Secure version (wiped from memory immediately)
password = secrets.secure_get("my_password")

# Type the password into a GUI window
time.sleep(2)
pyautogui.write(password, interval=0.1)

🔐 Security Notes

  • Secrets are encrypted with AES-256-GCM and stored in secrets.enc.json
  • Secrets are decrypted only in memory when accessed
  • Use secure_get() or --secure to clear secrets from memory after use
  • Do not commit secrets.enc.json or your MINISECRET_KEY to version control

✅ CLI Summary

minisecret put <key> <value>
minisecret get <key> [--secure]
minisecret list

📚 License

MIT


💡 Ideas for the Future

  • ⏳ Auto-expiring secrets
  • 📦 Project-based secret stores
  • 🔐 Password-prompt fallback for the master key
  • 🧽 Clipboard auto-clear support

Developed with ❤️ by @Cognet-74

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

minisecret-0.1.4.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

minisecret-0.1.4-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file minisecret-0.1.4.tar.gz.

File metadata

  • Download URL: minisecret-0.1.4.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for minisecret-0.1.4.tar.gz
Algorithm Hash digest
SHA256 c5b80ff408fbbe5b622dff3b0fb285c106dd30f88349459784bd03680e55ea81
MD5 a17ecc8d72dbc3285bf6ce44eb44abf1
BLAKE2b-256 417d74b24fc23aeb2d134e51db8e28572374ffc5bd6dcb863e9a93f9278ca1e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for minisecret-0.1.4.tar.gz:

Publisher: publish.yml on Cognet-74/MiniSecret

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file minisecret-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: minisecret-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 6.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for minisecret-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 41798e8a7e0f6c04b408c3a6d30466993d738cfcafbfb40b8db07a894a76a16e
MD5 04f8ce38146da4929f9c4573960b9be8
BLAKE2b-256 5ab15ecdf7a21d477e298251a37372d22d84ba790df695c8e17574290f8a94d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for minisecret-0.1.4-py3-none-any.whl:

Publisher: publish.yml on Cognet-74/MiniSecret

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page