Skip to main content

Pocket TTS Timestamped

Fork of Pocket TTS that adds word-level timestamps for streaming and non-streaming generation.

Quick start

Installation

pip install pocket-tts-timestamped

or:

uv add pocket-tts-timestamped

Pocket TTS supports Python 3.10 through 3.14 and requires PyTorch 2.5 or newer.

Generate audio with word timestamps

from pocket_tts_timestamped import TTSModel

model = TTSModel.load_model()
voice = model.get_state_for_audio_prompt("alba")

result = model.generate_audio_with_timestamps(voice, "Hello world!")
for word in result.words:
    print(word.word, word.start_time, word.end_time)
process_audio(result.audio)

Streaming timestamps

from pocket_tts_timestamped import TTSModel, AudioChunk, WordEnd, WordStart

model = TTSModel.load_model()
voice = model.get_state_for_audio_prompt("alba")

stream = model.generate_audio_with_timestamps_stream(voice, "Hello world!")
for event in stream:
    if isinstance(event, AudioChunk):
        process_audio(event.audio)
    elif isinstance(event, WordStart):
        print("start", event.word_index, event.word, event.start_time)
    elif isinstance(event, WordEnd):
        print("end", event.word_index, event.word, event.end_time)

Checkpoint support

All official Pocket TTS checkpoints are supported, but accuracy differs between them. Selection results, MAE is measured against CrisperWhisper 2.0 medium

Checkpoint Heads Skip samples Skip words Skip rate MAE samples MAE words Start/end MAE
Dutch L4H5+L3H9+L3H14+L2H0 1500 14,566 0.0000% 500 4,753 69.41 ms
Dutch 24L L17H13+L17H11 1500 14,548 0.0069% 500 4,740 71.84 ms
English L3H8+L2H0 1500 14,520 0.0620% 500 4,819 51.23 ms
English 2026-01 L3H8+L2H0 1500 14,577 0.0480% 500 4,796 52.21 ms
English 2026-04 L3H8+L2H0 1500 14,485 0.1243% 500 4,748 42.99 ms
English 2026-04 24L L14H10+L17H11+L15H4 1500 14,501 0.0345% 500 4,779 38.01 ms
English 2026-09 L3H8+L2H0 1500 14,520 0.0620% 500 4,819 51.23 ms
English 2026-09 24L L14H10+L17H11+L15H4 1500 14,522 0.0551% 500 4,834 46.01 ms
English Drifting 26-09 L2H15 1500 14,525 0.0000% 500 4,811 39.08 ms
French L3H9 1500 14,414 0.0347% 500 4,814 63.20 ms
French 24L L17H13+L16H9+L18H5+L17H11 1500 14,335 0.0140% 500 4,849 61.30 ms
German L3H14+L3H9+L3H10 1500 14,849 0.0471% 500 4,748 45.57 ms
German 24L L17H11+L15H4 1500 14,896 0.0000% 500 4,799 40.30 ms
Italian L3H9+L4H5+L3H10 1500 14,422 0.0139% 500 4,767 63.79 ms
Italian 24L L17H13+L13H10+L18H5+L14H10 1500 14,493 0.0138% 500 4,810 64.46 ms
Portuguese L3H9+L4H2+L4H5+L3H14+L3H4 1500 14,699 0.1565% 500 4,723 70.79 ms
Portuguese 24L L17H13+L18H1+L20H12 1500 14,673 0.0886% 500 4,696 71.98 ms
Spanish L3H9+L4H2+L4H5+L3H10 1500 14,769 0.0271% 500 4,827 66.10 ms
Spanish 24L L17H13+L17H11+L18H1 1500 14,756 0.0542% 500 4,783 66.92 ms

About Pocket TTS

A lightweight text-to-speech (TTS) application designed to run efficiently on CPUs. Forget about the hassle of using GPUs and web APIs serving TTS models. With Kyutai's Pocket TTS, generating audio is just a pip install and a function call away.

Supports Python 3.10, 3.11, 3.12, 3.13 and 3.14. Requires PyTorch 2.5+. Does not require the gpu version of PyTorch.

🔊 Demo | 🐱‍💻GitHub Repository | 🤗 Hugging Face Model Card | ⚙️ Tech report | 📄 Paper | 📚 Documentation

Main takeaways

  • Runs on CPU
  • Small model size, 100M parameters
  • Audio streaming
  • Low latency, ~200ms to get the first audio chunk
  • Faster than real-time, ~6x real-time on a CPU of MacBook Air M4
  • Uses only 2 CPU cores
  • Python API and CLI
  • Voice cloning
  • Multi-language support: english, french, german, portuguese, italian, spanish, dutch
  • Can handle infinitely long text inputs
  • Can run on client-side in the browser

Additional languages may be added in the future.

Trying it from the website, without installing anything

Navigate to the Kyutai website to try it out directly in your browser. You can input text, select different voices, and generate speech without any installation.

Trying it with the CLI

The generate command

You can use pocket-tts-timestamped directly from the command line. We recommend using uv as it installs any dependencies on the fly in an isolated environment (uv installation instructions here). You can also use pip install pocket-tts-timestamped to install it manually. On Linux, see CPU-only installation to avoid pulling in the CUDA build of PyTorch.

This will generate a wav file ./tts_output.wav saying the default text with the default voice, and display some speed statistics.

uvx --from pocket-tts-timestamped pocket-tts-timestamped generate
# or if you installed it manually with pip:
pocket-tts-timestamped generate

Modify the voice with --voice and the text with --text. We provide a small catalog of voices. Choose a pretrained language model with --language when running generate, export-voice, or serve (default: english). Non-english languages have also biggers 24 layers variants that are higher quality but slower. You can select them by using for example --language italian_24l. --language english_drifting_26-09 selects an English model whose sampler head was trained with drifting instead of LSD (see training/README.md for the recipe). The --config option accepts a local YAML path, an https:// URL, or an hf:// path (e.g. hf://<repo_id>/<path>[@revision]) for custom weights.

You can take a look at this page which details the licenses for each voice.

The --voice argument can also take a plain wav file as input for voice cloning. You can use your own or check out our voice repository. We recommend cleaning the sample before using it with Pocket TTS, because the audio quality of the sample is also reproduced.

Feel free to check out the generate documentation for more details and examples. For trying multiple voices and prompts quickly, prefer using the serve command.

The serve command

You can also run a local server to generate audio via HTTP requests.

uvx --from pocket-tts-timestamped pocket-tts-timestamped serve
# or if you installed it manually with pip:
pocket-tts-timestamped serve

Navigate to http://localhost:8000 to try the web interface, it's faster than the command line as the model is kept in memory between requests.

You can check out the serve documentation for more details and examples.

The export-voice command

Processing an audio file (e.g., a .wav or .mp3) for voice cloning is relatively slow, but loading a safetensors file -- a voice embedding converted from an audio file -- is very fast. You can use the export-voice command to do this conversion. See the export-voice documentation for more details and examples.

Using it as a Python library

You can try out the Python library on Colab here.

Install the package with

pip install pocket-tts-timestamped
# or
uv add pocket-tts-timestamped

CPU-only installation

On Linux, PyPI serves the CUDA build of PyTorch by default, so pip install pocket-tts-timestamped also downloads the nvidia-* CUDA runtime wheels, even though pocket-tts runs on CPU. This adds several gigabytes to the install (with torch 2.13, roughly 3 GB instead of 200 MB). Installing from the PyTorch CPU index pulls the CPU build and no NVIDIA packages:

pip install pocket-tts-timestamped --extra-index-url https://download.pytorch.org/whl/cpu

To run the CLI without installing, pass the same index to uvx:

uvx --index https://download.pytorch.org/whl/cpu \
  --from pocket-tts-timestamped pocket-tts-timestamped generate

With uv, declare the index explicitly in your project:

[[tool.uv.index]]
name = "pytorch-cpu"
url = "https://download.pytorch.org/whl/cpu"
explicit = true

[tool.uv.sources]
torch = [{ index = "pytorch-cpu" }]

This is not needed on macOS or Windows, where the default PyTorch wheels are already CPU-only.

You can use this package as a simple Python library to generate audio from text.

from pocket_tts_timestamped import TTSModel
import scipy.io.wavfile

tts_model = TTSModel.load_model()
voice_state = tts_model.get_state_for_audio_prompt(
    "alba"  # One of the pre-made voices, see above
    # You can also use any voice file you have locally or from Hugging Face:
    # "./some_audio.wav"
    # or "hf://kyutai/tts-voices/expresso/ex01-ex02_default_001_channel2_198s.wav"
)
audio = tts_model.generate_audio(voice_state, "Hello world, this is a test.")
# Audio is a 1D torch tensor containing PCM data.
scipy.io.wavfile.write("output.wav", tts_model.sample_rate, audio.numpy())

Word-level timestamps

Word timestamps are available through the Python API. The non-streaming method returns the complete audio and finalized word intervals:

result = tts_model.generate_audio_with_timestamps(voice_state, "Hello world!")
for word in result.words:
    print(word.word, word.start_time, word.end_time)

For real-time consumers, generate_audio_with_timestamps_stream() yields AudioChunk, WordStart, and WordEnd events. Timestamp methods raise ValueError for custom model configurations that do not define timestamp_heads.

You can have multiple voice states around if you have multiple voices you want to use. load_model() and get_state_for_audio_prompt() are relatively slow operations, so we recommend to keep the model and voice states in memory if you can.

For faster voice loading, you can export voice states to safetensors files:

from pocket_tts_timestamped import TTSModel, export_model_state

model = TTSModel.load_model()

# Export a voice state for fast loading later
model_state = model.get_state_for_audio_prompt("some_voice.wav")
export_model_state(model_state, "./some_voice.safetensors")

# Later, load it quickly, this is quite fast as it's just reading the kvcache
# from disk and doesn't do any others computations.
model_state_copy = model.get_state_for_audio_prompt("./some_voice.safetensors")

audio = model.generate_audio(model_state_copy, "Hello world!")

You can check out the Python API documentation for more details and examples.

Running on GPU

Pocket TTS is designed to run on CPU, and on hardware with strong single-thread CPU performance (e.g. Apple Silicon) we did not observe a GPU speedup, notably because we use a batch size of 1 and a very small model. However, this turns out to be hardware-dependent: measured on a cloud x86 VM (4 vCPUs) with a Tesla T4, moving the model to GPU gave a consistent ~2.6x speedup over CPU (RTF ~2.3-2.5x on CPU vs. ~6.28x on GPU, for both short and long input text). If your CPU is thread-limited or otherwise weaker than a modern laptop chip, it's worth trying the GPU.

This is not officially supported (there is no device argument on TTSModel.load_model()), but since TTSModel is a regular nn.Module you can move it yourself:

tts_model = TTSModel.load_model()
tts_model.to("cuda")
...
audio = tts_model.generate_audio(voice_state, "Hello world, this is a test.")
# generate_audio() returns a tensor on the same device as the model, so on GPU you need
# to move it back to CPU before calling .numpy():
scipy.io.wavfile.write("output.wav", tts_model.sample_rate, audio.detach().cpu().numpy())

A few things to be aware of if you want to use the GPU:

  • The generate CLI command has a --device option (defaults to cpu, documented in the CLI reference — note that page's own description ("you may not get a speedup by using a gpu since it's a small model") is what this section is correcting, based on the T4 measurements above); the serve command and the Docker image do not expose any device option and will always run on CPU.
  • pip install pocket-tts-timestamped / uv add pocket-tts-timestamped install whatever torch build is current on PyPI, which may require a newer CUDA version than your driver supports. In that case torch.cuda.is_available() silently returns False (you'll only see a UserWarning about an outdated driver, not an error). If this happens, install a torch build matching your driver's CUDA version explicitly, e.g. pip install torch --index-url https://download.pytorch.org/whl/cu121.
  • quantize=True (int8 dynamic quantization) only works on CPU; calling it on a model moved to CUDA raises NotImplementedError: Could not run 'quantized::linear_dynamic' ... 'CUDA' backend. Separately, the optional torchao backend (pip install pocket-tts-timestamped[quantize]) declares torch>=2.11 — fine with a fresh install (torch 2.11+ is on PyPI as of this writing), but if you've pinned an older torch (e.g. to match an older GPU driver's CUDA build, per the point above), adding this extra can pull in a torchao that's incompatible with your pinned torch and break quantize=True even on CPU. Match torchao's torch requirement to whatever torch you actually have installed.

Unsupported features

At the moment, we do not support (but would love pull requests adding):

We tried running this TTS model on the GPU but did not observe a speedup compared to CPU execution on hardware with very strong single-thread CPU performance, notably because we use a batch size of 1 and a very small model. See the "Running on GPU" section above for measurements on other hardware and caveats if you want to try it yourself.

Development and local setup

We accept contributions! Feel free to open issues or pull requests on GitHub.

You can find development instructions in the CONTRIBUTING.md file. You'll also find there how to have an editable install of the package for local development.

In-browser implementations

Pocket TTS is small enough to run directly in your browser in WebAssembly/JavaScript. We don't have official support for this yet, but you can try out one of these community implementations:

Alterative implementations

  • pocket-tts-mlx by @jishnuvenugopal - MLX backend optimized for Apple Silicon
  • pocket-tts-xn by @LaurentMazare - A Rust port of Pocket TTS implemented with XN.
  • pocket-tts-candle by @babybirdprd - Candle version (Rust) with WebAssembly and PyO3 bindings.
  • PocketTTS.cpp by @VolgaGerm - Single-file C++ runtime using ONNX Runtime, with CLI, HTTP server, and FFI C API.
  • sherpa-onnx by @csukuangfj - Run PocketTTS on Windows, macOS, Linux, and embedded boards (Raspberry Pi, Jetson, RK3588, etc.) with bindings for 12 programming languages: C++, C, Python, JavaScript, Java, C#, Kotlin, Swift, Go, Dart, Rust, Pascal, plus WebAssembly.
  • pocket-tts-csharp by @TheAjaykrishnanR - A C# port of Pocket TTS implemented using TorchSharp and TorchSharp.PyBridge for ease of use as a library in .NET projects.
  • pocket-tts-timestamped by @dpm63 - A fork that adds support for word-level timestamps.
  • Pocket-TTS-LiteRT by @john-rocky - LiteRT (.tflite) graphs that run on Android phone GPUs through the LiteRT CompiledModel API, ~1x real-time on a Pixel 8a, with Python and Kotlin usage snippets.

Models trained by the community

To use a community model, just use the --config argument and point it to the url of the model's yaml file. For example:

uvx --from pocket-tts-timestamped pocket-tts-timestamped generate --config https://raw.githubusercontent.com/kyutai-labs/pocket-tts/refs/heads/main/pocket_tts/config/english_2026-04.yaml

It also works with huggingface urls like hf://kyutai/pocket-tts/config/english_2026-04.yaml or local paths like ./english_2026-04.yaml.

The pre-made voices listed above are embeddings precomputed with our released weights, so they are not available for community models. With --config, --voice defaults to alba's audio file, which any model can clone. Pass your own audio file to --voice to use another voice.

We recommend inserting the commit hash somehow in the url to avoid breaking changes by the model authors. For example:

uvx --from pocket-tts-timestamped pocket-tts-timestamped generate --config https://raw.githubusercontent.com/kyutai-labs/pocket-tts/891886a61a1ed45fd429a0a63bd96181e6cff637/pocket_tts/config/english_2026-04.yaml

or with hf://...

uvx --from pocket-tts-timestamped pocket-tts-timestamped generate --config hf://user/repo/config_file.yaml@commit_hash

List of community-trained models

Pocket TTS Czech by @vvolhejn
uvx --from pocket-tts-timestamped pocket-tts-timestamped generate --config hf://vvolhejn/pocket-tts-czech/czech.yaml@7b7760dd0fe994a0800f2fdbc837dc4b8f219d1c --text "Dnešek je velmi dobrý den"
Pocket TTS Hindi by Saryps Labs
uvx --from pocket-tts-timestamped pocket-tts-timestamped generate \
  --config hf://saryps-labs/pocket-tts-hindi/config.yaml@dbaa326069d20bfbdaeb625613736773741a24ea \
  --text "आज का दिन बहुत अच्छा है"
Pocket TTS Korean 300M by @seastar105
uvx pocket-tts-timestamped generate \
  --config hf://seastar105/pocket-tts-korean-300m/korean.yaml@df328c817a02866f20a6f74e5183e0a1fc6f6435 \
  --text "안녕하세요. 한국어 음성 합성 모델입니다."
Pocket TTS Persian (Farsi) by @mallahyari
uvx --with soundfile pocket-tts-timestamped generate --config hf://mehdi-hf/pocket-tts-farsi/farsi.yaml@3c59d06b3177b21c5cd0df9e9e3e899f4d361c1c \
    --voice hf://mehdi-hf/pocket-tts-farsi/example_voice.wav --text "سلام، حال شما چطور است؟"
Pocket TTS Indonesian by @anak10thn, 6 layers
uvx pocket-tts-timestamped generate \
  --config hf://anak10thn/pocket-tts-indonesian/indonesian_6l.yaml@6196fe14c6c2108332c16d33c864c8901c044aaa \
  --text "Selamat pagi. Ini model sintesis suara bahasa Indonesia."
Pocket TTS Estonian by @cbentes
uvx pocket-tts-timestamped generate \
  --config hf://cbentes/pocket-tts-estonian/estonian.yaml@8934022f1befb3dc568351e3b88e48a9edb94d7d \
  --voice hf://cbentes/pocket-tts-estonian/voices/et_f_reporter.wav@8934022f1befb3dc568351e3b88e48a9edb94d7d \
  --text "Tere! Mina olen eesti keele kõnesüntesaator ja töötan tavalises arvutis kiiremini kui reaalajas."
Pocket TTS Cymraeg (Welsh) by EryriLabs, 24 layers
uvx pocket-tts-timestamped generate \
  --config hf://EryriLabs/pocket-tts-cymraeg/config.yaml@1f23b3a8d1706b24a2faf3c77075a223ed69f57c \
  --text "Mae'r tywydd yn braf yng Nghymru heddiw."
Pocket TTS Polish by @shefowl, 6 layers
uvx pocket-tts-timestamped generate \
  --config hf://shefowl/pocket-tts-polish-6l/config.yaml@a8630f2a39055d3e5a91acb7922e31bd0c506cfe \
  --voice hf://shefowl/pocket-tts-polish-6l/reference.wav@a8630f2a39055d3e5a91acb7922e31bd0c506cfe \
  --text "Dzień dobry. Nazywam się Krzysztof Wiśniewski i mówię po polsku."
Pocket TTS Greek (Ελληνικά) by Myned AI, 6 layers
uvx pocket-tts-timestamped generate \
  --config hf://myned-ai/pocket-tts-greek/greek.yaml@c578b65949df101ac352e84ac5c236206e5bb348 \
  --voice hf://myned-ai/pocket-tts-greek/voices/eleni.wav@c578b65949df101ac352e84ac5c236206e5bb348 \
  --text "Καλημέρα! Θέλετε να κλείσουμε ένα ραντεβού για αύριο;"

Want your model here? Head to the training Readme to get started!

Projects using Pocket TTS

  • pocket-reader by @lukasmwerner- Browser screen reader
  • pocket-tts-wyoming by @ikidd - Docker container for pocket-tts using Wyoming protocol, ready for Home Assistant Voice use.
  • Sonorus by @KevinAHM - Talk to any named character in Hogwarts Legacy with their original voice.
  • Native macOS App by @slaughters85j - Native macOS app, Python-free. Runs Pocket-TTS via Core ML, fully on-device. Includes signed and notarized .app releases.
  • Electron macOS App by @slaughters85j - Electron Mac Desktop App + macOS Quick Action
  • pocket-tts-openai_streaming_server by @teddybear082 - OpenAI-compatible streaming server, dockerized and with an .exe release
  • pocket-tts-unity by @lookbe - A Unity 6 integration for Pocket-TTS.
  • ComfyUI-Pocket-TTS by @ai-joe-git Lightweight CPU-based Text-to-Speech for ComfyUI
  • pocket-tts-server by @ai-joe-git A lightweight, real-time voice cloning and chat server with OpenAI-compatible API. Clone any voice with just 20 seconds of audio and chat with AI using that voice instantly.
  • discord-tts by @alkmei - Multivoice Discord text-to-speech bot that uses Pocket TTS.
  • cursed-codex by @dooart - AI coding agent with unhinged live football commentary
  • pocket-tts-deno Port of pocket-tts-server as a wasm + onnx deno server with voice TTS API.
  • FrontPocket by @markd89 - Front-end for Pocket-TTS to speak text from clipboard, file, CLI (hotkeys) & GUI toolbar. Change playback speed, voice, and move forward/backward between sentences instantaneously.
  • openclaw-pockettts by @dodgyrabbit - A Docker container with the Python implementation but exposed as an OpenAI TTS API for easy integration with OpenClaw.
  • openclaw-pocketts.cpp by @dodgyrabbit - A Docker container with the PocketTTS.cpp version, packaged for easy integration with OpenClaw.
  • tts-audiobook-tool by @zeropointnine - Multi-model audiobook generator with automatic error detection, 48khz upscaling, synced browser reader, stand-alone server-mode.
  • seshat-tts by @scriptriva - Accessibility tool that provides real-time audio synthesis for games and apps. It also features a voice manager capable of cloning voices based on user presets.
  • LocalVocal.ai by @joshwhiton - Fully local conversational voice-harness for Macs with Apple Silicon. Includes voice-activity & turn detection, dictation, voice cloning, CLI to talk to Claude, Codex... and more.
  • Libratory by @subev - Turns PDFs into read-along audiobooks with the narration highlighted on the printed page; Pocket TTS is one of its local narrators, with voice cloning from the picker.
  • ToBe SAID Android, iOS/Mac, Windows by @lookbe - Pocket TTS that integrate into OS system voice with low latency and realtime streaming. Support quick language addition by using only HuggingFace url.

Prohibited use

Use of our model must comply with all applicable laws and regulations and must not result in, involve, or facilitate any illegal, harmful, deceptive, fraudulent, or unauthorized activity. Prohibited uses include, without limitation, voice impersonation or cloning without explicit and lawful consent; misinformation, disinformation, or deception (including fake news, fraudulent calls, or presenting generated content as genuine recordings of real people or events); and the generation of unlawful, harmful, libelous, abusive, harassing, discriminatory, hateful, or privacy-invasive content. We disclaim all liability for any non-compliant use.

Authors

Manu Orsini*, Simon Rouard*, Gabriel De Marmiesse*, Václav Volhejn, Neil Zeghidour, Alexandre Défossez

*equal contribution

Metadata

Release files for pocket-tts-timestamped 1.2.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 pocket-tts-timestamped 1.2.0
File Size Uploaded
pocket_tts_timestamped-1.2.0.tar.gz 86.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pocket-tts-timestamped 1.2.0
File Interpreter ABI Platform
pocket_tts_timestamped-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 190.6 kB

Release files / pocket_tts_timestamped-1.2.0.tar.gz

Download URL pocket_tts_timestamped-1.2.0.tar.gz
Size 86.0 kB
Tags Source
SHA-256 checksum
How to use checksums
73f4d018361b79b4554a74cf70e206378a363a219bc3832ee7484a84d1a7fd54
BLAKE2b-256 checksum
How to use checksums
0af8d7e781bcfd02f58d4528093434749e8ed3c4543b771585c8049f430d5377
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 Oct 3, 2026.

Transparency log

Release files / pocket_tts_timestamped-1.2.0-py3-none-any.whl

Download URL pocket_tts_timestamped-1.2.0-py3-none-any.whl
Size 104.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
869a3f45af3adca5724ae037b4fc0a8298bab6e785f6c1bf87a43b25bd0ed913
BLAKE2b-256 checksum
How to use checksums
1b4447437f1ee53e5db99fcab195a8df03b05142fdea449c3d02e10caf31c187
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 Oct 3, 2026.

Transparency log

Release history Release notifications | RSS feed

1.3.0

2 release files

This release

1.2.0 This release

2 release files

1.1.0

2 release files

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