pulse-proton
Proton Drive adapter for PULSE Protocol.
Store and retrieve secrets in Proton Drive using PULSE semantic messages.
Security model
Two independent encryption layers:
- AES-256-GCM — applied by the adapter before upload (key derivation: PBKDF2-HMAC-SHA256, 600K iterations)
- Proton Drive E2E encryption — applied by Proton at the storage layer
A compromised Proton session cannot read secret values in plaintext.
Installation
pip install pulse-proton
Credentials — environment variables only
export PROTON_USERNAME="you@proton.me"
export PROTON_PASSWORD="your-proton-password"
export PULSE_VAULT_KEY="your-strong-master-key"
Quickstart
import os
from pulse_proton import ProtonAdapter
from pulse.message import PulseMessage
adapter = ProtonAdapter(
username=os.environ["PROTON_USERNAME"],
password=os.environ["PROTON_PASSWORD"],
vault_key=os.environ["PULSE_VAULT_KEY"],
)
adapter.connect()
# Store a secret
adapter.send(PulseMessage(
action="ACT.STORE.SECRET",
parameters={"key": "openai-api-key", "value": "sk-..."},
))
# Retrieve a secret
response = adapter.send(PulseMessage(
action="ACT.GET.SECRET",
parameters={"key": "openai-api-key"},
))
print(response.content["parameters"]["value"]) # sk-...
# List all secrets
response = adapter.send(PulseMessage(action="ACT.LIST.SECRETS", parameters={}))
print(response.content["parameters"]["keys"]) # ["openai-api-key", ...]
# Delete a secret
adapter.send(PulseMessage(
action="ACT.DELETE.SECRET",
parameters={"key": "openai-api-key"},
))
adapter.disconnect()
Supported PULSE actions
| Action | Parameters | Description |
|---|---|---|
ACT.STORE.SECRET |
key, value, tags? |
Encrypt and upload to Proton Drive |
ACT.GET.SECRET |
key |
Download and decrypt from Proton Drive |
ACT.DELETE.SECRET |
key |
Remove secret file from Proton Drive |
ACT.LIST.SECRETS |
— | List all stored secret keys |
Storage format
Each secret is stored as <key>.json in a dedicated Drive folder (pulse-secrets by default):
{
"key": "openai-api-key",
"value": "<AES-256-GCM encrypted, base64>",
"created_at": "2026-04-03T12:00:00+00:00",
"tags": {"env": "prod"}
}
License
Apache 2.0
Metadata
Release files for pulse-proton 0.1.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 |
|---|---|---|---|---|
| pulse_proton-0.1.0.tar.gz | 18.7 kB | Without provenance | Details for pulse_proton-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pulse_proton-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for pulse_proton-0.1.0-py3-none-any.whl |
Total release size: 33.6 kB
Release files / pulse_proton-0.1.0.tar.gz
| Download URL | pulse_proton-0.1.0.tar.gz |
|---|---|
| Size | 18.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d67f532ad7f42accbb5a51b4fcf900a715beeeabde17f3ef1adc98632b1416b2
|
|
BLAKE2b-256 checksum How to use checksums |
98d60e0408a914190ce001ddb2d416fd6b39da743f0220f11472d9415d75e51a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / pulse_proton-0.1.0-py3-none-any.whl
| Download URL | pulse_proton-0.1.0-py3-none-any.whl |
|---|---|
| Size | 14.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8629898ee831d07c5e355d5bb8d97078e4facfbb00c152d8db1dc948af24e244
|
|
BLAKE2b-256 checksum How to use checksums |
628c1d8347c7654cd1bbf88164330576576d2286de8b685885656506ce893b69
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Security for pulse-proton 0.1.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.
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.