prek
[](https://github.com/j178/prek/actions/workflows/ci.yml)
[](https://codecov.io/github/j178/prek)
[](https://github.com/j178/prek/releases)
[](https://pepy.tech/projects/prek)
[](https://discord.gg/3NRJUqJz86)
[pre-commit](https://pre-commit.com/) is a framework to run hooks written in many languages, and it manages the
language toolchain and dependencies for running the hooks.
*prek* is a reimagined version of pre-commit, built in Rust.
It is designed to be a faster, dependency-free and drop-in alternative for it,
while also providing some additional long-requested features.
> [!WARNING]
> prek is not production-ready yet. Some subcommands and languages are not implemented. See the current gaps for drop-in parity: [TODO](https://prek.j178.dev/todo/).
>
> But it's already being adopted by [some projects](#who-is-using-prek) like Airflow, so please give it a try - we'd love your feedback!
## Features
- 🚀 A single binary with no dependencies, does not require Python or any other runtime.
- ⚡ [Faster](https://prek.j178.dev/benchmark/) than `pre-commit` and uses only half the disk space.
- 🔄 Fully compatible with the original pre-commit configurations and hooks.
- 🏗️ Built-in support for monorepos (i.e. [workspace mode](https://prek.j178.dev/workspace/)).
- 🐍 Integration with [`uv`](https://github.com/astral-sh/uv) for managing Python virtual environments and dependencies.
- 🛠️ Improved toolchain installations for Python, Node.js, Go, Rust and Ruby, shared between hooks.
- 📦 [Built-in](https://prek.j178.dev/builtin/) Rust-native implementation of some common hooks.
## Table of contents
- [Installation](#installation)
- [Quick start](#quick-start)
- [Why prek?](#why-prek)
- [Who is using prek?](#who-is-using-prek)
- [Acknowledgements](#acknowledgements)
## Installation