Skip to main content

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:

  1. AES-256-GCM — applied by the adapter before upload (key derivation: PBKDF2-HMAC-SHA256, 600K iterations)
  2. 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)

Source distribution for pulse-proton 0.1.0
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)

Table of built distributions (wheels) for pulse-proton 0.1.0
File Interpreter ABI Platform Actions
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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page