Skip to main content

pypiron logo pypiron

CI PyPI License: MIT Docs

An ultra-fast Python package server, written in Rust.

pypiron is the fastest, most reliable PyPI server (and mirror) available.

Max sustained install throughput: pypiron vs bandersnatch, pypiserver, pypicloud, devpi, proxpi

  • 100×+ faster than any PyPI server. 8,288 verified installs/s on 2 vCPU.
  • Serves PyPI-scale traffic — measured, not extrapolated. Replaying PyPI's real download stream, one 8-vCPU box handles the index at ~200,000 requests/s with p99 under 3 ms — about double PyPI's global average (bench/replay).
  • Dependency cooldown, on by default. New releases wait 7 days. Most attacks surface first.
  • Private and public, one URL. A name is yours or PyPI's, never both. No dependency confusion.
  • Scales to a fleet. Point any number of nodes at one bucket. No coordination.
  • Survives a region — or a whole cloud — going down. Run nodes across regions or clouds (S3 + GCS + Azure) on one bucket list; every upload lands on all of them, and reads fail over with zero data loss.
  • Works with everything. uv, pip, poetry, pdm, twine, pipenv, hatch, flit.
  • Download stats built in (beta).

Quickstart

# 1. Start a server (serves http://localhost:8080) — native binary…
uvx pypiron serve --admin-pass "$ADMIN"

# …or in a container (storage at /data, built-in healthcheck):
docker run -p 8080:8080 -e PYPIRON_ADMIN_PASS="$ADMIN" \
  ghcr.io/blackthorn-interstellar/pypiron:latest

# 2. Publish
uv publish --publish-url http://localhost:8080/legacy/ \
  --username admin --password "$ADMIN" dist/*

# 3. Install
uv add --default-index http://localhost:8080/simple/ acme-widgets

Only --admin-pass set: writes need the admin credential, reads stay public. pip, twine, and poetry equivalents: https://pypiron.com/#quickstart.

Going further

  • Setup — private packages, public proxy, sync mirror, S3
  • Configuration — every flag and its PYPIRON_* env var
  • Benchmarks — how the numbers above were measured
  • For AI agents — a decision guide, written agent to agent

Tested like your supply chain depends on it

Anyone can post a benchmark chart. pypiron is validated end-to-end, adversarially, and continuously — and every claim below links to a check you can run yourself.

  • The whole ecosystem, for real. Every test run drives the real server over HTTP with eight real clients — uv, pip, poetry, pdm, pipenv, hatch, flit, twine. Not mocks: the actual tools your team uses.
  • All of PyPI. All of it. The parsers chew through every file ever uploaded to PyPI — all 17 million — and match ground truth on each one.
  • Kill -9'd until it's boring. We kill the server at every step of every write, kill fleet nodes mid-upload, and feed it truncated, corrupted, and hash-mismatched upstream responses. It converges to a consistent, installable state every time (crash sweep, fleet chaos, upstream faults).
  • Convergence is machine-checked, not sampled. A model checker exhaustively verifies the write protocol and the multi-bucket merge over every bounded interleaving of writers, workers, crashes, and partition-shaped conflicts — running the same decision functions the server ships, bound by conformance tests so code and model can't drift apart (the models).
  • A fleet in a bottle, every night. Deterministic simulation runs a whole multi-node fleet single-threaded on virtual time — on the order of a hundred thousand seeded crash/fault/restart schedules per night, every failure reproducible from an 8-byte seed (the simulator).
  • Fuzzed nightly, audited on every PR. Coverage-guided fuzzers hammer the parsers that eat attacker-controlled bytes every night; a new advisory anywhere in the dependency tree fails the build.
  • Audited until the findings ran dry. Fable 5 — Anthropic's frontier model — ran security audit pass after security audit pass until they came back clean. All told, over $7,000 of frontier-model compute (at API list prices) went into building and hardening pypiron.
  • Benchmarks with nothing to hide. The chart above comes from published docker-compose rigs for all five competitors. Re-run it. We'll wait.

Comparison

Hover a checkmark for the caveat where your Markdown renderer supports it.

Feature pypiron bandersnatch pypiserver pypicloud devpi proxpi
Easy setup
Fast
Private package hosting
Caching PyPI proxy
Sync mirror
Dependency cooldown
Malware blocking
No dependency confusion
Vulnerability audit
Scalable without database
Multi-region / multi-cloud failover
Human-readable package pages
Download stats
Disk-backed
Cloud-storage-backed

Compared with bandersnatch, pypiserver, pypicloud (archived since 2023), devpi, and proxpi.

License

MIT — see LICENSE.

Download files

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

Source Distribution

pypiron-0.0.14.tar.gz (3.9 MB view details)

Uploaded Source

Built Distributions

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

pypiron-0.0.14-py3-none-win_arm64.whl (5.8 MB view details)

Uploaded Python 3Windows ARM64

pypiron-0.0.14-py3-none-win_amd64.whl (6.2 MB view details)

Uploaded Python 3Windows x86-64

pypiron-0.0.14-py3-none-win32.whl (5.5 MB view details)

Uploaded Python 3Windows x86

pypiron-0.0.14-py3-none-musllinux_1_2_x86_64.whl (6.1 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

pypiron-0.0.14-py3-none-musllinux_1_2_i686.whl (5.9 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

pypiron-0.0.14-py3-none-musllinux_1_2_armv7l.whl (5.6 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

pypiron-0.0.14-py3-none-musllinux_1_2_aarch64.whl (5.7 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

pypiron-0.0.14-py3-none-manylinux_2_31_riscv64.whl (5.8 MB view details)

Uploaded Python 3manylinux: glibc 2.31+ riscv64

pypiron-0.0.14-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

pypiron-0.0.14-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (6.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

pypiron-0.0.14-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (6.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

pypiron-0.0.14-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (6.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

pypiron-0.0.14-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (5.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

pypiron-0.0.14-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

pypiron-0.0.14-py3-none-macosx_11_0_arm64.whl (5.6 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

pypiron-0.0.14-py3-none-macosx_10_12_x86_64.whl (5.9 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file pypiron-0.0.14.tar.gz.

File metadata

  • Download URL: pypiron-0.0.14.tar.gz
  • Upload date:
  • Size: 3.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for pypiron-0.0.14.tar.gz
Algorithm Hash digest
SHA256 cdcdb5876d25d4db67b008470fa3d9834dd0a53f9ed8ae2072ab260ccd97c66c
MD5 1bfb0f29ddcb8204f81b51150d00e3ca
BLAKE2b-256 6d136a5a2b41525c863bd62291242eb5ee00fbf7be5c6a5fb0205a0673abc9eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypiron-0.0.14.tar.gz:

Publisher: ci.yml on blackthorn-interstellar/pypiron

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

File details

Details for the file pypiron-0.0.14-py3-none-win_arm64.whl.

File metadata

  • Download URL: pypiron-0.0.14-py3-none-win_arm64.whl
  • Upload date:
  • Size: 5.8 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for pypiron-0.0.14-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 8df9603a3d054917d07efa0b8805bfffd54366c9e61fbef52fdfa26a4cff28d1
MD5 e05e5d0af4f27b66e7b6a6fc7fc938af
BLAKE2b-256 06fa2fd35c89b7ead99a6b0f32c8529019c1401918d6c08469ffcb5334ba8dd6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypiron-0.0.14-py3-none-win_arm64.whl:

Publisher: ci.yml on blackthorn-interstellar/pypiron

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

File details

Details for the file pypiron-0.0.14-py3-none-win_amd64.whl.

File metadata

  • Download URL: pypiron-0.0.14-py3-none-win_amd64.whl
  • Upload date:
  • Size: 6.2 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for pypiron-0.0.14-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 b5a54b59ca970d8dba85f4fa354c3263d30868994315adbd6ef86c4e81ba68fa
MD5 6f4e4c8de98b2e454ad541496ca09992
BLAKE2b-256 f33c9fb2f6f77b499bce8c7424cc05c66624b1eafe00c79575ec2fbe9a311022

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypiron-0.0.14-py3-none-win_amd64.whl:

Publisher: ci.yml on blackthorn-interstellar/pypiron

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

File details

Details for the file pypiron-0.0.14-py3-none-win32.whl.

File metadata

  • Download URL: pypiron-0.0.14-py3-none-win32.whl
  • Upload date:
  • Size: 5.5 MB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for pypiron-0.0.14-py3-none-win32.whl
Algorithm Hash digest
SHA256 cc3a8d30ee4519d8b1e2083be33a77568597759d9d54736d4b7efbbb4b8b9328
MD5 70a4413d6379f8754fb379df2461d6b7
BLAKE2b-256 079673a4fb5b22e1883c1300dd953bff53a62c32c9192a73a02949a2e294eb0c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypiron-0.0.14-py3-none-win32.whl:

Publisher: ci.yml on blackthorn-interstellar/pypiron

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

File details

Details for the file pypiron-0.0.14-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pypiron-0.0.14-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c0c19c4a0dfa89282b1b5d0db6c8cae9cc712fb6778fa10ccdb2b829dd2942d2
MD5 176cd0cfcd9f8b0e5c3152e96578b69a
BLAKE2b-256 f5a3a79288afeeb31abe2451bf110ab58fefbac1ea1d425bdf60d717fd99fa75

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypiron-0.0.14-py3-none-musllinux_1_2_x86_64.whl:

Publisher: ci.yml on blackthorn-interstellar/pypiron

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

File details

Details for the file pypiron-0.0.14-py3-none-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for pypiron-0.0.14-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 7772351c674e567768a98184933c800cd562b6ac1f1641bf89dc28546292fbc7
MD5 7aae05f78f1af2a2f575d0bb74f4ce65
BLAKE2b-256 397124599e68d9ceedb3b1d8de58b32f1112bce0471fd272b9c27b882a9e049f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypiron-0.0.14-py3-none-musllinux_1_2_i686.whl:

Publisher: ci.yml on blackthorn-interstellar/pypiron

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

File details

Details for the file pypiron-0.0.14-py3-none-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for pypiron-0.0.14-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 84b06a944ba7e2ea4180702566a3ac152101fd424ae699d190755b0f29422d64
MD5 91755096587d4c9102617e8c70c8fc7c
BLAKE2b-256 86137ea6f07f1a8fd06343d32560529b0b6e42a2f7d246df4654088fc15dce8a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypiron-0.0.14-py3-none-musllinux_1_2_armv7l.whl:

Publisher: ci.yml on blackthorn-interstellar/pypiron

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

File details

Details for the file pypiron-0.0.14-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pypiron-0.0.14-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0e469b33f52141c7078dc196b1baeed2cda65331045e5e9d744fee15a63e4bc0
MD5 99368d6a107c9c87ffb8dab59b3235c1
BLAKE2b-256 e97c90cd6bf67ad7c131383cbeabfd06a5c0ee28923bb66aeba6d875ec57b302

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypiron-0.0.14-py3-none-musllinux_1_2_aarch64.whl:

Publisher: ci.yml on blackthorn-interstellar/pypiron

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

File details

Details for the file pypiron-0.0.14-py3-none-manylinux_2_31_riscv64.whl.

File metadata

File hashes

Hashes for pypiron-0.0.14-py3-none-manylinux_2_31_riscv64.whl
Algorithm Hash digest
SHA256 2d516666841464eec2c99e3674118384baf3a609c5d0df0efd52188867bedb8b
MD5 7306fbb718d52f15cb473d12d00f400c
BLAKE2b-256 a71da9bfe72139ffd63d02189c2ff31082b29bd0e327826d2d5eefc2a4f99f0b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypiron-0.0.14-py3-none-manylinux_2_31_riscv64.whl:

Publisher: ci.yml on blackthorn-interstellar/pypiron

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

File details

Details for the file pypiron-0.0.14-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypiron-0.0.14-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 894e987b96c81c56d81aba3ab92c8cd5bec99c14696e19df534dc88c48b7a3ed
MD5 79e23545ff576601f0919ee8a48a7a55
BLAKE2b-256 eaced9294bc98c52594668447ad9cd91951aef72ed0f31c71669e7ad854af35f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypiron-0.0.14-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: ci.yml on blackthorn-interstellar/pypiron

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

File details

Details for the file pypiron-0.0.14-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for pypiron-0.0.14-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 be6825fe023a467d68108ce3f547eb9d5b8b4b4bed1defa95e4ac0fb3bb4c250
MD5 a9e6b7c5d6f08901d6e1406f55a71e52
BLAKE2b-256 1d6870f6d32c45015f5d788218d6797bf91ca44addcfbdc4398253ae4e79a70a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypiron-0.0.14-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl:

Publisher: ci.yml on blackthorn-interstellar/pypiron

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

File details

Details for the file pypiron-0.0.14-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for pypiron-0.0.14-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 3e2d7f2f48a3384cdff624b6e323426e25eba4f4929e39e87dce72e9e281b40b
MD5 2914e135f50325e1f532c164477d4bbc
BLAKE2b-256 e643d34e45cc24f8be75506b64f253c2db7d562a638c2ad218c367088976340b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypiron-0.0.14-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl:

Publisher: ci.yml on blackthorn-interstellar/pypiron

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

File details

Details for the file pypiron-0.0.14-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pypiron-0.0.14-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c18dc35f6422dc89fbf08bba57447faaa41f702335e7004f74658ca0173cc8dc
MD5 6fbf6225ef618e0064cd8a65aaa18d9b
BLAKE2b-256 d1f541a59908e670481150af58719d76dd355a9ff71e798f096e0af47a9b5df7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypiron-0.0.14-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: ci.yml on blackthorn-interstellar/pypiron

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

File details

Details for the file pypiron-0.0.14-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for pypiron-0.0.14-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 095c1dc84f159aa9cb78927afce077cd2dbec8e69e71ba8650d3f0a61dc520b0
MD5 c444758ff63f81c406007e2e5b1e4a10
BLAKE2b-256 c9814ca3fc55f89a767ca45b85e21bf14240668a658daed0dcc49005afee3ed3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypiron-0.0.14-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl:

Publisher: ci.yml on blackthorn-interstellar/pypiron

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

File details

Details for the file pypiron-0.0.14-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pypiron-0.0.14-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3694882b4008818fc17b0d3dae1a447a179fdaab2730030063a0c1ad53653c11
MD5 8c4713b7f03f4cc90c5357aa55fdfbc1
BLAKE2b-256 a710da8b9221c3b2775e866572604ec9a4c6839d022a0581a9ab868cb6f4d610

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypiron-0.0.14-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: ci.yml on blackthorn-interstellar/pypiron

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

File details

Details for the file pypiron-0.0.14-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypiron-0.0.14-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 66190a71647598110f22a9718d0690dd18d7f143df580c29af12993b1d70dd77
MD5 b9e172e732dcde7a3b625fd33015c3cd
BLAKE2b-256 8dcd5e9a79e91b2d28cf916c6d38d35c58930080bcbc29d099498ec6fbf36215

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypiron-0.0.14-py3-none-macosx_11_0_arm64.whl:

Publisher: ci.yml on blackthorn-interstellar/pypiron

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

File details

Details for the file pypiron-0.0.14-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pypiron-0.0.14-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d36a4a34b7ae22ec5271f0ff24eb1e7683931dfac96a73d6d4123d3293d613da
MD5 ccdcf7f8c0eca4e70e2585476a5a0c85
BLAKE2b-256 7ff14a209bba7a6f0d2ed0b9e7053e28c203d677246a084d54018cd9e50dd617

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypiron-0.0.14-py3-none-macosx_10_12_x86_64.whl:

Publisher: ci.yml on blackthorn-interstellar/pypiron

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