model-checking/kani

A model checker for Rust programs.

View on GitHub ↗Jump to charts ↓Open shareable report →

model-checking/kani has 3.5k+ stars and 150+ forks on GitHub, is written in Rust, and was last pushed on Oct 14, 2026. Data as of . Signed-in members get hourly updates — create a free account.

Summary Information

Updated 40 minutes ago
Added to GitGenius on September 20th, 2026
Created on March 26th, 2021
Open Issues & Pull Requests: 540 (+0)
GitHub issues: Enabled
Number of forks: 187
Total Stargazers: 3,549 (+0)
Total Subscribers: 21 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 20.3 hours
Mean response time: 101.8 days
90th percentile: 280.2 days
Tracked items: 650

Maintainer activity

5 people did triage or write work on this repository in the last 12 months.

Counts unlabeled, assigned, unassigned, milestoned, demilestoned, locked, unlocked over the last 12 months. These are issue and pull request events that require triage or write permission. Commits and code review are not counted. labeled and renamed are excluded because GitHub issue forms record the issue author as the actor. Figures from October 11, 2026. This count is not comparable across projects: each project's automation decides which of these events a person emits. How this is counted.

How this project is maintained

Roughly one issue in three opened in the past year never receives a reply. 90% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Work labelled "T-CBMC" is answered fastest, typically in about 9 hours, while "[F] Crash" waits about 5 days. Almost all tracked open issues have seen activity in the last three months. Only 49% of issues opened in the past year have been closed.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 347
New in 7 days: 26
Closed in 7 days: 4
Avg open age: 790 days
Stale 30+ days: 229
Stale 90+ days: 203

Recent activity

Opened in 7 days: 26
Closed in 7 days: 4
Comments in 7 days: 6
Events in 7 days: 18

Top labels

  • [C] Bug (317)
  • [C] Feature / Enhancement (181)
  • Z-Contracts (77)
  • [C] Internal (60)
  • T-User (55)
  • [F] Crash (49)
  • [E] Performance (39)
  • [E] User Experience (32)

Most active issues this week

Sign in to see which issues are moving.
Sign in

Detailed Description

Kani is a bit-precise model checker for Rust that automatically verifies safety and correctness properties of Rust code.

Kani addresses the challenge of ensuring that Rust programs are free from undefined behavior and satisfy correctness requirements. It works by exhaustively checking all possible inputs to a harness function you write, using the `kani::any()` construct to explore the input space. The tool automatically detects undefined behavior in unsafe code blocks, panics from operations like `unwrap()` on `None`, arithmetic overflows, and violations of custom correctness properties expressed as assertions or function contracts. Rather than relying on testing with specific inputs, Kani attempts to prove that all valid inputs produce safe and correct outputs.

Kani suits projects where safety guarantees matter, particularly those containing unsafe code blocks that the Rust compiler cannot fully verify. It works well for libraries and systems code where undefined behavior could have serious consequences, and for code where exhaustive correctness checking is more valuable than traditional testing. The tool integrates into CI pipelines through a GitHub Action, making it practical to run verification checks automatically.

The project maintains active regression testing and tracks compatibility with the latest version of CBMC, the underlying model-checking engine. Development includes ongoing work on experimental features such as function contracts for expressing specifications. The tool supports Rust 1.58 and later on Linux and Mac platforms, with installation and usage documented through a tutorial and comprehensive book.