murk-secrets
Python bindings for murk — an encrypted secrets manager for developers.
murk stores encrypted secrets in a single .murk file safe to commit to git. This package lets Python apps read those secrets at runtime.
Prerequisites
You need the murk CLI to create and manage vaults. This package only reads them.
# Install the CLI first
brew tap interrupted-sh/murk && brew install murk
# Initialize a vault and add secrets
murk init
murk add DATABASE_URL
murk add API_KEY
Then add the Python package to your project:
pip install murk-secrets
Quick start
# Load your key (created by murk init)
source .env
import murk
# Load the vault (reads MURK_KEY from environment)
vault = murk.load()
# Get a single secret
db_url = vault.get("DATABASE_URL")
# Get all secrets as a dict
secrets = vault.export()
# Dict-style access
api_key = vault["API_KEY"]
API
murk.load(vault_path=".murk") -> Vault
Load and decrypt a murk vault. Reads MURK_KEY or MURK_KEY_FILE from the environment.
murk.get(key, vault_path=".murk") -> str | None
One-liner: load the vault and get a single value.
murk.export_all(vault_path=".murk") -> dict[str, str]
One-liner: load the vault and export all secrets as a dict.
murk.has_identity() -> bool
Whether a decryption identity (MURK_KEY / MURK_KEY_FILE) is available — i.e. whether load() can decrypt. This is not a check for whether a secret exists; use key in vault / vault.keys() for that.
Vault
| Method | Returns | Description |
|---|---|---|
vault.get(key) |
str | None |
Get a single decrypted value |
vault.export() |
dict[str, str] |
All secrets as a dict |
vault.keys() |
list[str] |
List of key names |
vault[key] |
str |
Dict-style access (raises on missing key) |
key in vault |
bool |
Check if a key exists |
len(vault) |
int |
Number of secrets |
Scoped (per-user) overrides are applied automatically — if you have a scoped value for a key, it takes priority over the shared value.
Memory hygiene
Every decrypted value murk returns is a plain Python string. murk zeroes plaintext from its own memory when a value is dropped, but that guarantee ends at the FFI boundary: once a value crosses into Python the interpreter owns it, and its garbage collector — not murk — controls its lifetime. This is inherent to reading secrets into a process (see the threat model); avoid holding decrypted values longer than you need them.
Agent policy
When the loaded key is an agent grant (minted with murk agent grant), the vault's agent policy is enforced on read, the same way the CLI enforces it at murk agent exec: get() and export() raise RuntimeError if the policy forbids a key. Operator keys are unaffected. This makes a policy vault strict from every entry point — though an agent already cannot decrypt out-of-scope secrets at all, since its ephemeral key is not a recipient of them.
Environment
Set one of:
MURK_KEY— your age secret key directlyMURK_KEY_FILE— path to your key file (created bymurk init)
The easiest setup is source .env in your project directory after running murk init.
Requirements
- Python >= 3.9
- murk CLI installed (to create and manage vaults)
- A
.murkvault file in your project (created withmurk init) MURK_KEYorMURK_KEY_FILEin the environment (created bymurk init, loaded viasource .env)
License
MIT OR Apache-2.0
Metadata
Release files for murk-secrets 0.12.0
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 | Actions |
|---|---|---|---|---|
| murk_secrets-0.12.0.tar.gz | 7.2 MB | With provenance | Details for murk_secrets-0.12.0.tar.gz |
Built distributions (wheels)
| File | Actions Reset | |||
|---|---|---|---|---|
| murk_secrets-0.12.0-cp39-abi3-win_amd64.whl | CPython 3.9 | abi3 | Windows x86-64 | Details for murk_secrets-0.12.0-cp39-abi3-win_amd64.whl |
| murk_secrets-0.12.0-cp39-abi3-manylinux_2_28_aarch64.whl | CPython 3.9 | abi3 | Linux glibc 2.28+ ARM64 | Details for murk_secrets-0.12.0-cp39-abi3-manylinux_2_28_aarch64.whl |
| murk_secrets-0.12.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.9 | abi3 | Linux glibc 2.17+ x86-64 | Details for murk_secrets-0.12.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
| murk_secrets-0.12.0-cp39-abi3-macosx_11_0_arm64.whl | CPython 3.9 | abi3 | macOS 11.0+ ARM64 | Details for murk_secrets-0.12.0-cp39-abi3-macosx_11_0_arm64.whl |
| murk_secrets-0.12.0-cp39-abi3-macosx_10_12_x86_64.whl | CPython 3.9 | abi3 | macOS 10.12+ x86-64 | Details for murk_secrets-0.12.0-cp39-abi3-macosx_10_12_x86_64.whl |
Total release size: 13.3 MB
Release files / murk_secrets-0.12.0.tar.gz
| Download URL | murk_secrets-0.12.0.tar.gz |
|---|---|
| Size | 7.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7af403e5360b6650e95a0bc438d6d86e5ebeeb2d140d80de7114e0fffe299669
|
|
BLAKE2b-256 checksum How to use checksums |
0c32de63963095d7e92495fd03094a01e5ecf21af3ff7731feba2be887ccce65
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / murk_secrets-0.12.0-cp39-abi3-win_amd64.whl
| Download URL | murk_secrets-0.12.0-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
49bb38d2f5205935bdfb0472f5bfd6afd851981578c31688f54d3070b1f4b057
|
|
BLAKE2b-256 checksum How to use checksums |
21a137e579d6a957b0810e555961233cbb29a84a41fa8957707da80c2f7521b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / murk_secrets-0.12.0-cp39-abi3-manylinux_2_28_aarch64.whl
| Download URL | murk_secrets-0.12.0-cp39-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.9 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
afc127fcf363793ff9c6ea7d6e4720cb8936d059c3f900f82feb9754706346ba
|
|
BLAKE2b-256 checksum How to use checksums |
7f61483ed1aa5c205dd9798b251e34da8ae14a06f75bbe62d5711cc47356d916
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / murk_secrets-0.12.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | murk_secrets-0.12.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
f596c83e7bc748fdb02d7dde2082af1845d27503052aa1b6daba04a757107c35
|
|
BLAKE2b-256 checksum How to use checksums |
56defd09f83fe3b7ad2f650fd9e2d596ba4d0612c9270ff7afec939b90120b43
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / murk_secrets-0.12.0-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | murk_secrets-0.12.0-cp39-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.9 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
3106a8ab064892ee17b33bf998c1e0a6167d180581f7667d51f3789f45ad0c75
|
|
BLAKE2b-256 checksum How to use checksums |
0913f347e4026eccb6abda9a61b7e1b06bbe6dd7b80ba24b4d5151dd4fca1f7b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / murk_secrets-0.12.0-cp39-abi3-macosx_10_12_x86_64.whl
| Download URL | murk_secrets-0.12.0-cp39-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.9 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
3473fffb5762c1470a2e2de030079a37790b815de71988f424ae31c608eb7fcf
|
|
BLAKE2b-256 checksum How to use checksums |
17d57c75fdcc69a68bdfe7b7a717246507338aa072069eb5d3b269363cf528eb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logSecurity for murk-secrets 0.12.0
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.
Full provenance
All 6 files in this release have been uploaded with provenance metadata.
Attestation for murk_secrets-0.12.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logA 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.