model-checking

    model-checking/kani

    A model checker for Rust programs.

    backend
    model-checking
    rust
    verification
    Rust
    Apache-2.0
    3.6K stars
    194 forks
    22 GitHub watchers
    Updated Nov 5, 2026
    View on GitHub

    Build with Backblaze B2

    SDKs, agent skills, IDE extensions, and reference pipelines from Backblaze Labs. All open source.

    Explore Backblaze Labs

    Loading star history...

    Where it stands

    Rank, growth pace and release cadence relative to everything GStars tracks.

    1 release in the last 90 days, the latest 50 days ago, with 83 contributors on GitHub.

    Use Cases & Benefits

    • Verifies Rust code safety and correctness using bit-precise model checking.
    • Automatically detects undefined behavior and verifies unsafe Rust code blocks beyond compiler checks.
    • Use for verifying safety properties in unsafe Rust code to prevent undefined behavior.
    • Use for proving correctness of Rust functions by checking assertions and function contracts.
    • Use for integrating formal verification into CI pipelines with the provided GitHub Action.

    Should you depend on it?

    License terms, project hygiene and risks, from GitHub metadata and GStars' snapshots.

    License

    Apache 2.0

    Permissive: commercial use, modification and redistribution are allowed with attribution; includes an explicit patent grant from contributors.

    Community files

    • README: present
    • Contributing guide: present
    • Code of conduct: present

    Watch-outs

    No watch-outs from GStars' checks.

    General guidance from repository metadata, not legal advice. How we score

    From the README

    The Kani Rust Verifier is a bit-precise model checker for Rust.

    Kani is useful for checking both safety and correctness of Rust code.

    This makes it particularly useful for verifying unsafe code blocks in Rust, where the "unsafe superpowers" are unchecked by the compiler.

    To install the latest version of Kani (Rust 1.58+; Linux or Mac), run:

    See the installation guide for more details.

    Similar to testing, you write a harness, but with Kani you can check all possible values using kani::any():

    Kani will try to prove that all valid inputs produce outputs that satisfy the specification, without panicking or exhibiting unexpected behavior. This example is simple; we highly recommend following the tutorial to learn more about how to use Kani.

    Excerpt from the model-checking/kani README on GitHub (Apache-2.0 license). © its authors.Read the full README on GitHub

    Daily snapshots

    Stars gained per day, and how forks and open issues moved, from GStars' daily snapshots

    Forks

    194+31

    Open issues

    547+44

    Compared with peers in Backend

    Fastest-growing repositories GStars tracks in this cohort for the week of Nov 1, by 7-day star growth

    model-checking/kani compared with Backend repositories by stars, 7-day star growth, health score and last release
    RepositoryStars+7dHealthLast release
    anthropics/skills187.8K+2.9K15—
    DuarteSantos8/openGym19.7K+2.4K602 days ago
    shiyu-coder/Kronos47.0K+2.3K16—
    NationalSecurityAgency/ghidra98.2K+2.3K6414 days ago
    microsoft/VibeVoice56.0K+1.1K29—
    model-checking/kani3.6K—6250 days ago
    Category median56.0K+2.3K29—

    Discover Repositories

    Search across tracked repositories by name or description