Knock is the health subsystem of the Vidocq runtime. It implements MicroProfile Health 4.0 with zero third-party libraries — only Jakarta EE and MicroProfile specifications. Health checks are discovered through CDI, exposed over Jakarta REST, serialised with Jakarta JSON-P, and executed on virtual threads.

Origin of the name

Knock, or the Triumph of Medicine (« Knock, ou le Triomphe de la médecine ») is a 1923 comedy by Jules Romains. Doctor Knock turns a whole village into patients under permanent observation — "every healthy person is a sick person who doesn’t know it yet". The Knock module applies the same relentless auscultation to a running application: liveness, readiness and startup probes keep every component under continuous diagnosis.

At a glance

Implemented spec

MicroProfile Health 4.0

Repo

https://codefloe.com/Vidocq/knock

Java

25

Java modules

knock-mp-health-api, knock-api, knock-core, knock-cdi-vauban, knock-jaxrs (plus knock-tck, the TCK runner — profile-gated, no module-info.java)

Runtime dependencies

knock-core: only the MicroProfile Health API and jakarta.json (JSON-P). The integration modules add their spec APIs — jakarta.cdi/jakarta.inject for knock-cdi-vauban, jakarta.ws.rs for knock-jaxrs — plus compile-time-only (requires static) vauban-api / cassini-api

MicroProfile Health 4.0 TCK

28 / 28 PASS — see detailed status

Three identifying traits

  1. Zero third-party libraries — MicroProfile Health and Jakarta specs only. No SmallRye Health, no Vert.x, no Jackson. JSON is produced through Jakarta JSON-P.

  2. CDI-native discovery — @Liveness, @Readiness, @Startup beans are discovered on Vauban and registered automatically, while knock-core stays usable in plain Java SE.

  3. Strict Java Modules + virtual threads — every module ships a module-info.java; checks run on a VirtualThreadPerTaskExecutor. No synchronized, no ThreadLocal, no setAccessible(true).

Endpoints

Endpoint Probe HTTP status

GET /health

All registered checks

200 UP / 503 DOWN

GET /health/live

@Liveness checks

200 UP / 503 DOWN

GET /health/ready

@Readiness checks

200 UP / 503 DOWN

GET /health/started

@Startup checks

200 UP / 503 DOWN

Position in the ecosystem

Diagram