j178/prekPublic

⚡ A fast Git hook manager written in Rust, designed as a drop-in alternative to pre-commit, reimagined.

AI summary: A lightning-fast, dependency-free Rust alternative for managing and executing pre-commit hooks.

Stars
8.5K
+22 today
Forks
245
Watchers
16
Open issues
20
Open PRs
25
Contributors
~121
Commits
2.1K
Branches
23

RustMITCreated Oct 7, 2024Last push 2d agoLatest release v0.5.4+89 stars this week+182 this month

Quick answers

What is prek?
A lightning-fast, dependency-free Rust alternative for managing and executing pre-commit hooks.
What does prek do?
prek is a modern, fast, and highly customizable Git hook manager written entirely in Rust. Designed as a drop-in alternative to the traditional Python-based pre-commit framework, it manages and executes hooks to enforce code quality, formatting, and security checks before a commit succeeds. It drastically reduces execution times by supporting concurrent hook execution and utilizing native Rust implementations. Furthermore, prek manages its own toolchains natively—supporting environments like Python, Node.js, Go, and Rust—without requiring external system dependencies, while maintaining full compatibility with existing pre-commit configurations.
Who is prek for?
Software engineers and DevOps professionals looking to accelerate their local CI pipelines and enforce code quality without managing complex dependencies.
How do I get started with prek?
Install the single binary and run prek in your repository to automatically execute configured hooks.
How popular is prek on GitHub?
j178/prek has 8,544 stars and 245 forks on GitHub, and gained 89 stars in the last 7 days.
What license does prek use?
j178/prek is released under the MIT license.

Star history

since Jul 29, 2026
02.5K5K7.5KJul 2026Aug 2026Sep 2026Oct 2026
8.5K stars as of Oct 2, 2026. Measured daily since Jul 29, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
OctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-10-05: 0 commits2025-10-06: 3 commits2025-10-07: 4 commits2025-10-08: 5 commits2025-10-09: 6 commits2025-10-10: 4 commits2025-10-11: 1 commit2025-10-12: 0 commits2025-10-13: 3 commits2025-10-14: 7 commits2025-10-15: 2 commits2025-10-16: 7 commits2025-10-17: 7 commits2025-10-18: 6 commits2025-10-19: 10 commits2025-10-20: 6 commits2025-10-21: 3 commits2025-10-22: 2 commits2025-10-23: 0 commits2025-10-24: 4 commits2025-10-25: 3 commits2025-10-26: 3 commits2025-10-27: 4 commits2025-10-28: 8 commits2025-10-29: 3 commits2025-10-30: 3 commits2025-10-31: 7 commits2025-11-01: 9 commits2025-11-02: 0 commits2025-11-03: 9 commits2025-11-04: 3 commits2025-11-05: 2 commits2025-11-06: 2 commits2025-11-07: 4 commits2025-11-08: 2 commits2025-11-09: 2 commits2025-11-10: 2 commits2025-11-11: 0 commits2025-11-12: 2 commits2025-11-13: 0 commits2025-11-14: 7 commits2025-11-15: 9 commits2025-11-16: 7 commits2025-11-17: 8 commits2025-11-18: 7 commits2025-11-19: 5 commits2025-11-20: 4 commits2025-11-21: 6 commits2025-11-22: 5 commits2025-11-23: 3 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 4 commits2025-11-27: 2 commits2025-11-28: 0 commits2025-11-29: 1 commit2025-11-30: 0 commits2025-12-01: 7 commits2025-12-02: 1 commit2025-12-03: 2 commits2025-12-04: 6 commits2025-12-05: 2 commits2025-12-06: 2 commits2025-12-07: 0 commits2025-12-08: 3 commits2025-12-09: 8 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 3 commits2025-12-13: 5 commits2025-12-14: 2 commits2025-12-15: 3 commits2025-12-16: 0 commits2025-12-17: 2 commits2025-12-18: 2 commits2025-12-19: 2 commits2025-12-20: 6 commits2025-12-21: 3 commits2025-12-22: 6 commits2025-12-23: 7 commits2025-12-24: 3 commits2025-12-25: 1 commit2025-12-26: 1 commit2025-12-27: 2 commits2025-12-28: 0 commits2025-12-29: 1 commit2025-12-30: 2 commits2025-12-31: 1 commit2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 6 commits2026-01-04: 0 commits2026-01-05: 1 commit2026-01-06: 1 commit2026-01-07: 7 commits2026-01-08: 1 commit2026-01-09: 1 commit2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 7 commits2026-01-13: 6 commits2026-01-14: 3 commits2026-01-15: 7 commits2026-01-16: 12 commits2026-01-17: 4 commits2026-01-18: 13 commits2026-01-19: 13 commits2026-01-20: 11 commits2026-01-21: 14 commits2026-01-22: 8 commits2026-01-23: 1 commit2026-01-24: 3 commits2026-01-25: 1 commit2026-01-26: 2 commits2026-01-27: 6 commits2026-01-28: 2 commits2026-01-29: 3 commits2026-01-30: 4 commits2026-01-31: 12 commits2026-02-01: 5 commits2026-02-02: 12 commits2026-02-03: 9 commits2026-02-04: 6 commits2026-02-05: 13 commits2026-02-06: 7 commits2026-02-07: 2 commits2026-02-08: 5 commits2026-02-09: 3 commits2026-02-10: 3 commits2026-02-11: 0 commits2026-02-12: 7 commits2026-02-13: 0 commits2026-02-14: 1 commit2026-02-15: 15 commits2026-02-16: 0 commits2026-02-17: 3 commits2026-02-18: 1 commit2026-02-19: 7 commits2026-02-20: 2 commits2026-02-21: 1 commit2026-02-22: 2 commits2026-02-23: 0 commits2026-02-24: 1 commit2026-02-25: 0 commits2026-02-26: 2 commits2026-02-27: 2 commits2026-02-28: 3 commits2026-03-01: 18 commits2026-03-02: 6 commits2026-03-03: 1 commit2026-03-04: 6 commits2026-03-05: 1 commit2026-03-06: 2 commits2026-03-07: 2 commits2026-03-08: 4 commits2026-03-09: 7 commits2026-03-10: 9 commits2026-03-11: 3 commits2026-03-12: 0 commits2026-03-13: 3 commits2026-03-14: 0 commits2026-03-15: 8 commits2026-03-16: 18 commits2026-03-17: 2 commits2026-03-18: 6 commits2026-03-19: 7 commits2026-03-20: 1 commit2026-03-21: 6 commits2026-03-22: 3 commits2026-03-23: 7 commits2026-03-24: 2 commits2026-03-25: 2 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 3 commits2026-03-31: 1 commit2026-04-01: 9 commits2026-04-02: 4 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 12 commits2026-04-07: 2 commits2026-04-08: 4 commits2026-04-09: 1 commit2026-04-10: 1 commit2026-04-11: 0 commits2026-04-12: 1 commit2026-04-13: 7 commits2026-04-14: 4 commits2026-04-15: 2 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 4 commits2026-04-19: 1 commit2026-04-20: 12 commits2026-04-21: 3 commits2026-04-22: 12 commits2026-04-23: 3 commits2026-04-24: 4 commits2026-04-25: 2 commits2026-04-26: 0 commits2026-04-27: 15 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 1 commit2026-05-01: 1 commit2026-05-02: 3 commits2026-05-03: 4 commits2026-05-04: 8 commits2026-05-05: 5 commits2026-05-06: 5 commits2026-05-07: 0 commits2026-05-08: 1 commit2026-05-09: 3 commits2026-05-10: 1 commit2026-05-11: 6 commits2026-05-12: 2 commits2026-05-13: 0 commits2026-05-14: 4 commits2026-05-15: 3 commits2026-05-16: 0 commits2026-05-17: 4 commits2026-05-18: 11 commits2026-05-19: 2 commits2026-05-20: 5 commits2026-05-21: 2 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 8 commits2026-05-26: 3 commits2026-05-27: 1 commit2026-05-28: 1 commit2026-05-29: 1 commit2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 1 commit2026-06-02: 3 commits2026-06-03: 1 commit2026-06-04: 4 commits2026-06-05: 3 commits2026-06-06: 16 commits2026-06-07: 0 commits2026-06-08: 16 commits2026-06-09: 1 commit2026-06-10: 3 commits2026-06-11: 3 commits2026-06-12: 0 commits2026-06-13: 2 commits2026-06-14: 0 commits2026-06-15: 10 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 1 commit2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 1 commit2026-06-22: 11 commits2026-06-23: 3 commits2026-06-24: 4 commits2026-06-25: 2 commits2026-06-26: 2 commits2026-06-27: 2 commits2026-06-28: 1 commit2026-06-29: 8 commits2026-06-30: 6 commits2026-07-01: 3 commits2026-07-02: 1 commit2026-07-03: 1 commit2026-07-04: 6 commits2026-07-05: 0 commits2026-07-06: 6 commits2026-07-07: 0 commits2026-07-08: 0 commits2026-07-09: 2 commits2026-07-10: 4 commits2026-07-11: 4 commits2026-07-12: 9 commits2026-07-13: 13 commits2026-07-14: 5 commits2026-07-15: 3 commits2026-07-16: 3 commits2026-07-17: 0 commits2026-07-18: 3 commits2026-07-19: 2 commits2026-07-20: 0 commits2026-07-21: 1 commit2026-07-22: 16 commits2026-07-23: 6 commits2026-07-24: 4 commits2026-07-25: 3 commits2026-07-26: 0 commits2026-07-27: 19 commits2026-07-28: 6 commits2026-07-29: 5 commits2026-07-30: 2 commits2026-07-31: 3 commits2026-08-01: 0 commits2026-08-02: 2 commits2026-08-03: 18 commits2026-08-04: 3 commits2026-08-05: 1 commit2026-08-06: 5 commits2026-08-07: 5 commits2026-08-08: 5 commits2026-08-09: 1 commit2026-08-10: 15 commits2026-08-11: 0 commits2026-08-12: 3 commits2026-08-13: 0 commits2026-08-14: 1 commit2026-08-15: 2 commits2026-08-16: 1 commit2026-08-17: 21 commits2026-08-18: 1 commit2026-08-19: 2 commits2026-08-20: 0 commits2026-08-21: 5 commits2026-08-22: 0 commits2026-08-23: 1 commit2026-08-24: 8 commits2026-08-25: 3 commits2026-08-26: 6 commits2026-08-27: 12 commits2026-08-28: 6 commits2026-08-29: 5 commits2026-08-30: 6 commits2026-08-31: 7 commits2026-09-01: 9 commits2026-09-02: 0 commits2026-09-03: 3 commits2026-09-04: 2 commits2026-09-05: 0 commits2026-09-06: 0 commits2026-09-07: 10 commits2026-09-08: 0 commits2026-09-09: 5 commits2026-09-10: 0 commits2026-09-11: 0 commits2026-09-12: 0 commits2026-09-13: 4 commits2026-09-14: 11 commits2026-09-15: 3 commits2026-09-16: 0 commits2026-09-17: 0 commits2026-09-18: 0 commits2026-09-19: 0 commits2026-09-20: 3 commits2026-09-21: 11 commits2026-09-22: 0 commits2026-09-23: 2 commits2026-09-24: 3 commits2026-09-25: 0 commits2026-09-26: 0 commits2026-09-27: 8 commits2026-09-28: 14 commits2026-09-29: 7 commits2026-09-30: 1 commit2026-10-01: 0 commits2026-10-02: 0 commits2026-10-03: 0 commits
1,351 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Very active

    1,351 commits in 52 weeks

  • Community-driven

    ~121 contributors

  • Well documented

    High community health score

  • Permissive license

    MIT

What prek does

prek is a modern, fast, and highly customizable Git hook manager written entirely in Rust. Designed as a drop-in alternative to the traditional Python-based pre-commit framework, it manages and executes hooks to enforce code quality, formatting, and security checks before a commit succeeds. It drastically reduces execution times by supporting concurrent hook execution and utilizing native Rust implementations. Furthermore, prek manages its own toolchains natively—supporting environments like Python, Node.js, Go, and Rust—without requiring external system dependencies, while maintaining full compatibility with existing pre-commit configurations.

Software engineers and DevOps professionals looking to accelerate their local CI pipelines and enforce code quality without managing complex dependencies.

  • Fast Concurrent Execution: Optimized with highly parallel processing and native Rust implementations for extremely rapid checks.
  • Dependency-Free Binary: Distributes as a single, compiled executable, entirely avoiding the need for a local Python installation or complex runtimes.
  • Robust Workspace Support: Natively handles complex monorepos, allowing disparate, independent projects to run checks securely and concurrently.
  • Native Toolchain Management: Automatically installs and shares isolated execution environments for Python, Node.js, Go, Rust, and more.
  • Complete Drop-In Compatibility: Fully supports existing traditional pre-commit configurations and hook ecosystems for totally seamless migrations.

Where teams use it

Enforcing Code Quality

Engineering teams configure the tool to automatically execute linters and formatters with high speed before any code reaches version control.

Monorepo CI Standardization

Developers easily manage complex, massive workspaces where distinct sub-projects strictly require entirely different formatting and security checks.

Accelerating Local Pipelines

Programmers utilize the native concurrent execution capabilities to significantly reduce the friction and wait times of sluggish local pre-commit checks.

Simplifying Environment Setup

Onboarding team members instantly execute required hooks without manually installing complex Python dependencies or specific language toolchains.

Getting started: Install the single binary and run prek in your repository to automatically execute configured hooks.

README

master branch

About

prek is a framework for running hooks on your code. It runs them before you commit changes, on demand, or in CI. These hooks can format files, catch lint errors, detect secrets, or run any other command your project defines. prek also installs and manages the tools and dependencies they need.

You may already be familiar with the pre-commit tool. prek is a reimagined version of it, built in Rust. It is faster and distributed as a single binary with no runtime dependencies. It is fully compatible with pre-commit configurations and hooks, so you can use it as a drop-in replacement without changing your setup.

Although prek is pretty new, it’s already powering real‑world projects like CPython, Apache Airflow, FastAPI, and more projects are picking it up—see Who is using prek?. If you’re looking for an alternative to pre-commit, 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 than pre-commit and more efficient in disk space usage.
  • Fully compatible with the original pre-commit configurations and hooks.
  • Built-in support for monorepos (i.e. workspace mode), including concurrent execution for independent same-depth projects.
  • Integration with uv for managing Python virtual environments and dependencies.
  • Improved toolchain installations for Python, Node.js, Bun, Go, Rust and Ruby, shared between hooks.
  • Built-in Rust-native implementation of some common hooks.

Installation

Standalone installer

prek provides a standalone installer script to download and install the tool,

On Linux and macOS:

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/prek/releases/download/v0.5.4/prek-installer.sh | sh

On Windows:

powershell -ExecutionPolicy ByPass -c "irm https://github.com/j178/prek/releases/download/v0.5.4/prek-installer.ps1 | iex"
PyPI

prek is published as Python binary wheel to PyPI, you can install it using pip, uv (recommended), or pipx:

# Using uv (recommended)
uv tool install prek

# Using uvx (install and run in one command)
uvx prek

# Adding prek to the project dev-dependencies
uv add --dev prek

# Using pip
pip install prek

# Using pipx
pipx install prek
Homebrew
brew install prek
mise

To use prek with mise (v2025.8.11 or later):

mise use prek
Cargo binstall

Install pre-compiled binaries from GitHub using cargo-binstall:

cargo binstall prek
Cargo

Build from source using Cargo (Rust 1.96+ is required):

cargo install --locked prek
npmjs

prek is published as a Node.js package and can be installed with any npm-compatible package manager:

# As a dev dependency
npm add -D @j178/prek
pnpm add -D @j178/prek
bun add -D @j178/prek

# Or install globally
npm install -g @j178/prek
pnpm add -g @j178/prek
bun install -g @j178/prek

# Or run directly without installing
npx @j178/prek --version
bunx @j178/prek --version
Nix

prek is available via Nixpkgs.

# Choose what's appropriate for your use case.
# One-off in a shell:
nix-shell -p prek

# NixOS or non-NixOS without flakes:
nix-env -iA nixos.prek

# Non-NixOS with flakes:
nix profile install nixpkgs#prek
Conda

prek is available as prek via conda-forge.

conda install conda-forge::prek
Scoop (Windows)

prek is available via Scoop.

scoop install main/prek
Winget (Windows)

prek is available via winget.

winget install --id j178.Prek
MacPorts

prek is available via MacPorts.

sudo port install prek
GitHub Releases

Pre-built binaries are available for download from the GitHub releases page.

GitHub Actions

prek can be used in GitHub Actions via the j178/prek-action repository.

Example workflow:

name: Prek checks
on: [push, pull_request]

jobs:
  prek:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
      - uses: j178/prek-action@4e14d07f9231acabce116ccfca13b13dd9755ece # v3.0.0

This action installs prek and runs prek run --all-files on your repository.

prek is also available via taiki-e/install-action for installing various tools.

prek skill for agents

To let agents use prek, install the prek skill with gh skill (v2.90.0+):

gh skill install j178/prek prek

If installed via the standalone installer, prek can update itself to the latest version:

prek self update

Quick start

  • I already use pre-commit: follow the short migration checklist in the quickstart guide to swap in prek safely.
  • I'm new to pre-commit-style tools: learn the basics—creating a config, running hooks, and installing Git shims—in the beginner quickstart walkthrough.

Why prek?

prek is faster

  • It is multiple times faster than pre-commit while also using less disk space.
  • Hook environments and toolchains are shared across hooks instead of being duplicated per repository, which reduces both install time and cache size.
  • Repository fetches and independent hook environment setup run in parallel, hooks can run concurrently by priority using reusable aliases, and independent workspace projects at the same directory depth can run concurrently.
  • It uses uv for creating Python virtualenvs and installing dependencies, which is known for its speed and efficiency.
  • For supported hooks from pre-commit-hooks, the automatic fast path runs built-in Rust implementations without requiring any configuration changes.
  • The prek-only repo: builtin mode provides offline, zero-setup hooks, including native deny-pattern and require-pattern alternatives for common pygrep checks.

prek is easier to work with

  • No need to install Python or any other runtime just to use prek; it is a single binary.
  • Its language support covers every language available in pre-commit, plus Bun, Deno, mise, and PHP, and it automatically installs managed toolchains when needed for Python, Node.js, Bun, Deno, Go, mise, Rust, and Ruby.
  • It supports native prek.toml in addition to pre-commit YAML, and prek util yaml-to-toml helps migrate existing configs.
  • Built-in support for workspaces means monorepos can keep separate configs per project and still run everything from one command, while independent same-depth projects run concurrently without mixing file scopes.
  • prek install and prek uninstall honor repo-local and worktree-local core.hooksPath.
  • Hook groups let one config define workflows such as CI, linting, or formatting; --group, --require-group, and --no-group select them at runtime.
  • prek run can select or skip multiple projects and hooks, target tracked files with repeatable --glob or --directory filters, pass explicit paths with --files, and preview the selection with --dry-run.
  • The progress UI streams a live preview from running hooks, so long-running checks do not look stuck and failures are easier to diagnose.
  • prek list, prek util identify, and prek util list-builtins -v make it easier to inspect configured hooks, debug file matching, and discover builtins with their supported options.

prek includes security-focused safeguards

  • For supported managed toolchain downloads, prek verifies the downloaded archive or installer checksum before extracting or installing it, helping ensure the integrity of downloaded toolchains.
  • prek update can keep newly published releases on hold with --cooldown-days, filter eligible tags with glob patterns, and freeze revisions to commit SHAs.
  • prek update validates pinned SHA revisions against the fetched upstream refs, including impostor-commit detection, and keeps # frozen: comments in sync with the configured commit.
  • prek update --check is useful in CI when you want updates or frozen-reference mismatches to fail the job without rewriting the config.

For more detailed improvements prek offers, take a look at Difference from pre-commit.

Who is using prek?

prek is pretty new, but it is already being used or recommended by some projects and organizations. GitHub stars are current as of April 15, 2026.

For a more comprehensive list of open-source projects using prek see the list of dependents on github.

Acknowledgements

This project is heavily inspired by the original pre-commit tool, and it wouldn't be possible without the hard work of the maintainers and contributors of that project.

And a special thanks to the Astral team for their remarkable projects, particularly uv, from which I've learned a lot on how to write efficient and idiomatic Rust code.

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

98 total
  1. 0.5.4v0.5.4Sep 28, 202634.7K downloads

    ## Release Notes Released on 2026-09-28. ### Highlights #### Faster builtin hooks In our end-to-end benchmark, prek is about 38% faster than 0.5.3, with some builtin hooks up to 273% faster (`check-yaml`: 273%, `check-json`: 80%, `check-merge-conflict`: 71%). ### Enhancements - Add `include_deleted` to allow hooks to include deleted files ([#2733](https://github.com/j178/prek/pull/2733)) - Add `--check` and simplify `end-of-file-fixer` ([#2764](https://github.com/j178/prek/pull/2764)) - Add `--check` to `file-contents-sorter` ([#2765](https://github.com/j178/prek/pull/2765)) - Add `--check` to `requirements-txt-fixer` ([#2766](https://github.com/j178/prek/pull/2766)) - Add `--check` to `trailing-whitespace` ([#2763](https://github.com/j178/prek/pull/2763)) - Expose and document `prek util generate-shell-completion` ([#2727](https://github.com/j178/prek/pull/2727)) - Support `hide_status` in project and user configuration ([#2760](https://github.com/j178/prek/pull/2760)) - Support look-around regex in builtin pattern hooks ([#2732](https://github.com/j178/prek/pull/2732)) ### Performance - Cache the resolved Git executable on macOS ([#2726](https://github.com/j178/prek/pull/

  2. 0.5.3v0.5.3Sep 13, 2026301.1K downloads

    ## Release Notes Released on 2026-09-13. ### Enhancements - Add PEP 740 attestations for PyPI releases ([#2705](https://github.com/j178/prek/pull/2705)) - Add a `check-jsonc` builtin hook ([#2682](https://github.com/j178/prek/pull/2682)) - Allow disabling automatic uv installation ([#2702](https://github.com/j178/prek/pull/2702)) ### Bug fixes - Fix Julia additional dependency specifiers ([#2703](https://github.com/j178/prek/pull/2703)) - Update `granit-parser` to fix YAML flow indentation ([#2707](https://github.com/j178/prek/pull/2707)) ### Contributors - @clbarnes - @j178 - @tisonkun ## Install prek 0.5.3 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/prek/releases/download/v0.5.3/prek-installer.sh | sh ``` ### Install prebuilt binaries via powershell script ```sh powershell -ExecutionPolicy Bypass -c "irm https://github.com/j178/prek/releases/download/v0.5.3/prek-installer.ps1 | iex" ``` ### Install prebuilt binaries via Homebrew ```sh brew install prek ``` ## Download prek 0.5.3 | File | Platform | Checksum | |--------|----------|----------| | [prek-aarch64-apple-darwin.tar.gz](https://github

  3. 0.5.2v0.5.2Sep 2, 2026231.3K downloads

    ## Release Notes Released on 2026-09-03. ### Enhancements - Allow unknown tags by default in `check-yaml` ([#2678](https://github.com/j178/prek/pull/2678)) ### Contributors - @j178 ## Install prek 0.5.2 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/prek/releases/download/v0.5.2/prek-installer.sh | sh ``` ### Install prebuilt binaries via powershell script ```sh powershell -ExecutionPolicy Bypass -c "irm https://github.com/j178/prek/releases/download/v0.5.2/prek-installer.ps1 | iex" ``` ### Install prebuilt binaries via Homebrew ```sh brew install prek ``` ## Download prek 0.5.2 | File | Platform | Checksum | |--------|----------|----------| | [prek-aarch64-apple-darwin.tar.gz](https://github.com/j178/prek/releases/download/v0.5.2/prek-aarch64-apple-darwin.tar.gz) | Apple Silicon macOS | [checksum](https://github.com/j178/prek/releases/download/v0.5.2/prek-aarch64-apple-darwin.tar.gz.sha256) | | [prek-x86_64-apple-darwin.tar.gz](https://github.com/j178/prek/releases/download/v0.5.2/prek-x86_64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://github.com/j178/prek/releases/download/v0.5.2/prek-

  4. 0.5.1v0.5.1Sep 1, 202656.8K downloads

    ## Release Notes Released on 2026-09-01. ### Enhancements - Add `--hide-status <passed|failed|skipped>` for hook reports ([#2644](https://github.com/j178/prek/pull/2644)) - Add `prek init` for repository setup ([#2636](https://github.com/j178/prek/pull/2636)) - Apply hook `env` during environment creation ([#2650](https://github.com/j178/prek/pull/2650)) - Disable error snippets in `check-yaml` diagnostics ([#2664](https://github.com/j178/prek/pull/2664)) - Show hooks excluded by skip selectors ([#2645](https://github.com/j178/prek/pull/2645)) - Support Pixi for Conda environments ([#2667](https://github.com/j178/prek/pull/2667)) - Support `cargo-binstall` for Rust CLI dependencies ([#2658](https://github.com/j178/prek/pull/2658)) - Warn about unused keys in user settings ([#2665](https://github.com/j178/prek/pull/2665)) ### Bug fixes - Reject unsupported YAML tags in check-yaml ([#2656](https://github.com/j178/prek/pull/2656)) ### Documentation - Clarify local hook documentation ([#2640](https://github.com/j178/prek/pull/2640)) - Clarify pre-commit command compatibility ([#2635](https://github.com/j178/prek/pull/2635)) - Document automatic PR fixes with autofix.ci ([#2643](

  5. 0.5.0v0.5.0Aug 27, 2026143.4K downloads

    ## Release Notes Released on 2026-08-27. ### Highlights #### Choose where hook toolchains come from `language_version` now accepts a source `preference` alongside the version `request`, letting you control where prek looks for a compatible toolchain when it creates a hook environment. Use `managed` (the default) or `system` to choose which source prek tries first while still allowing fallback and downloads. Use `only-managed` or `only-system` to require one source. For example, this local Ruff hook requires a Python 3.12 toolchain managed by prek: ```yaml repos: - repo: local hooks: - id: ruff name: ruff language: python entry: ruff check additional_dependencies: [ruff] language_version: request: "3.12" preference: only-managed ``` With `only-managed`, prek reuses a compatible toolchain from its managed store or downloads one when needed. It never falls back to Python from `PATH`, an OS package manager, or a version manager, so toolchain selection does not depend on the developer or CI machine's external environment. Existing scalar values such as `language_version: "3.12"` continue to work. See [toolch

Code frequency

additions and deletions
+41.7K-41.7KWeek of 2025-09-14: +890 linesWeek of 2025-09-14: -384 linesWeek of 2025-09-21: +879 linesWeek of 2025-09-21: -542 linesWeek of 2025-09-28: +1,035 linesWeek of 2025-09-28: -394 linesWeek of 2025-10-05: +1,365 linesWeek of 2025-10-05: -355 linesWeek of 2025-10-12: +2,666 linesWeek of 2025-10-12: -344 linesWeek of 2025-10-19: +2,221 linesWeek of 2025-10-19: -490 linesWeek of 2025-10-26: +2,721 linesWeek of 2025-10-26: -1,957 linesWeek of 2025-11-02: +4,563 linesWeek of 2025-11-02: -2,063 linesWeek of 2025-11-09: +814 linesWeek of 2025-11-09: -533 linesWeek of 2025-11-16: +6,461 linesWeek of 2025-11-16: -5,352 linesWeek of 2025-11-23: +526 linesWeek of 2025-11-23: -185 linesWeek of 2025-11-30: +2,523 linesWeek of 2025-11-30: -433 linesWeek of 2025-12-07: +41,732 linesWeek of 2025-12-07: -40,864 linesWeek of 2025-12-14: +1,785 linesWeek of 2025-12-14: -524 linesWeek of 2025-12-21: +2,659 linesWeek of 2025-12-21: -805 linesWeek of 2025-12-28: +347 linesWeek of 2025-12-28: -82 linesWeek of 2026-01-04: +352 linesWeek of 2026-01-04: -198 linesWeek of 2026-01-11: +4,286 linesWeek of 2026-01-11: -1,568 linesWeek of 2026-01-18: +7,399 linesWeek of 2026-01-18: -2,000 linesWeek of 2026-01-25: +1,252 linesWeek of 2026-01-25: -889 linesWeek of 2026-02-01: +7,050 linesWeek of 2026-02-01: -3,487 linesWeek of 2026-02-08: +2,043 linesWeek of 2026-02-08: -814 linesWeek of 2026-02-15: +3,686 linesWeek of 2026-02-15: -2,406 linesWeek of 2026-02-22: +1,084 linesWeek of 2026-02-22: -91 linesWeek of 2026-03-01: +3,465 linesWeek of 2026-03-01: -1,226 linesWeek of 2026-03-08: +3,609 linesWeek of 2026-03-08: -1,572 linesWeek of 2026-03-15: +4,003 linesWeek of 2026-03-15: -1,039 linesWeek of 2026-03-22: +2,781 linesWeek of 2026-03-22: -481 linesWeek of 2026-03-29: +2,962 linesWeek of 2026-03-29: -1,250 linesWeek of 2026-04-05: +2,971 linesWeek of 2026-04-05: -774 linesWeek of 2026-04-12: +2,130 linesWeek of 2026-04-12: -652 linesWeek of 2026-04-19: +8,053 linesWeek of 2026-04-19: -5,104 linesWeek of 2026-04-26: +589 linesWeek of 2026-04-26: -321 linesWeek of 2026-05-03: +4,106 linesWeek of 2026-05-03: -1,426 linesWeek of 2026-05-10: +471 linesWeek of 2026-05-10: -232 linesWeek of 2026-05-17: +3,316 linesWeek of 2026-05-17: -1,882 linesWeek of 2026-05-24: +2,624 linesWeek of 2026-05-24: -1,502 linesWeek of 2026-05-31: +3,958 linesWeek of 2026-05-31: -1,541 linesWeek of 2026-06-07: +2,035 linesWeek of 2026-06-07: -530 linesWeek of 2026-06-14: +884 linesWeek of 2026-06-14: -335 linesWeek of 2026-06-21: +2,873 linesWeek of 2026-06-21: -1,873 linesWeek of 2026-06-28: +7,592 linesWeek of 2026-06-28: -6,614 linesWeek of 2026-07-05: +1,379 linesWeek of 2026-07-05: -1,539 linesWeek of 2026-07-12: +4,810 linesWeek of 2026-07-12: -1,654 linesWeek of 2026-07-19: +3,133 linesWeek of 2026-07-19: -1,615 linesWeek of 2026-07-26: +2,123 linesWeek of 2026-07-26: -1,616 linesWeek of 2026-08-02: +3,735 linesWeek of 2026-08-02: -1,847 linesWeek of 2026-08-09: +2,020 linesWeek of 2026-08-09: -516 linesWeek of 2026-08-16: +6,130 linesWeek of 2026-08-16: -5,902 linesWeek of 2026-08-23: +11,911 linesWeek of 2026-08-23: -11,042 linesWeek of 2026-08-30: +5,005 linesWeek of 2026-08-30: -4,706 linesWeek of 2026-09-06: +1,176 linesWeek of 2026-09-06: -593 linesSep 14, 2025Sep 6, 2026
+200.2K lines added, -126.1K removed over the last year.

Commits per week

last 52 weeks
630Week of 2025-10-05: 23 commitsWeek of 2025-10-12: 32 commitsWeek of 2025-10-19: 28 commitsWeek of 2025-10-26: 37 commitsWeek of 2025-11-02: 22 commitsWeek of 2025-11-09: 22 commitsWeek of 2025-11-16: 42 commitsWeek of 2025-11-23: 10 commitsWeek of 2025-11-30: 20 commitsWeek of 2025-12-07: 19 commitsWeek of 2025-12-14: 17 commitsWeek of 2025-12-21: 23 commitsWeek of 2025-12-28: 10 commitsWeek of 2026-01-04: 11 commitsWeek of 2026-01-11: 39 commitsWeek of 2026-01-18: 63 commitsWeek of 2026-01-25: 30 commitsWeek of 2026-02-01: 54 commitsWeek of 2026-02-08: 19 commitsWeek of 2026-02-15: 29 commitsWeek of 2026-02-22: 10 commitsWeek of 2026-03-01: 36 commitsWeek of 2026-03-08: 26 commitsWeek of 2026-03-15: 48 commitsWeek of 2026-03-22: 14 commitsWeek of 2026-03-29: 17 commitsWeek of 2026-04-05: 20 commitsWeek of 2026-04-12: 18 commitsWeek of 2026-04-19: 37 commitsWeek of 2026-04-26: 20 commitsWeek of 2026-05-03: 26 commitsWeek of 2026-05-10: 16 commitsWeek of 2026-05-17: 24 commitsWeek of 2026-05-24: 14 commitsWeek of 2026-05-31: 28 commitsWeek of 2026-06-07: 25 commitsWeek of 2026-06-14: 11 commitsWeek of 2026-06-21: 25 commitsWeek of 2026-06-28: 26 commitsWeek of 2026-07-05: 16 commitsWeek of 2026-07-12: 36 commitsWeek of 2026-07-19: 32 commitsWeek of 2026-07-26: 35 commitsWeek of 2026-08-02: 39 commitsWeek of 2026-08-09: 22 commitsWeek of 2026-08-16: 30 commitsWeek of 2026-08-23: 41 commitsWeek of 2026-08-30: 27 commitsWeek of 2026-09-06: 15 commitsWeek of 2026-09-13: 18 commitsWeek of 2026-09-20: 19 commitsWeek of 2026-09-27: 30 commitsOct 5, 2025Sep 27, 2026
1.4K commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 12 commitsSun 1:00 — 4 commitsSun 2:00 — 8 commitsSun 3:00 — 3 commitsSun 4:00 — 2 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 2 commitsSun 8:00 — 0 commitsSun 9:00 — 5 commitsSun 10:00 — 19 commitsSun 11:00 — 7 commitsSun 12:00 — 8 commitsSun 13:00 — 10 commitsSun 14:00 — 13 commitsSun 15:00 — 17 commitsSun 16:00 — 22 commitsSun 17:00 — 29 commitsSun 18:00 — 22 commitsSun 19:00 — 9 commitsSun 20:00 — 13 commitsSun 21:00 — 15 commitsSun 22:00 — 9 commitsSun 23:00 — 5 commitsMon 0:00 — 12 commitsMon 1:00 — 10 commitsMon 2:00 — 1 commitsMon 3:00 — 1 commitsMon 4:00 — 1 commitsMon 5:00 — 3 commitsMon 6:00 — 2 commitsMon 7:00 — 1 commitsMon 8:00 — 0 commitsMon 9:00 — 22 commitsMon 10:00 — 133 commitsMon 11:00 — 106 commitsMon 12:00 — 36 commitsMon 13:00 — 22 commitsMon 14:00 — 17 commitsMon 15:00 — 38 commitsMon 16:00 — 44 commitsMon 17:00 — 34 commitsMon 18:00 — 20 commitsMon 19:00 — 24 commitsMon 20:00 — 33 commitsMon 21:00 — 13 commitsMon 22:00 — 17 commitsMon 23:00 — 21 commitsTue 0:00 — 7 commitsTue 1:00 — 9 commitsTue 2:00 — 7 commitsTue 3:00 — 1 commitsTue 4:00 — 1 commitsTue 5:00 — 2 commitsTue 6:00 — 5 commitsTue 7:00 — 4 commitsTue 8:00 — 3 commitsTue 9:00 — 6 commitsTue 10:00 — 13 commitsTue 11:00 — 27 commitsTue 12:00 — 15 commitsTue 13:00 — 22 commitsTue 14:00 — 37 commitsTue 15:00 — 22 commitsTue 16:00 — 39 commitsTue 17:00 — 22 commitsTue 18:00 — 22 commitsTue 19:00 — 17 commitsTue 20:00 — 15 commitsTue 21:00 — 14 commitsTue 22:00 — 20 commitsTue 23:00 — 17 commitsWed 0:00 — 13 commitsWed 1:00 — 8 commitsWed 2:00 — 4 commitsWed 3:00 — 1 commitsWed 4:00 — 2 commitsWed 5:00 — 1 commitsWed 6:00 — 0 commitsWed 7:00 — 3 commitsWed 8:00 — 5 commitsWed 9:00 — 2 commitsWed 10:00 — 3 commitsWed 11:00 — 28 commitsWed 12:00 — 13 commitsWed 13:00 — 17 commitsWed 14:00 — 16 commitsWed 15:00 — 23 commitsWed 16:00 — 19 commitsWed 17:00 — 19 commitsWed 18:00 — 18 commitsWed 19:00 — 18 commitsWed 20:00 — 20 commitsWed 21:00 — 12 commitsWed 22:00 — 13 commitsWed 23:00 — 7 commitsThu 0:00 — 8 commitsThu 1:00 — 6 commitsThu 2:00 — 6 commitsThu 3:00 — 1 commitsThu 4:00 — 3 commitsThu 5:00 — 5 commitsThu 6:00 — 2 commitsThu 7:00 — 1 commitsThu 8:00 — 2 commitsThu 9:00 — 6 commitsThu 10:00 — 12 commitsThu 11:00 — 21 commitsThu 12:00 — 11 commitsThu 13:00 — 19 commitsThu 14:00 — 16 commitsThu 15:00 — 12 commitsThu 16:00 — 15 commitsThu 17:00 — 18 commitsThu 18:00 — 13 commitsThu 19:00 — 8 commitsThu 20:00 — 16 commitsThu 21:00 — 11 commitsThu 22:00 — 20 commitsThu 23:00 — 3 commitsFri 0:00 — 10 commitsFri 1:00 — 5 commitsFri 2:00 — 4 commitsFri 3:00 — 0 commitsFri 4:00 — 1 commitsFri 5:00 — 1 commitsFri 6:00 — 0 commitsFri 7:00 — 3 commitsFri 8:00 — 1 commitsFri 9:00 — 3 commitsFri 10:00 — 8 commitsFri 11:00 — 21 commitsFri 12:00 — 7 commitsFri 13:00 — 12 commitsFri 14:00 — 8 commitsFri 15:00 — 26 commitsFri 16:00 — 12 commitsFri 17:00 — 17 commitsFri 18:00 — 10 commitsFri 19:00 — 13 commitsFri 20:00 — 10 commitsFri 21:00 — 14 commitsFri 22:00 — 9 commitsFri 23:00 — 16 commitsSat 0:00 — 9 commitsSat 1:00 — 10 commitsSat 2:00 — 0 commitsSat 3:00 — 3 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 5 commitsSat 7:00 — 4 commitsSat 8:00 — 1 commitsSat 9:00 — 1 commitsSat 10:00 — 4 commitsSat 11:00 — 14 commitsSat 12:00 — 18 commitsSat 13:00 — 12 commitsSat 14:00 — 14 commitsSat 15:00 — 13 commitsSat 16:00 — 15 commitsSat 17:00 — 14 commitsSat 18:00 — 25 commitsSat 19:00 — 15 commitsSat 20:00 — 18 commitsSat 21:00 — 12 commitsSat 22:00 — 4 commitsSat 23:00 — 12 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits813 (60%)
Community commits543 (40%)

1,356 commits in total over the last year.

DateListRankStars gained
Feb 4, 2026daily#21+108
  • ultraworkers/claw-code

    An agent-managed museum exhibit, built in Rust with Gajae-Code / LazyCodex — developed and maintained with no human intervention.

    195.2K stars · Rust

  • farion1231/cc-switch

    A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

    140K stars · Rust

  • openai/codex

    Lightweight coding agent that runs in your terminal

    127.8K stars · Rust

  • denoland/deno

    A modern runtime for JavaScript and TypeScript.

    108.6K stars · Rust

  • ruvnet/RuView

    π RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.

    96.4K stars · Rust

  • oven-sh/bun

    Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one

    96.1K stars · Rust