Skip to content
CAI
Software that uses CAICheck a score

Homebrew/homebrew-core

57.2

Adequate · 26 September 2026

477k

lines of production code

Ruby

primary language

3

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is the Homebrew core package repository, serving as the central index for maintaining and distributing software formulae. It manages the lifecycle of thousands of packages through routine version updates, dependency migrations, and build system modernizations, while also providing infrastructure for cross-compilation, CI automation, and security hardening. The codebase functions as a comprehensive package manager definition layer, ensuring software availability, compatibility, and integrity across macOS and Linux environments.

Features

Introduce portable formula base class for macOS cross-compilation

A new \PortableFormula\ base class and \PortableFormulaMixin\ are added to support building portable Homebrew formulas, specifically enabling macOS 11 (Big Sur) cross-builds on GitHub-hosted Intel runners. This change introduces logic to handle cross-compilation between Darwin versions, sets appropriate macOS version minimums and architecture flags, and ensures portable formulae are keg-only. On Linux, it resets environment variables to build against system libraries rather than Linuxbrew dependencies.

Abstract · high confidence

New CLI commands for CI automation and bottle management

Added four new command-line tools to the \cmd\ directory to support CI workflows: \aspell-dictionaries\ generates dictionary resources for the aspell formula; \check-bottle-modification\ verifies that pull requests do not alter bottle blocks except by BrewTestBot; \check-ci-status\ queries GitHub to determine if CI runs are cancellable or if long-timeout labels can be removed; and \determine-rebottle-runners\ calculates the appropriate macOS and Linux runners needed to rebottle a formula, including support for ephemeral Linux runners and Landlock sandboxing.

cmd · high confidence

New formulas added: yacas, yadm, yaegi, yaf, and yafc

This change introduces five new formulae to the repository. yacas is a general-purpose computer algebra system built with CMake. yadm (Yet Another Dotfiles Manager) manages dotfiles via Git and installs shell completions for bash, fish, and zsh. yaegi is a Go interpreter that builds from source. yaf is a flowmeter that processes packet data from pcap files, notably disabling OpenSSL due to license incompatibility with its GPL-2.0-only license. yafc is a command-line FTP client sourced from Debian.

Formula/y · high confidence

Removals

Jackett is deprecated

The Jackett formula has been deprecated, meaning it will no longer receive updates or support in future releases. Users should migrate to alternative indexers or tools.

Formula/j · high confidence

Architecture

Formula directory structure refactored into subdirectories

The monolithic Formula directory has been split into subdirectories, reorganizing the repository layout. This structural change affects how formula files are stored and accessed within the codebase.

Formula/w · high confidence

Formula directory structure reorganized into subdirectories

The formula files in the \Formula/u\ directory have been physically moved into subdirectories as part of a broader repository restructuring. This change affects the file paths and organization of the package definitions but does not alter the build logic, dependencies, or functionality of the software packages themselves.

Formula/u · high confidence

Formula/e directory split into subdirectories

The monolithic Formula/e directory has been reorganized by sharding all Homebrew/core formulae into individual subdirectories. This structural change improves maintainability and reduces merge conflicts for formulae starting with the letter 'e', without altering the software versions or build behavior.

Formula/e · high confidence

Behavioural changes

Formula maintenance and updates in Formula/o

This change updates and maintains a large set of formulas in the Formula/o directory, including version bumps for tools like oh-my-posh, ollama, and oxlint, as well as dependency revisions for packages such as ortp and opentelemetry-cpp. It also includes various build system improvements, such as migrating several formulas to use \pkgconf\ and \zlib-ng-compat\, adding network sandboxing for security, and fixing RuboCop style offenses.

Formula/o · high confidence

Formula maintenance and version updates for the 'g' namespace

This update covers a broad range of maintenance activities for formulas in the 'g' namespace, including version bumps for tools like git, go, gradle, and gitea, as well as dependency migrations (e.g., to python@3.13, python@3.14, pkgconf, and zlib-ng-compat). It also includes security hardening via network sandboxing (deny\_network\_access!), build system improvements (language-specific heredocs, path helpers), and the addition of new formulas such as gita, gixy, and gtrash.

Formula/g · medium confidence

Formula/a: Routine version updates and maintenance

This update refreshes the 'a' category of formulas with numerous version bumps, including apprise 1.9.5, apify-cli 1.6.1, atmos 1.63.0, aarch64-elf-gdb 16.3, angular-cli 21.2.1, awscli 2.31.37, auditbeat 8.15.0, argocd 2.13.3, and apache-arrow 24.0.0. The changes also include various dependency migrations (e.g., to python@3.12, python@3.13, python@3.14, pkgconf, zlib-ng-compat), the addition of sandbox network controls for several tools, and general build system improvements.

Formula/a, Formula/p, Formula/r · medium confidence

Formula/c: Routine version updates and build system modernization

This location sees continuous updates to the versions of packages in the 'c' namespace (e.g., cdk8s, chainloop-cli, cubejs-cli, cliproxyapi, cloudflare-wrangler) alongside widespread build system modernizations. These include migrating Python dependencies to specific brewed versions (python@3.12, python@3.13, python@3.14), switching to \pkgconf\ for dependency resolution, adopting \zlib-ng-compat\ on Linux, and replacing legacy \Formula\[...\]\ path methods with \formula\opt\\*\ helpers. Several formulas also have their network access restricted via \deny\_network\_access!\ or \allow\_network\_access! :test\, and GitHub tarball URLs are standardized to use \/archive/refs/tags\.

Formula/c · high confidence

Formula/f: Routine version and dependency updates

This update refreshes the formulae in the 'f' category with new upstream versions, dependency migrations (such as flake8 and fypp moving to newer Python versions), and build system improvements (including the adoption of pkgconf and zlib-ng-compat).

Formula/f · high confidence

Formula/m: Routine version updates and build fixes

This release updates a large number of formulas in the 'm' namespace (including mise, mesheryctl, minio, mysql, and mariadb) to their latest upstream versions, alongside numerous revision bumps required by dependency changes such as protobuf, boost, and zlib-ng-compat. Several formulas have been migrated to newer Python versions (python@3.12, python@3.14) or updated to use modern Homebrew DSL features like language-specific heredocs and path helpers. The update also includes fixes for build issues on specific platforms (e.g., macOS 27, Linux ARM), removal of deprecated or unsupported macOS versions (Catalina), and the addition of security sandboxing directives (deny\_network\_access!) to several tools.

Formula/m · high confidence

Formula/s: Routine version updates and dependency migrations

This change updates a large number of formulas in the Formula/s directory to their latest upstream versions, including significant releases such as sqlite 3.48.0, swi-prolog 10.0.0, and scrcpy 2.4. It also migrates several Python-based formulas to newer Python versions (e.g., standardebooks to python@3.14, speedtest-cli to python@3.12) and switches various build systems to use pkgconf (e.g., swi-prolog, selene, sox). Additionally, it applies various build fixes and style corrections, such as replacing deprecated SPDX identifiers, using language-specific heredoc delimiters, and preferring GitHub's /archive/refs/tags URLs for tarballs.

Formula/b, Formula/s, Formula/v · medium confidence

Formulae in the x directory receive routine version updates and maintenance

This change updates a large number of formulae starting with 'x' to their latest upstream versions, including xonsh, xterm, xgboost, xrootd, xmake, and xcbeautify. Alongside these version bumps, the formulae are modernized by migrating build dependencies to pkgconf, updating Python interpreter requirements to newer versions (such as python@3.12, python@3.13, and python@3.14), and adopting new Homebrew DSL features like \formula\_opt\_include\ and \pypi\_packages\. Several formulae also have their network access sandboxing tightened or their source URLs standardized to use GitHub's archive/refs/tags paths.

Formula/x · high confidence

Formulae reorganized into subdirectories

The formula files in the \k\ category have been moved from the repository root into a dedicated \Formula/k\ subdirectory. This structural change improves maintainability by grouping formulae alphabetically and reducing clutter in the top-level directory, but it does not alter the functionality or version of any individual tool.

Formula/i, Formula/k, Formula/z · high confidence

Formulae updated to latest stable versions

The Formula directory has been updated to reflect the latest stable releases for several key packages, including Git (2.41.0), CMake (3.27.2), Qt (6.5.1), Boost (1.82.0), and DMD (2.105.0). These updates ensure that users installing these tools receive the most recent features, performance improvements, and bug fixes available from upstream.

Formula · high confidence

Hysteria configuration format migrated from JSON to YAML

The Hysteria formula now uses a YAML configuration file (config.yaml) instead of the previous JSON format (config.json). This change updates the default configuration file structure, requiring users to adapt any existing manual configuration files to the new YAML syntax.

Formula/h · high confidence

Import of formula patches and license file

The Patches directory now includes a LICENSE file and a large collection of new patch files for various formulas (such as aalib, abook, activemq-cpp, akku, alpine, arrayfire, autogen, avanor, aview, bash-completion, bedops, berkeley-db@4, bitchx, and bloaty). These patches address build failures, compatibility issues with newer system libraries (like Guile 3.0.11, fmt 11, openssl@4, and macOS SDKs), and security fixes (including CVEs in libssh2 and activemq-cpp).

Patches · high confidence

Mass update of lib formulas to version 1.17.0

The lib library has been updated to version 1.17.0. This release includes various improvements and bug fixes. Users should ensure they have the latest version of lib installed to benefit from these changes.

Formula/lib · medium confidence

Repository structure reorganized with new configuration and documentation files

The repository has been restructured to include new foundational files: \.rubocop.yml\ and \.ruby-version\ (targeting Ruby 4.0) for code style and environment configuration; \AGENTS.md\ and \CLAUDE.md\ providing detailed instructions for AI-assisted contributions and formula maintenance; \CODEOWNERS\ defining maintainers for key files; \CONTRIBUTING.md\ with updated guidelines for submitting PRs and handling CI failures; \LICENSE.txt\ containing the BSD 2-Clause License; \README.md\ pointing to the main Homebrew documentation; and several JSON configuration files (\formula\_renames.json\, \tap\_migrations.json\, \synced\_versions\_formulae.json\, \disabled\_new\_usr\_local\_relocation\_formulae.json\) that manage formula renames, tap migrations, version synchronization, and relocation exceptions.

(repo-wide) · high confidence

Updated formula aliases to reflect current package versions and names

The Aliases directory has been refreshed to ensure all symbolic links point to the correct, current formulae. This includes updating versioned aliases (such as python@3, node@26, and openssl@3.6) to track the latest major versions, adding new aliases for recently introduced tools (like 0install, 2ms, and jujutsu), and correcting broken or outdated links (such as gpg pointing to gnupg and sdl pointing to sdl12-compat). Users will find that common shorthand commands and version-specific references now resolve to the intended software versions without errors.

Aliases · high confidence

llama.cpp: update to commit 8470

The llama.cpp formula has been updated to commit 8470, bringing in the latest upstream changes and improvements.

Formula/l · high confidence

Test coverage

Formula test suite updates

The test suite in Formula/t has been updated with 15,891 commits adding or modifying tests for various formulas.

Formula/t · high confidence

Dependencies

Docker Engine 29.6.0

The Docker Engine formula has been updated to version 29.6.0, bringing the latest upstream release to the package manager.

Formula/d · high confidence

Node.js 26.8.2 bottle update

The Node.js formula has been updated to version 26.8.2, providing the latest runtime improvements and security patches for users relying on this major version.

Formula/n · high confidence

Housekeeping

Formulae restructured into subdirectories

The formulae in the \Formula/q\ directory have been reorganized into a subdirectory structure. This change affects the internal layout of the repository but does not alter the functionality or behavior of the software packages themselves.

Formula/q · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 57.

Lenses

  • Code Health 94
  • Architecture 100
  • Maturity 50
  • Readiness 71
  • Security 47

Changes since last survey

  • 300 commits — 297 feature/other, 3 fixes

By area

  • (repo) — 130 commits
  • Formula/r — 17 commits
  • Formula/s — 16 commits
  • Formula/t — 15 commits
  • Formula/o — 13 commits
  • Formula/c — 12 commits
  • Formula/n — 12 commits
  • Formula/p — 10 commits
  • Formula/f — 9 commits
  • Formula/k — 8 commits
  • Formula/w — 8 commits
  • Formula/b — 7 commits
  • Formula/g — 7 commits
  • Formula/h — 6 commits
  • Formula/u — 6 commits
  • Formula/a — 5 commits
  • Formula/v — 5 commits
  • Formula/m — 4 commits
  • Formula/d — 2 commits
  • Formula/i — 2 commits

Notable commits

  • fix: libklvanc: fix license
  • fix: odinfmt: fix SIGILL on older x86_64 CPUs
  • fix: ols: fix SIGILL on older x86_64 CPUs
  • change: Merge pull request #297287 from paleolimbot/nanoarrow-0-9-0-ipc
  • change: Merge pull request #301501 from Lcadman/getxbook-openssl4
  • change: Merge pull request #312413 from chenrui333/go-offline-batch-43
  • change: Merge pull request #312640 from Homebrew/bump-bigloo-4.7b
  • change: Merge pull request #313019 from chenrui333/cmake-allow-test-batch-7
  • change: Merge pull request #313020 from chenrui333/cmake-allow-test-batch-8
  • change: Merge pull request #313021 from chenrui333/cmake-allow-test-batch-9
  • change: Merge pull request #313022 from chenrui333/cmake-allow-test-batch-10
  • change: Merge pull request #313023 from chenrui333/cmake-allow-test-batch-11
  • change: Merge pull request #313407 from todbot/hidapitester-new-formula
  • change: Merge pull request #313572 from Homebrew/bump-snapcraft-9.1.3
  • change: Merge pull request #313579 from Homebrew/linkerd-undeprecate
  • change: Merge pull request #313594 from Homebrew/libks-test
  • change: Merge pull request #313595 from Homebrew/sequoia-sqv-test
  • change: Merge pull request #313596 from Homebrew/curl-test
  • change: Merge pull request #313597 from Homebrew/fbthrift-test
  • change: Merge pull request #313598 from Homebrew/bump-oh-my-agent-15.0.2
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

Homebrew/homebrew-core was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 26 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 59bca3968ea78ef0162fdaf23b69df402f19d107 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-d0929f7ac71f.