jepsen-io/jepsen

A framework for distributed systems verification, with fault injection

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 36 minutes ago
Added to GitGenius on September 8th, 2026
Created on April 14th, 2013
Open Issues & Pull Requests: 66 (+0)
GitHub issues: Enabled
Number of forks: 754
Total Stargazers: 7,489 (+0)
Total Subscribers: 187 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 0.8 hours
Mean response time: 2.4 hours
90th percentile: 7.0 hours
Tracked items: 22

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 11
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 572 days
Stale 30+ days: 11
Stale 90+ days: 11

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

No label distribution available yet.

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

Jepsen is a Clojure library for distributed systems verification that uses fault injection to test correctness.

The tool addresses the challenge of validating that distributed systems behave correctly under adverse conditions. It works by running a test program on a control node that orchestrates a distributed system across multiple database nodes via SSH, generates concurrent operations against that system, and records the complete history of those operations. A special nemesis process deliberately introduces faults—network partitions, clock skew, and other failures—while the system runs. After the test completes, Jepsen analyzes the operation history against correctness models to determine whether the system violated its guarantees. The framework can verify systems ranging from eventually-consistent databases to linearizable coordination systems and distributed task schedulers, and it generates performance and availability graphs to characterize system behavior under different fault conditions.

Jepsen suits teams building or evaluating distributed systems who need rigorous correctness testing beyond unit tests. It is particularly valuable when you need to discover whether a system maintains its consistency or availability guarantees when things fail. The framework requires writing test code in Clojure, which means adopting it involves learning both the library's API and writing test logic in that language. The tool provides pluggable components for operating systems and databases, allowing tests to be adapted to different deployment scenarios. Results from each test run are stored with analysis reports and graphs for later review.

The project maintains active development with regular updates to its core testing infrastructure and checker implementations. The codebase includes comprehensive documentation through tutorials and API references that guide users from initial setup through writing custom tests. The framework provides multiple deployment options including AWS Marketplace instances and local containerized environments, reducing friction for teams wanting to run tests without managing infrastructure manually.