ddsha441981/wiredoctor

🩺 Zero-intrusion runtime diagnostic and architectural analyzer for Spring Boot. Automatically detects cyclic dependencies, proxy overheads, and startup bottlenecks with an interactive physics-based HTML dashboard.

7

stars

92

commits

Java

primary language

Sep 7, 2026

updated

ddsha441981.github.io/wiredoctor/sample/v1.1.4/wiredoctor-report.html
architecture
dependency-injection
diagnostic-tool
java
performance-monitoring
spring-boot
spring-boot-starter
static-analysis
visjs

README

🩺 WireDoctor

Maven Central CI Tests Tests License Awesome Java

"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.

WireDoctor report — a tour of every tab

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.


Quick start

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-bean

Common knobs (wiredoctor.scan-packages, thresholds, output path, production kill-switch wiredoctor.enabled=false) are in the configuration reference.


Supported Versions

The full test suite runs against this matrix in CI (compat.yml); the table below reflects what is actually green:

Spring BootJava 17Java 21Java 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, WebSocketHandler and WebExceptionHandler beans are recognized as entry points (never flagged as ghosts).

📚 Full documentation

GuideWhat it covers
Report tourEvery tab of the HTML console, explained with real screenshots
Configuration referenceEvery property, grouped by feature, with defaults
CI gatingFail your PR on a new bean cycle — the full workflow
Performance gatesStartup-time and slow-bean gates, thresholds, noise tolerance
Upgrade GuardCatching silent autoconfiguration changes across Boot upgrades
Ghost DetectorPassive candidates + opt-in first-touch tracking, and their trust postures
Thread DistributionPer-thread bean map with donut chart (v1.1.0)
Startup Time TrendtrendHistory in baseline + trend chart with verdict bands (v1.1.3)
Security postureWhat the reports expose, offline-only network behavior
Known LimitationsHonest 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.


🤝 Contributing

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

📄 License

Dual-licensed under MIT OR Apache-2.0 — pick whichever suits your project.

Contributors

ddsha441981

89 commits

ddsha441981/wiredoctor

🩺 Zero-intrusion runtime diagnostic and architectural analyzer for Spring Boot. Automatically detects cyclic dependencies, proxy overheads, and startup bottlenecks with an interactive physics-based HTML dashboard.

7

stars

92

commits

Java

primary language

Sep 7, 2026

updated

ddsha441981.github.io/wiredoctor/sample/v1.1.4/wiredoctor-report.html
architecture
dependency-injection
diagnostic-tool
java
performance-monitoring
spring-boot
spring-boot-starter
static-analysis
visjs

README

🩺 WireDoctor

Maven Central CI Tests Tests License Awesome Java

"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.

WireDoctor report — a tour of every tab

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.


Quick start

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-bean

Common knobs (wiredoctor.scan-packages, thresholds, output path, production kill-switch wiredoctor.enabled=false) are in the configuration reference.


Supported Versions

The full test suite runs against this matrix in CI (compat.yml); the table below reflects what is actually green:

Spring BootJava 17Java 21Java 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, WebSocketHandler and WebExceptionHandler beans are recognized as entry points (never flagged as ghosts).

📚 Full documentation

GuideWhat it covers
Report tourEvery tab of the HTML console, explained with real screenshots
Configuration referenceEvery property, grouped by feature, with defaults
CI gatingFail your PR on a new bean cycle — the full workflow
Performance gatesStartup-time and slow-bean gates, thresholds, noise tolerance
Upgrade GuardCatching silent autoconfiguration changes across Boot upgrades
Ghost DetectorPassive candidates + opt-in first-touch tracking, and their trust postures
Thread DistributionPer-thread bean map with donut chart (v1.1.0)
Startup Time TrendtrendHistory in baseline + trend chart with verdict bands (v1.1.3)
Security postureWhat the reports expose, offline-only network behavior
Known LimitationsHonest 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.


🤝 Contributing

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

📄 License

Dual-licensed under MIT OR Apache-2.0 — pick whichever suits your project.

Contributors

ddsha441981

89 commits

Languages

Java

78.2%

HTML

19.9%

JavaScript

1.9%