developer tooling for the JVM

Concurrency bugs,
forced out of hiding.

Deversity builds and maintains async-test-lib, a JUnit 5 extension that stress-tests code under maximum thread contention. A single @AsyncTest annotation runs a test body on N threads for M rounds, forces the threads to collide, and reports what more than a hundred concurrency detectors observed.

  • JUnit 5 extension
  • 100+ detectors
  • Java 21 and newer
  • Free for non-commercial use
100+concurrency detectors
1annotation to add
N × Mthreads × rounds, forced to collide

what it catches

The bugs that pass every sequential test

Four of the most common shapes, from a suite of more than a hundred detectors.

RACE

Race conditions

Lost updates and check-then-act windows that only open under real contention.

DEADLOCK

Deadlocks

Lock cycles and stuck threads, caught in the test run instead of in production.

SIGNAL

Missed signals

Waits and notifies that never meet, condition waits that sleep forever.

PUBLISH

Unsafe publication

Objects visible to other threads before they are fully constructed.

how it works

One annotation, one report

No harness to write and no mocks to thread. The extension does the colliding; you read the findings.

01

Annotate

Add @AsyncTest(threads = N, rounds = M) to a JUnit 5 test body.

02

Collide

The extension runs the body on N threads for M rounds and forces the threads to collide at the worst possible moments.

03

Read the report

The detectors report race conditions, deadlocks, missed signals, unsafe publication, and more.

licensing

Free to learn on, licensed to ship with

Non-commercial use costs nothing and needs no key. Companies buy one annual licence for the whole team.

Non-commercial

Free

async-test-lib is free for non-commercial use under the PolyForm Noncommercial License 1.0.0. No license key needed.

  • Personal projects, study and research
  • Every detector, nothing held back
  • Developers on free email providers count as non-commercial

Commercial

From €250/ year

Priced by team size. A license covers every developer on your company email domain. There are no per-seat keys.

  • One key for the whole team and CI
  • Renews yearly, cancel any time
  • Invoice or purchase order on request
See pricing

from Deversity

Three tools, one habit: check the claim, not the README

Each one turns a thing teams take on trust into a thing the build verifies.

async-test-lib

JUnit 5 extension · Java 21+

Runs a test body on N threads for M rounds, forces the threads to collide, and reports what more than a hundred concurrency detectors observed.

PolyForm NC · commercial Pricing

llm-fw

Local proxy · Node.js 22+

A firewall for LLM traffic that runs on your own machine. It intercepts every request your tools make to OpenAI, Anthropic, Gemini and a dozen other providers, blocks prompt injection in real time, redacts leaked credentials, and forwards clean traffic untouched. No cloud calls and no telemetry.

PolyForm NC · commercial See llm-fw

VibeTags

Annotation processor · Java, Kotlin

A compile-time annotation processor that generates the guardrail files AI coding tools read, CLAUDE.md, .cursorrules, copilot-instructions.md and more, from annotations in your Java or Kotlin source. Annotate once; every opted-in tool is regenerated on the next compile. Zero runtime overhead.

MIT · open source See VibeTags

Find the bug before your users do

Add the annotation to one flaky test today. It is free for non-commercial use, and a commercial licence covers your whole team.