Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Elixir
  3. fuse

fuse

MITErlang2.4.3

A robust circuit breaker library for Erlang applications to prevent cascading failures and improve system resilience.

GitHubGitHub
512 stars51 forks0 contributors

What is fuse?

Fuse is an Erlang/OTP application that implements the circuit breaker pattern, a fault-tolerance mechanism for distributed systems. It prevents cascading failures by detecting errors in dependent services and temporarily blocking requests, allowing systems to degrade gracefully and auto-heal when issues are resolved.

Target Audience

Erlang/Elixir developers building distributed systems with long dependency chains, such as microservices or layered applications, where service failures could cascade and cause latency or resource waste.

Value Proposition

Developers choose Fuse for its correctness and reliability, backed by extensive property-based testing with Erlang QuickCheck to eliminate subtle concurrency and timing errors. It offers high performance with sub-microsecond overhead, configurable fuse types, and integration with monitoring systems like Prometheus.

Overview

A Circuit Breaker for Erlang

Use Cases

Best For

  • Preventing cascading failures in Erlang-based microservices architectures.
  • Adding fault tolerance to distributed systems with long dependency chains (e.g., app_A → app_B → app_C).
  • Testing system robustness through fault injection fuses that simulate failures at a specified rate.
  • Monitoring service health with built-in stats plugins for ETS, Folsom, Exometer, or Prometheus.
  • Handling administrative overrides in production with manual circuit disable/enable commands.
  • Reacting to fuse state changes in real-time via an event handler system for blown or ok events.

Not Ideal For

  • Systems requiring per-error-type circuit breaking with different thresholds for various failure modes.
  • Projects that need integrated process supervision and automatic restarts on failures (like breaky offers).
  • Environments where strict linearizability is critical and async_dirty context races are unacceptable.
  • Non-Erlang applications, as Fuse is tightly coupled to Erlang/OTP and not portable to other runtimes.

Pros & Cons

Pros

Property-Based Testing

Extensive Erlang QuickCheck testing eliminates subtle concurrency and timing errors, ensuring high reliability and correctness as part of a system's error kernel.

High Performance

Sub-microsecond overhead for fuse queries enables millions of operations per second with minimal latency impact, as benchmarked on typical hardware.

Flexible Fuse Types

Supports standard fuses with configurable thresholds and fault injection fuses to simulate failures at a specified rate, aiding in robustness testing.

Monitoring Integration

Built-in stats plugins for ETS, Folsom, Exometer, and Prometheus, plus Erlang alarm handler integration with hysteresis for comprehensive system oversight.

Cons

Async Context Races

Using the async_dirty context can lead to rare race conditions where parallel processes observe inconsistent fuse states, breaking linearizability and requiring careful handling.

Erlang-Only Limitation

Designed exclusively for Erlang/OTP, making it unsuitable for projects in other languages or ecosystems without complex interoperability workarounds.

Configuration Complexity

Requires precise setup of fuse strategies, refresh policies, and stats plugins, which can be error-prone and daunting for developers new to circuit breakers.

Frequently Asked Questions

Quick Stats

Stars512
Forks51
Contributors0
Open Issues5
Last commit4 years ago
CreatedSince 2014

Tags

#library#circuit-breaker#otp#distributed-systems#fault-tolerance#resilience#monitoring#erlang#quickcheck#production-ready

Built With

E
Erlang
O
OTP

Included in

Elixir13.1k
Auto-fetched 14 hours ago

Related Projects

flowflow

Computational parallel flows on top of GenStage

Stars1,613
Forks88
Last commit1 year ago
witchcraftwitchcraft

Monads and other dark magic for Elixir

Stars1,230
Forks60
Last commit2 years ago
machinerymachinery

Elixir State machine thin layer for structs

Stars565
Forks55
Last commit2 years ago
matrexmatrex

A blazing fast matrix library for Elixir/Erlang with C implementation using CBLAS.

Stars489
Forks32
Last commit5 years ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub