Skip to main content

agent-opaque-env

Self-describing encrypted environment files for AI-assisted development.

The package keeps environment keys and values out of plain-text repository context. Its Rust extension also raises the cost of casual static analysis. It is not a secret manager: an agent or process allowed to call load_env() can read the returned values.

Install

uv add agent-opaque-env

The wheel contains the Rust implementation. Users do not need to install cryptography or a Rust toolchain when a wheel is available for their platform.

Use

from agent_opaque_env import dump_env, load_env


dump_env({"APP_MODE": "development"}, ".env")
values = load_env(".env")

dump_env() defaults to the zero-configuration obfuscation profile. It creates an owner-only file and stores shuffled key material with the ciphertext. This prevents direct text collection but does not create a separate secret boundary.

For protection when the repository is copied without its key, use the protected profile:

from agent_opaque_env import dump_env, load_env


# Public example key only. Never use this key for real secrets.
key = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
dump_env(values, ".env", profile="protected", key=key, key_id="example-local")
values = load_env(".env", key=key)

Generate a unique key for real use and keep it outside the repository. Instead of passing key=, applications may set the AGENT_OPAQUE_ENV_KEY environment variable. Missing or incorrect keys fail explicitly and never downgrade to obfuscation.

from agent_opaque_env import generate_key


key = generate_key()  # Store this outside the repository before encrypting files.

Self-describing AOE1 format

An AOE1 file is ASCII with exactly three lines:

AGENT-OPAQUE-ENV/1
{"algorithm":"AES-256-GCM","format":"AOE1","import":"agent_opaque_env","loader":"load_env","package":"https://pypi.org/project/agent-opaque-env/","profile":"obfuscation"}
{"ciphertext":"...","key_fragments":["...","...","..."],"nonce":"..."}

The fixed package URL tells a developer or agent that the agent-opaque-env PyPI distribution and its load_env API understand the file. It never contains a shell command, package-manager arguments, any other URL, environment values, or other executable instructions. Verify the dependency against the project configuration before installing anything named by an untrusted file.

Metadata bytes are authenticated as AES-GCM associated data. Unknown fields, non-canonical JSON, modified metadata, altered ciphertext, and unsupported formats are rejected.

API

dump_env(values, path=".env", *, profile="obfuscation", key=None, key_id=None)
load_env(path=".env", *, key=None) -> dict[str, str]
loads_env(data, *, key=None) -> dict[str, str]
generate_key() -> str

Only CPython 3.11 and newer are supported. New files use AOE1 exclusively; Pickle and older formats are intentionally unsupported.

Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

agent_opaque_env-0.4.0-cp311-abi3-win_amd64.whl (806.6 kB view details)

Uploaded CPython 3.11+Windows x86-64

agent_opaque_env-0.4.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (886.8 kB view details)

Uploaded CPython 3.11+manylinux: glibc 2.17+ x86-64

agent_opaque_env-0.4.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (824.0 kB view details)

Uploaded CPython 3.11+manylinux: glibc 2.17+ ARM64

agent_opaque_env-0.4.0-cp311-abi3-macosx_11_0_arm64.whl (768.1 kB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

File details

Details for the file agent_opaque_env-0.4.0-cp311-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for agent_opaque_env-0.4.0-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 2972aafd848ee085dfbd7ac08e7d29961fbab8f6477dc41663e34bf8a4c77ef1
MD5 a222e7ba9ea21171c58e29eaa8db6d2e
BLAKE2b-256 5d2bee7aa4dda7e0189500c91e488f855e5ca084ce009257dbf2ab63bdfcb518

See more details on using hashes here.

File details

Details for the file agent_opaque_env-0.4.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for agent_opaque_env-0.4.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c34f5aeddb51d229b2ed8b62af5690b2114a01d66ffdae2dc749d1ced8642098
MD5 a17d9bfdb75ca8d6f775eba77901cfa1
BLAKE2b-256 4de1065f14d0084c1c8fdf9edaba7911862414a3e18b5eb3159c4ee3d079bab5

See more details on using hashes here.

File details

Details for the file agent_opaque_env-0.4.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for agent_opaque_env-0.4.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 31cb8878dcc6c560e0546f1429badb896953146bc041cc170f9868fef424a3b0
MD5 c0d7a798e1bb81ab22d51c7f37394d10
BLAKE2b-256 f4b458d51f68136545aeb178ecc348bb1ff2d304bb6bfdb0f7b692392864e0ad

See more details on using hashes here.

File details

Details for the file agent_opaque_env-0.4.0-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for agent_opaque_env-0.4.0-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cd56b5256d1f560b0767fa1a1136c693a99d04ea6aa7f25ca130051e5fccde4c
MD5 de7b4fc16add3abe39de3ed8648cf3ab
BLAKE2b-256 6aeda515b5c9fdd71f54fd414cb7e5e7a3ef1b75abc2ae31c410925dca09876b

See more details on using hashes here.

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