PyTail
pytail is a small PyPI caching proxy. It exposes a Python Simple Repository
API endpoint, fetches packages from upstream on demand, and keeps downloaded
files in a local cache.
It is useful when you want faster repeated installs, a simple shared package cache, or a local endpoint for PyPI and PyTorch wheel indexes.
Features
- PyPI-compatible
/simple/endpoint forpipanduv - lazy caching of project pages and package files
- optional cache size limit with least-recently-used cleanup
- PyTorch wheel index proxy under
/pytorch-wheels/ - HTML and JSON Simple API responses
Install
Install from PyPI:
pip install pytail
Or install from source:
cargo install --path .
Run
After installation:
pytail \
--bind 127.0.0.1:3141 \
--cache-dir .cache/pytail
From a source checkout:
cargo run -- \
--bind 127.0.0.1:3141 \
--cache-dir .cache/pytail
Then use it as the package index:
uv pip install --index-url http://127.0.0.1:3141/simple/ requests
pip install --index-url http://127.0.0.1:3141/simple/ requests
Open the local index in a browser:
http://127.0.0.1:3141/simple/
PyTorch Wheels
PyTorch wheel indexes are available under /pytorch-wheels/.
For example, this upstream command:
pip install torch --index-url https://download.pytorch.org/whl/cu126
can use the local cache instead:
pip install torch --index-url http://127.0.0.1:3141/pytorch-wheels/cu126
If a package needs both PyTorch wheels and normal PyPI packages:
pip install torch \
--index-url http://127.0.0.1:3141/pytorch-wheels/cu126 \
--extra-index-url http://127.0.0.1:3141/simple/
Flat wheel mirrors, such as the Aliyun PyTorch mirror, can be converted into the same project-based Simple API. Start PyTail with the mirror root and enable flat-index mode:
pytail \
--torch-url https://mirrors.aliyun.com/pytorch-wheels/ \
--torch-flat-index
Clients continue to use the normal local project index. For example:
pip install torch \
--index-url http://127.0.0.1:3141/pytorch-wheels/cu128
Options
Common options:
--bind: listen address, default127.0.0.1:3141--cache-dir: cache directory, default.cache/pytail--cache-max-size: max file cache size, default0for unlimited; examples:512MiB,2G,10GB--upstream-base-url: PyPI-compatible upstream, defaulthttps://pypi.org--torch-url: PyTorch wheel upstream, defaulthttps://download.pytorch.org/whl/--torch-flat-index: treat each PyTorch channel URL as a flat--find-linkspage and expose it as a project-based Simple API--project-cache-ttl-secs: project page refresh interval, default900--request-timeout-secs: upstream request timeout, default15--stats-interval-secs: stats log and trend sampling interval, default3600; set to0to disable--verbose: enable operational debug logs; useRUST_LOG=pytail=tracefor per-request and cache-hit details
Build
Build the Rust binary:
cargo build --release
Build a Python wheel with maturin:
maturin build --release
The wheel installs the pytail command.
Metadata
Release files for pytail 0.1.11
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pytail-0.1.11.tar.gz | 99.0 kB | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pytail-0.1.11-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| pytail-0.1.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
| pytail-0.1.11-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl | Python 3 | none | macOS 10.12+ universal2 (ARM64, x86-64), macOS 11.0+ ARM64, macOS 10.12+ x86-64 | Details |
Total release size: 15.7 MB
Release files / pytail-0.1.11.tar.gz
| Download URL | pytail-0.1.11.tar.gz |
|---|---|
| Size | 99.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bab196099007062ff129913abee98f5f5e33334cf8325aa9758df938f9ba8d2e
|
|
BLAKE2b-256 checksum How to use checksums |
703128e95d3868779799b3b60167742ed404d26dba7e509158bfef346d3fe256
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 15, 2026.
Transparency logRelease files / pytail-0.1.11-py3-none-win_amd64.whl
| Download URL | pytail-0.1.11-py3-none-win_amd64.whl |
|---|---|
| Size | 3.7 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
970631fd559871cddd18dd9ccee222b884a2cd102f93c1db4054b51a99b14c84
|
|
BLAKE2b-256 checksum How to use checksums |
3da091f9f2a6e585f1672c03751bd170a7e3469fb5c4ce18a43f7932f49c2d2e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 15, 2026.
Transparency logRelease files / pytail-0.1.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pytail-0.1.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 4.2 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
e5e78854f1f1d230dda7566e022d58fe1c6b311f53e85ab2437585625484eddb
|
|
BLAKE2b-256 checksum How to use checksums |
21af6a110702106d3559981fd39e64dacc317323c5888b65cbb13d358c7c58ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 15, 2026.
Transparency logRelease files / pytail-0.1.11-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | pytail-0.1.11-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 7.7 MB |
| Tags | Python 3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
dbbd86a10fe110fc7e0fe16c3c1f1452d3cf0e1a556080f70bbb49790483a85a
|
|
BLAKE2b-256 checksum How to use checksums |
b5b8583be61352fcacac8762cc5709e561810758b79e550a70bc92ff5527a57c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 15, 2026.
Transparency log