"Your bean graph has a story. WireDoctor reads it."
WireDoctor is a runtime diagnostic and architectural analysis tool for Spring Boot. Add one dependency β it hooks into the real, resolved ApplicationContext at startup and turns it into an interactive report, honest advice, and CI gates. Zero-intrusion, zero-dashboard-server, pure insights.
A real run against start.spring.io (Boot 4.1.x, 429 beans, 436 edges) on WireDoctor 1.1.4 β the cycle, the ghosts and the timings in the report are all genuinely from that app. View the full docs β
βΆ Open this exact report live in your browser β no install needed.
Add the dependency β that's it. WireDoctor runs at startup, writes wiredoctor-report.html + wiredoctor-report.json, and prints a diagnostic summary to your logs.
Maven:
<dependency>
<groupId>io.github.ddsha441981</groupId>
<artifactId>wiredoctor-autoconfigure</artifactId>
<version>1.1.4</version>
</dependency>Gradle:
implementation 'io.github.ddsha441981:wiredoctor-autoconfigure:1.1.4'Want CI gates? Capture a baseline once, commit it, arm the gates:
./mvnw spring-boot:run \
-Dspring-boot.run.arguments="--wiredoctor.baseline=wiredoctor-baseline.json --wiredoctor.baseline-write=true"
git add wiredoctor-baseline.json && git commit -m "chore: WireDoctor baseline"# application-ci.properties
wiredoctor.baseline=wiredoctor-baseline.json
wiredoctor.fail-on=new-cycle,startup-time,slow-beanCommon knobs (wiredoctor.scan-packages, thresholds, output path, production kill-switch wiredoctor.enabled=false) are in the configuration reference.
The full test suite runs against this matrix in CI (compat.yml); the table below reflects what is actually green:
| Spring Boot | Java 17 | Java 21 | Java 25 |
|---|---|---|---|
| 2.7.x | β | β | β |
| 3.3.x | β | β | β |
| 3.5.x | β | β | β |
| 4.0.x | β | β | β |
Notes:
- Floor is Boot 2.4: startup timings need
BufferingApplicationStartup, introduced in Boot 2.4. Lines older than 2.7 are not CI-verified. - Boot lines between the tested ones (3.0β3.2, 3.4) are expected to work since WireDoctor only uses stable APIs, but only the listed lines carry a CI guarantee.
- WireDoctor itself is compiled for Java 17 bytecode.
- WebFlux (reactive, Netty): verified since v0.8.0 β
RouterFunction,WebHandler,WebSocketHandlerandWebExceptionHandlerbeans are recognized as entry points (never flagged as ghosts).
| Guide | What it covers |
|---|---|
| Report tour | Every tab of the HTML console, explained with real screenshots |
| Configuration reference | Every property, grouped by feature, with defaults |
| CI gating | Fail your PR on a new bean cycle β the full workflow |
| Performance gates | Startup-time and slow-bean gates, thresholds, noise tolerance |
| Upgrade Guard | Catching silent autoconfiguration changes across Boot upgrades |
| Ghost Detector | Passive candidates + opt-in first-touch tracking, and their trust postures |
| Thread Distribution | Per-thread bean map with donut chart (v1.1.0) |
| Startup Time Trend | trendHistory in baseline + trend chart with verdict bands (v1.1.3) |
| Security posture | What the reports expose, offline-only network behavior |
| Known Limitations | Honest heuristics and what the tool cannot guarantee |
Pre-generated sample reports (from real apps, including start.spring.io) are in sample/ β or view the start.spring.io report live without cloning anything.
Contributions are welcome β bug reports, docs, tests, and features. See CONTRIBUTING.md for build/test conventions and the zero-intrusion design posture. New here? Look for issues labelled good first issue.
Maintained by Deendayal Kumawat Β· LinkedIn Β· deendayal_kumawat@hotmail.com
Dual-licensed under MIT OR Apache-2.0 β pick whichever suits your project.
