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.3.0-cp311-abi3-win_amd64.whl (803.6 kB view details)

Uploaded CPython 3.11+Windows x86-64

agent_opaque_env-0.3.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (884.5 kB view details)

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

agent_opaque_env-0.3.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (822.9 kB view details)

Uploaded CPython 3.11+manylinux: glibc 2.17+ ARM64

agent_opaque_env-0.3.0-cp311-abi3-macosx_11_0_arm64.whl (766.6 kB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

File details

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

File metadata

File hashes

Hashes for agent_opaque_env-0.3.0-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 452a32373f08bf221996019f24a9e6ae6667dd70202a1fe6673ae93b3b073c56
MD5 96b4dab22cd2317a30d95cc79b4617da
BLAKE2b-256 64ae8e102657d3278f2b4d896f176c1ee6cdba1573094b952726e51c49c40344

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for agent_opaque_env-0.3.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ef44cd1cd6d47d572f572ca204a2c2edc7382bb9037d52d2144b6079ec2c2526
MD5 4b29a557830ac070e1e77f3193718e26
BLAKE2b-256 319d1574eaa838ef93dc36606bcdf19f95d91d2edda50771d499a197ba84fe04

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for agent_opaque_env-0.3.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1101937c3cc0166888a04cd07c35fe81386e3c5af489820f70ed9e707adbdec8
MD5 2365374345fb59953159c134c6e3e2b6
BLAKE2b-256 182ca754b51a3e4743ac9e7d441c698e6a74176c75a00e3f0c0e9fc843263b56

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for agent_opaque_env-0.3.0-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e85a6ebd3f5bb85ab15732c5874d3971aa9cf3d206d34c77ee2bad42000d482d
MD5 564bdf8301861e902a27107227975c10
BLAKE2b-256 eb0c37b8aa5dfbceb68a12cf56075ac75d28ec8bbb2510ec88da24bfff917938

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