Skip to main content

Whisper

PyPI Version GitHub Repo stars

A simple command-line utility to securely transfer files or data over WebSocket. Useful for one-time file transfers between devices, especially for large files or over the internet.

Networking model

  • One peer is the server, and the other is the client. The server must have an exposed port, e.g. via port forwarding or being on the LAN.
  • Data is transferred in one direction through a continuous stream. Once the stream ends, the connection closes and the server shuts down.
  • Data may be transferred in either direction, regardless of who is the server/client. This is useful because it requires only one peer to have port forwarding (or similar) set up, without the need to switch to the other peer for data flowing in the opposite direction.
  • The stream may continue indefinitely. No "file size" or similar is sent as metadata; once a connection is established, the stream may continue to exist, sending data at whatever pace, until it ends or either side forcibly closes the connection.

Installation

From PyPI

Run: pip install whisper-data
Alternatively you may use pipx: pipx install whisper-data

From source (on Unix)

After cloning the repo, ensure that you have all dependencies listed in pyproject.toml, and zsh; then, run the install.zsh script.

Usage

For full usage information, pass --help to the relevant command.

whisper command

(Aliased as wis)

This is the main command of whisper.

whisper-certs command

(Aliased as wis-certs)

This is a simple wrapper around openssl to create certificates, and as such it requires the openssl command to be installed in order to create these certificates.

Example usage

Create a certificate

wis-certs create --name primary --owner soup --expire-in 100

Transfer a file (server to client)

The server is assumed to have a key ~/.whisper/keys/primary.key and matching certificate ~/.whisper/certs/primary.crt with the common name soup, and the client the same with the common name clippy. Both peers must also have the other peer's certificate under any filename in their ~/.whisper/certs/ directory.

# Server (run first)
wis --serve bee_movie_script.txt --who clippy

# Client
wis --connect-to wss://108.51.51.116:8409 --recv-to bee_movie_script.txt --who soup

Transfer a file (client to server)

Same certificate setup as above.

# Server (run first)
wis --serve --recv-to eviction_notice.md --who clippy

# Client
wis --connect-to wss://108.51.51.116:8409 eviction_notice.md --who soup

Usage as a module

While usage as a module is not officially supported, you may import whisper's interfaces via the whisper_data module. All functions and classes are documented and type hinted.

Credit

No AI was used; coded entirely by a can of soup :3

Metadata

Release files for whisper-data 1.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for whisper-data 1.0.4
File Size Uploaded
whisper_data-1.0.4.tar.gz 29.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for whisper-data 1.0.4
File Interpreter ABI Platform
whisper_data-1.0.4-py3-none-any.whl Python 3 none any Details

Total release size: 59.1 kB

Release files / whisper_data-1.0.4.tar.gz

Download URL whisper_data-1.0.4.tar.gz
Size 29.3 kB
Tags Source
SHA-256 checksum
How to use checksums
5c99ff112df63095260d4054a4deb160a8765eb856e05db0cead475d6679f331
BLAKE2b-256 checksum
How to use checksums
3584003737219e7e3b06df3bbe74cf9846a55d85c2556edac431e8ef7c01cb7c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.34.2

Release files / whisper_data-1.0.4-py3-none-any.whl

Download URL whisper_data-1.0.4-py3-none-any.whl
Size 29.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
25d979857a057e9e3a6052e4072259e3b3bdee7928b7545d5a809740fa2a7d39
BLAKE2b-256 checksum
How to use checksums
93eb2fb9bb7fa788289ca5544817ff333c85330f9fea850a70707bbb419c31c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.34.2

Release history Release notifications | RSS feed

This release

1.0.4 This release

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

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