The resilience element for your application.
Fortify your services against the outside world — element by element.
⚠️ There is no release yet. No artifacts, no working code, nothing to install or try.This repository documents the architecture and vision for Inqudium. The project is being built in the open from day one. What you see here is a blueprint — not a product.
If the approach resonates with you, star this repo to follow progress. Architecture feedback and design discussions are welcome right now — code contributions will follow once the foundation is in place.
Inqudium will be a fault-tolerance library for Java 21+ and Kotlin that takes a fundamentally different approach: instead of bridging resilience patterns across execution models, every paradigm will get its own native implementation.
A Kotlin Circuit Breaker will use Mutex — not ReentrantLock. A Reactor
Retry will wait with Mono.delay() — not LockSupport.parkNanos.
Backpressure won't be bolted on. It will flow from the native Flow, Subscription, or Flowable.
Configuration, algorithms, and events shared. Execution native. That's the plan.
┌─────────────────── inqudium-core (SPI) ──────────────────┐
│ Configs │ Pure Algorithms │ Events │ Contracts │
└──────┬────────────┬──────────────┬────────────┬──────────┘
│ │ │ │
Imperative Kotlin Reactor RxJava 3
ReentrantLock Mutex Sinks.One Subject
parkNanos delay() Mono.delay Single.timer
Semaphore k.c.Sem. flatMap(n) flatMap(n)
| Symbol | Element | Description |
|---|---|---|
| Cb | Circuit Breaker | Stops cascading failures by short-circuiting calls to unhealthy services. |
| Rt | Retry | Automatically retries failed operations with configurable backoff. |
| Rl | Rate Limiter | Controls throughput to prevent overloading downstream systems. |
| Bh | Bulkhead | Isolates failures by limiting concurrent access to a resource. |
| Tl | Time Limiter | Guards against slow responses by enforcing execution time boundaries. |
| Ts | Traffic Shaper | Turn a flood into a stream. Keep your services breathing. |
| Module | Artifact ID | Status |
|---|---|---|
| Core (SPI) | inqudium-core |
in progress |
| Resilience (imperative) | inqudium-imperative |
in progress |
| Kotlin Coroutines (native) | inqudium-kotlin |
Planned |
| RxJava 3 (native) | inqudium-rxjava3 |
Planned |
| Spring Boot Starter | inqudium-spring-boot3 |
Planned |
| Micrometer | inqudium-micrometer |
Planned |
| Java Flight Recorder | inqudium-jfr |
Planned |
| Resilience4J Compatibility | inqudium-compat-resilience4j |
Planned |
Native per paradigm — Every execution model will get its own implementation built on that model's primitives. No thread bridges, no blocking wrappers.
Shared contracts, no duplication — inqudium-core will define configs, pure algorithms, and events once. The what
is shared, the how is native per paradigm.
Virtual-thread ready — The imperative layer will use ReentrantLock (not synchronized) and
LockSupport.parkNanos (not Thread.sleep) to avoid pinning virtual threads.
Resilience4J drop-in compatible — A planned compatibility module will let you swap the Maven dependency and keep your annotations, YAML, and Grafana dashboards.
Right now the most valuable contributions are ideas, not code:
- Architecture feedback — Does the native-per-paradigm approach make sense for your stack? What would you need?
- Use cases — What resilience pain points do you hit in production that existing libraries don't solve well?
- Design discussions — Open an issue or join an existing one. Every perspective shapes the outcome.
Code contributions will open up once inqudium-core compiles and has a test harness to build against. We'll announce
that milestone here.
Star this repository to get notified about releases. Major milestones will be documented in CHANGELOG.md.
Apache License 2.0 — see LICENSE. This documentation is licensed under CC BY 4.0
Iq — The resilience element for your application.