Vidocq Runtime is the runtime MicroProfile that assembles the six foundational bricks of the ecosystem — Chappe (HTTP transport), Vauban (CDI), Champollion (JSON), Foy (Servlet), Cassini (REST), Mansart (persistence) — into a coherent runtime inspired by the Quarkus extension model, but with no ASM, no runtime reflection, and no Vert.x.

Origin of the name

Eugène-François Vidocq (1775-1857), an escaped convict turned founder and first head of France’s Sûreté nationale (Brigade de la Sûreté, 1812). A precursor of forensic science, he also founded the first private detective agency. See Wikipedia.

The metaphor faithfully reflects the role of the module. Vidocq fused heterogeneous informants into a modern police organisation. Vidocq Runtime fuses six disparate technical bricks — each named after another historical figure — into a coherent system. The umbrella project also lends its name to the entire ecosystem.

At a glance

Targeted MicroProfile specs

https://microprofile.io/specifications/microprofile-config/, https://microprofile.io/specifications/microprofile-health/, https://microprofile.io/specifications/microprofile-metrics/, https://microprofile.io/specifications/microprofile-open-api/ (current milestone: Config, Health, Metrics, OpenAPI)

Repo

https://codeberg.org/Vidocq/vidocq

Java

25 (LTS)

Build

Maven 3.9.16

JPMS modules

io.vidocq.runtime, io.vidocq.runtime.spi, io.vidocq.runtime.core, io.vidocq.runtime.maven

Runtime dependencies

Jakarta + MicroProfile specs only — no third-party framework

TCK

See detailed status — JAX-RS via Cassini, Servlet via Foy, MicroProfile in progress

Position in the ecosystem

Diagram

Differentiators

  • Java 25 + virtual threadsExecutors.newVirtualThreadPerTaskExecutor() everywhere, no platform thread pools.

  • Strict JPMS — every artefact is a named module, minimal exports, no hidden classpath.

  • Static codegen — Class-File API (JEP 484) + APT at compile time, no dynamic proxies, no ASM, no Byte Buddy.

  • Zero runtime reflection — anything that can be is resolved at build, AOT-ready (GraalVM, Leyden CDS).

  • Build-time first — like Quarkus, but on a CDI Lite + Class-File API standard JDK foundation.

  • Getting started — REST + DI + H2 persistence hello world

  • Usage — jlink/jpackage/Docker packaging, MicroProfile Config, Health, Metrics, OpenAPI

  • Concepts — extension, build step, recorder, lifecycle phase

  • Internals — boot sequence, extension mechanism, threading

  • TCK status — MicroProfile Config, Health, Metrics, OpenAPI

  • Reference — configuration keys, Maven CLI, properties

  • Migration — from Quarkus, Helidon, Spring Boot, Open Liberty, Payara Micro

  • Reactor sub-modules