Skip to main content

Give any Python agent a real, routable Whisper IPv6 identity and safe egress.

Project description

whisper-id

A real, routable IPv6 identity and safe egress for any Python agent — in two calls.

pip install whisper-id            # add [socks] for requests+SOCKS: pip install "whisper-id[socks]"
from whisper_id import register, egress
import requests

agent = register("my-bot")                       # a routable Whisper /128 identity
with egress():                                   # route this block through your /128
    requests.get("https://api64.ipify.org").text # ← leaves from your Whisper IPv6

That's it. Inside the with block the standard proxy env vars point at your local Whisper proxy, so requests, httpx, urllib, and most libraries "just work"; on exit they're restored.

API

Call Does
register(name, *, new_key=False) Create a named agent — a routable /128. new_key=True mints a new agent and its own API key. → Agent(address, id, name)
egress(agent=None, *, tier="socks5", set_env=True) Context manager: bring up egress bound to your /128. Yields Egress (.port, .proxy_url, .socks_url, .proxies). tier="wireguard" for a routed /128.
verify(address) Keyless — is address a real Whisper agent? (DANE + DNSSEC + reverse-DNS + JWS) → bool
ip() Your current egress IP, proving it's your /128. → str

Pass the proxy explicitly instead of via env if you prefer:

with egress(set_env=False) as e:
    requests.get(url, proxies=e.proxies)

Requirements

The whisper CLI on your PATH (this package is a thin, dependency-free wrapper over it):

curl get.whisper.online | sh

For authenticated calls (register, egress, ip), set WHISPER_API_KEY in the environment or run whisper login. verify is keyless. ($WHISPER_BIN overrides the CLI path.)

Links

MIT licensed.

Project details


Download files

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

Source Distribution

whisper_id-0.1.0.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

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

whisper_id-0.1.0-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

File details

Details for the file whisper_id-0.1.0.tar.gz.

File metadata

  • Download URL: whisper_id-0.1.0.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for whisper_id-0.1.0.tar.gz
Algorithm Hash digest
SHA256 36963b18a0bf7e85534eea0298b20967f1a3fb26c82480b6981d69e1d6a41335
MD5 6ab0621d2a430e6fe7aaf3bf01fa40c3
BLAKE2b-256 53ed6df032aeacf89a97feee4dacbcbd3b252800c3719c49ff06cebb591dcb86

See more details on using hashes here.

Provenance

The following attestation bundles were made for whisper_id-0.1.0.tar.gz:

Publisher: publish.yml on whisper-sec/whisper-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file whisper_id-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: whisper_id-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for whisper_id-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c75404145d4ccd29fdc8f134a96c2a6867855bc94eaff76593b3cb5df639eedc
MD5 aad779cad5ef65fece0d1c94a3ed896e
BLAKE2b-256 ef5544c145c129964a5b7e03e6f7a4c982efb60cf6e9b431a4802fb627ee98c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for whisper_id-0.1.0-py3-none-any.whl:

Publisher: publish.yml on whisper-sec/whisper-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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