🐦⬛ CrowEnv — Python
CrowEnv replaces insecure plain .env files with .cenv — AES-256-GCM encrypted secrets safe to commit to Git.
"Crows hide their treasures. Now so can you." 🐦⬛
Install
pip install crowenv
Quick Start
# 1. Initialize .gitignore
crowenv init
# 2. Generate a 256-bit master key (save this in your secrets manager!)
crowenv generate-key
# 🔑 a3f8c901... ← copy and store safely
# 3. Set the key
export CENV_MASTER_KEY="a3f8c901..."
# 4. Encrypt your .env
crowenv encrypt
# ✅ .cenv created (3 secrets, AES-256-GCM)
# 5. Commit .cenv safely
rm .env && git add .cenv && git commit -m "Add encrypted secrets"
Python API
import cenv
import os
# Load .cenv into os.environ (call at app startup)
cenv.load()
# Now use secrets normally
db_password = os.getenv("DB_PASSWORD")
api_key = os.getenv("API_KEY")
CLI Commands
| Command | Description |
|---|---|
crowenv init |
Initialize .gitignore |
crowenv generate-key |
Generate a 256-bit random master key |
crowenv encrypt [file] |
Encrypt .env → .cenv |
crowenv decrypt [file] |
Decrypt .cenv → stdout |
crowenv load [file] |
Load .cenv into process environment |
crowenv verify [file] |
Verify .cenv integrity |
Security
| Property | Value |
|---|---|
| Encryption | AES-256-GCM |
| Key derivation | PBKDF2-HMAC-SHA256 (600,000 iterations) |
| Nonce | 12 bytes, random per encrypt |
| Auth tag | 16 bytes (tamper detection built-in) |
| Dependency | cryptography library |
The .cenv file format is git-safe — commit it openly. The master key stays secret (env var, secrets manager, vault).
The .cenv Format
{
"v": "1.0",
"s": "<base64 16-byte salt>",
"d": "<base64 nonce(12) + auth_tag(16) + ciphertext>"
}
Links
- 🐦⬛ GitHub
- 📋 Full Spec
- 🔐 Security Policy
- 📦 npm (Node.js)
- 🦀 crates.io (Rust)
License
MIT
Metadata
Release files for crowenv 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| crowenv-1.0.1.tar.gz | 5.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| crowenv-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 11.1 kB
Release files / crowenv-1.0.1.tar.gz
| Download URL | crowenv-1.0.1.tar.gz |
|---|---|
| Size | 5.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4088f4752a8c2481c14e9a305bf7f952f4a215b6a0886b4ea53a87d02a47ccbe
|
|
BLAKE2b-256 checksum How to use checksums |
44e98af5df604ce222b2cf250586f7ddd7f1014500a74d98f2024fa1ae3585f3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.2
|
Release files / crowenv-1.0.1-py3-none-any.whl
| Download URL | crowenv-1.0.1-py3-none-any.whl |
|---|---|
| Size | 5.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
74c3601aa2c8e347b65fb3cf13da3cf8b6fece07e6b1f4a325e9e99a28f488c6
|
|
BLAKE2b-256 checksum How to use checksums |
d9fb15e77a12c96c65bdbc284731d5691647e1944691117b6371c9e73d2f139e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.2
|
Security for crowenv 1.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.