Skip to main content

Magic Wormhole Mailbox Server

PyPI Tests codecov.io

This repository holds the code for the main server that Magic-Wormhole clients connect to. The server performs store-and-forward delivery for small key-exchange and control messages. Bulk data is sent over a direct TCP connection, or through a transit-relay.

Clients connect with WebSockets, for low-latency delivery in the happy case where both clients are attached at the same time. Message are stored to enable non-simultaneous clients to make forward progress. The server uses a small SQLite database for persistence (and clients will reconnect automatically, allowing the server to be rebooted without losing state). An optional "usage DB" tracks historical activity for status monitoring and operational maintenance.

Installation

pip install magic-wormhole-mailbox-server

You either want to do this into a "user" environment (putting the twist and twistd executables in ~/.local/bin/) like this:

pip install --user magic-wormhole-mailbox-server

or put it into a virtualenv, to avoid modifying the system python's libraries, like this:

virtualenv venv
source venv/bin/activate
pip install magic-wormhole-mailbox-server

You probably don't want to use sudo when you run pip, since the dependencies that get installed may conflict with other python programs on your computer. pipsi is usually a good way to install into isolated environments, but unfortunately it doesn't work for magic-wormhole-mailbox-server, because we don't have a dedicated command to start the server (twist, described below, comes from the twisted package, and pipsi doesn't expose executables from dependencies).

For the installation from source, clone this repo, cd into the folder, create and activate a virtualenv, and run pip install ..

Running A Server

Note that the standard Magic-Wormhole command-line tool is preconfigured to use a mailbox server hosted by the project, so running your own server is only necessary for custom applications that use magic-wormhole as a library.

The mailbox server is deployed as a twist/twistd plugin. Running a basic server looks like this:

twist wormhole-mailbox --usage-db=usage.sqlite

Use twist wormhole-mailbox --help for more details.

If you use the default --port=tcp:4000, on a machine named example.com, then clients can reach your server with the following option:

wormhole --relay-url=ws://example.com:4000/v1 send FILENAME

Using Docker

Dockerfile content:

FROM python:3.11
RUN pip install magic-wormhole-mailbox-server
CMD [ "twist", "wormhole-mailbox","--usage-db=usage.sqlite" ]

Note: This will be running as root, you should adjust it to be in user space for production.

Build and run:

docker build -t magicwormhole Dockerfile
docker run -p 4000:4000 -d magicwormhole

Connect:

wormhole --relay-url=ws://localhost:4000/v1 send FILENAME

License, Compatibility

This library is released under the MIT license, see LICENSE for details.

This library is compatible with python3 (3.10 and higher).

Release files for magic-wormhole-mailbox-server 0.8.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 magic-wormhole-mailbox-server 0.8.0
File Size Uploaded
magic_wormhole_mailbox_server-0.8.0.tar.gz 73.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for magic-wormhole-mailbox-server 0.8.0
File Interpreter ABI Platform
magic_wormhole_mailbox_server-0.8.0-py3-none-any.whl Python 3 none any Details

Total release size: 120.6 kB

Release files / magic_wormhole_mailbox_server-0.8.0.tar.gz

Download URL magic_wormhole_mailbox_server-0.8.0.tar.gz
Size 73.8 kB
Tags Source
SHA-256 checksum
How to use checksums
c6426c4658cc66722bec0f4231bd52e8088e43379a8508776208dd0252a58273
BLAKE2b-256 checksum
How to use checksums
aead6670956e0e464c43b6366b274e12839ba6cae17e714dd68a73cd2a9d81d8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.7

Release files / magic_wormhole_mailbox_server-0.8.0-py3-none-any.whl

Download URL magic_wormhole_mailbox_server-0.8.0-py3-none-any.whl
Size 46.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e03f6a60284c6174baf4d94ee880f90071c1d01afe7f65380fa5f20ff0f01ad4
BLAKE2b-256 checksum
How to use checksums
58ae9e4d43a73998d06c37d79a6d892f382faae769ca4450e1cfb2f45fa08249
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.7

Release history Release notifications | RSS feed

This release

0.8.0 This release

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.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