Home
Softono

Wormhole William Mobile

Open source MIT Kotlin
212
Stars
22
Forks
7
Issues
8
Watchers
8 months
Last Commit

 About Wormhole William Mobile

End-to-end encrypted file transfer for Android and iOS. A Magic Wormhole Mobile client.

Platforms

Web Self-hosted iOS Android

Languages

Kotlin

Links

Need Help Installing Wormhole William Mobile?

We provide expert installation service for this software. Our team will install, configure, and secure Wormhole William Mobile on your server. plans start at just $30.

Wormhole William Mobile

View on GitHub

wormhole-william-mobile

A Magic Wormhole client for Android.

Current limitations:

  • Received directories are kept in zip form
  • Send only supports sending a single file

Installing

Available from the Play Store: https://play.google.com/store/apps/details?id=io.sanford.wormhole_william

Prebuilt APKs are provided with each release. Install to an Android device with developer mode enabled:

adb install wormhole-william.release.apk

Building

Prerequisites

This project uses Nix for reproducible builds. Install Nix and enable flakes:

# Install Nix (if not already installed)
curl -L https://nixos.org/nix/install | sh

# Enable flakes (add to ~/.config/nix/nix.conf)
experimental-features = nix-command flakes

Build Commands

# Enter the development environment
nix develop

# One-time setup: initialize gomobile
make init

# Build debug APK
make

# Build release APK (requires signing key)
make release

The debug APK will be output to wormhole-william.debug.apk.

Project Structure

wormhole-william-mobile/
├── wormhole/              # Go library (gomobile bindings)
│   ├── wormhole.go        # Main client API
│   ├── callbacks.go       # Callback interfaces for Android
│   ├── pending.go         # File transfer acceptance handling
│   └── config.go          # Configuration persistence
│
├── android/               # Android application
│   ├── app/src/main/
│   │   ├── kotlin/        # Kotlin/Compose UI
│   │   └── res/           # Android resources
│   └── build.gradle.kts   # Gradle build config
│
├── Makefile               # Build orchestration
└── flake.nix              # Nix flake for dev environment

Architecture

The app uses a native Android UI built with Jetpack Compose. The wormhole protocol logic is implemented in Go and bound via gomobile:

┌─────────────────────────────────────┐
│         Kotlin/Compose UI           │
│  (Screens, ViewModels, Repository)  │
└──────────────┬──────────────────────┘
               │ gomobile bindings
┌──────────────▼──────────────────────┐
│          Go wormhole package        │
│    (Wraps wormhole-william lib)     │
└─────────────────────────────────────┘

Screenshots

Receive Send Text Send File

iOS

iOS development is on the ios branch.