Preview
CLI download
uvx -p 3.13 --from pirateface pf download org/model
  • Check the model files with Hugging Face
  • Look for peers in the Pirate Face swarm
  • Use Hugging Face if the swarm cannot help
  • Save verified files in the Hugging Face cache

Pirate Face now lists 5,149 models as torrents, most of them added by the community. Until today, using one meant leaving your normal workflow: open the model page, copy the magnet, run a torrent client, then point your code at the files.

When Pirate Face reached the front page of Hacker News, commenters agreed that BitTorrent is the right format for model weights. The friction was everywhere else: tooling, and trusting files from strangers. Pirate Face Hub removes both. Your existing code stays exactly as it is.

Download from your terminal

Pirate Face Hub includes a pf download command. With uv installed, run:

uvx -p 3.13 --from pirateface pf download org/model

Replace org/model with the Hugging Face model ID you want to download. The command downloads the model into your Hugging Face cache, using the swarm when peers are available and falling back to Hugging Face when needed. No magnets to copy or separate torrent client to open.

The command selects Python 3.13 because the package currently supports Python 3.12 and 3.13. The package README documents the CLI and Python requirements.

One package, no code changes

Pirate Face Hub works with transformers, diffusers, sentence-transformers, and anything that downloads through huggingface_hub.

Run any script with the package added:

uv run --with pirateface python your_script.py

Or install it once and forget about it:

pip install pirateface

That is the whole setup. There is no config, no new API, and no environment variable to set. Code that already loads models keeps working, and the files now come from the swarm:

from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained("org/model")  # unchanged

That includes hf_hub_download and snapshot_download. The Hugging Face hf download command also works when Pirate Face Hub is installed in the same Python environment.

How it works

Hugging Face still tells your code which files a model has and what each one should look like. Pirate Face Hub changes only where the bytes come from.

  1. Your script
  2. pirateface
  3. Pirate Face swarm
  4. Hugging Face: if the swarm can't help

For each file, the package asks Pirate Face for the model's torrent and downloads the file from peers in the swarm.

If Pirate Face has no torrent for the model, or no peer answers within 30 seconds, that file comes from Hugging Face as usual.

Downloading over BitTorrent works like any torrent client: other peers can see your IP address. The seeding guide covers what that means in practice.

Every missing model joins the queue

When you download a model Pirate Face does not have yet, the package sends one request in the background asking Pirate Face to rescue it. It sends only the model name. Pirate Face's own workers download the model from Hugging Face, check every file, build the torrent and list it. You can watch the queue on the Rescue board.

To turn requests off, set PF_NO_RESCUE=1.

Contributing has never been easier

Every download through Pirate Face Hub uses the public swarm, and every model it does not find yet becomes a listed torrent that anyone can seed. Add one package to the scripts you already run, and they become part of the infrastructure behind Making Models Permanent.

Pirate Face Hub is open source under the MIT license. The code is on GitHub and the package is on PyPI. It needs Python 3.12 or 3.13.