Cloud Parts

uv

A Python package and project manager written in Rust that resolves, locks and installs dependencies, and installs Python itself, from one fast binary.

Type
Open source
Made by
Astral
License
Apache 2.0 or MIT
Facts checked
9 October 2026

What it is

uv is a single static binary with no Python dependency of its own. It covers jobs that used to need pip, pip-tools, pipx, Poetry, pyenv, twine and virtualenv: uv add writes a dependency into pyproject.toml, resolves it with pubgrub-rs (a Rust port of the PubGrub algorithm), records the answer in uv.lock and installs it into a .venv next to the project. uv run locks and syncs before running anything, so the environment is never out of date; in CI, uv sync --locked fails instead of updating a stale lockfile. uv.lock is universal: one TOML file covers every operating system, architecture and Python version, and uv export turns it into the standard pylock.toml for other installers. Around that sit uvx (run a command-line tool in a throwaway environment), uv python install (portable CPython builds from python-build-standalone, which Astral maintains), PEP 723 single-file scripts, Cargo-style workspaces and a uv pip interface that works as a drop-in for pip commands. A global cache with hardlinks or copy-on-write keeps repeated installs fast and small on disk.

uv is built by Astral, the company behind Ruff. In March 2026 Astral announced an agreement to join OpenAI as part of the Codex team; Charlie Marsh wrote that OpenAI will keep supporting the open-source tools, and the astral-sh GitHub organisation now describes its tools as “from @OpenAI”. uv is still versioned 0.x: minor releases carry breaking changes, as 0.13.0 (October 2026) did by making Python 3.15 the default download.

Why teams pick it

  • Fast: in Astral’s launch benchmark it was 8 to 10 times faster than pip and pip-tools without a cache and 80 to 115 times faster with a warm one
  • One tool from Python install to lockfile to running tools, with no Python needed to install it
  • A universal lockfile, so a Mac laptop and a Linux CI runner install from the same uv.lock
  • Follows the packaging standards: [project] metadata, PEP 735 dependency groups, PEP 723 scripts and pylock.toml export

Watch out for

  • uv.lock is uv’s own format; other tools need an export, and some uv features can’t be expressed in pylock.toml
  • Pre-1.0 versioning: a minor version bump can break builds, so pin the uv version in CI
  • One company sets the roadmap, and that company agreed in March 2026 to join OpenAI; OpenAI has said it will keep supporting the open-source tools
  • Universal resolution is stricter than resolving for one machine: every dependency must work across the project’s whole requires-python range

Alternatives

What all package managers have in common →

How it fits with other technologies

A project, a lockfile, a one-off tool and a standard export (uv 0.13.0) · bash

uv init --bare app && cd app      # just a pyproject.toml
uv add httpx                      # resolve, write uv.lock, create .venv, install
# Resolved 8 packages in 10ms
#  + httpx==0.28.1                 (plus 6 dependencies)

uv tree --depth 1
# app v0.1.0
# └── httpx v0.28.1

uv run python -c "import httpx; print(httpx.__version__)"   # 0.28.1
uvx ruff --version                # a tool in a cached, throwaway environment: ruff 0.17.0
uv export -o pylock.toml          # the PEP 751 lockfile, for installers other than uv
uv sync --locked                  # in CI: install exactly what uv.lock says, or fail

See it in a real stack

No architecture uses uv yet. Drop it into the playground and wire it up yourself.Open playground →
Where it came from2024–2026

By the early 2020s a Python project could need half a dozen tools: pyenv for the interpreter, virtualenv for environments, pip to install, pip-tools to lock, pipx for command-line tools, Poetry or PDM to manage the project. Astral, the company Charlie Marsh founded in 2023 around the Ruff linter, set out to build “a Cargo for Python” instead.

uv shipped in February 2024 as a deliberately narrow first step: a Rust drop-in for pip, pip-tools and virtualenv that existing projects could adopt with no configuration. Astral took over Armin Ronacher’s experimental Rye project at the same time, folding its ideas in. In August 2024 uv grew into the full tool: uv lock, uv sync and uv run with cross-platform lockfiles, uv tool and uvx, uv python install and PEP 723 scripts. Astral adopted python-build-standalone, the portable CPython builds uv installs, from Gregory Szorc in December 2024.

By August 2025 Astral counted over 100 million installs a month across its tools and 500 million requests a day to uv, and launched pyx, a hosted package registry designed as a backend for uv. In March 2026 Astral agreed to join OpenAI’s Codex team, promising to keep building the tools in the open.

Why it’s built this way

Start as a drop-in for pip and pip-tools
Copying an interface people already used made adoption nearly free, and solving installation first gave the later, more opinionated project commands a solid base.
A single static binary with no Python dependency
uv can be installed before any Python exists and then install Python itself, avoiding the pip versus pip3 versus pip3.7 confusion of tools that live inside an interpreter.
One universal lockfile
The first release locked for one platform, like pip-tools. Since August 2024 uv.lock records the packages for every OS, architecture and Python version, so teams on mixed machines share one file.
A global cache linked into environments
Hardlinks and copy-on-write let many virtual environments share one copy of each package, so recreating an environment avoids downloading or building anything again and uses little extra disk.

Timeline

  1. 2024

    uv released in February as a pip and pip-tools replacement; Astral takes over Rye

  2. 2024

    August: project management, cross-platform lockfiles, tools and Python installs

  3. 2024

    December: python-build-standalone moves to Astral

  4. 2025

    pyx, Astral’s package registry for uv, enters beta

  5. 2026

    March: Astral agrees to join OpenAI’s Codex team

  6. 2026

    June: uv audit and opt-in malware checks in preview

  7. 2026

    October: uv 0.13.0 makes Python 3.15 the default

Sources15 · facts checked 9 October 2026

Improve this page on GitHub