BootUI is a Spring Boot 4 starter that adds an embedded, local-only developer console to your application.
It is served by the host application at /bootui/, uses internal /bootui/api/** endpoints, and packages the browser UI into the starter so consuming applications do not need Node.js or npm.
BootUI exposes these panels in the same order as the application menu. See the feature details guide for explanations and screenshots for every panel.
| Feature | What it helps with |
|---|---|
| Overview | See runtime identity, versions, ports, active profiles, activation reason, and safety state. |
| Startup Timeline | Inspect Spring Boot startup steps and durations when startup data is available. |
| Memory | Review JVM heap, non-heap, memory pools, garbage collectors, and suggested JVM options. |
| Health | Explore the Actuator health tree and contributor details. |
| Metrics | Browse Micrometer meters, tags, measurements, and a local live chart for selected metrics. |
| Conditions | Understand why auto-configuration classes matched, did not match, or were unconditional. |
| Beans | Search Spring beans by name, type, scope, resource, dependency, and BootUI classification. |
| Mappings | Review HTTP routes, handlers, methods, patterns, and produces/consumes metadata. |
| Configuration | Inspect effective configuration values, metadata, masking, and local runtime overrides. |
| Profile Diff | Compare profile-specific property sources and values while preserving secret masking. |
| Loggers | Inspect and change logger levels at runtime through the Actuator loggers endpoint. |
| Log Tail | Read recent application logs and stream new local log events from the running process. |
| Traces | Inspect distributed tracing spans collected by the embedded OTLP receiver with a per-trace waterfall view. |
| AI Usage | Summarize Spring AI chat conversations, token usage, latency, and model details from OpenTelemetry spans. |
| HTTP Probe | Send local-only HTTP requests to the app and inspect response status, headers, and body. |
| DevTools | Check Spring Boot DevTools status, LiveReload availability, and restart controls. |
| Dev Services | Inspect Docker Compose snapshots, Testcontainers beans, service connection metadata, and bounded logs. |
| Scheduled Tasks | View registered scheduled tasks and their trigger metadata. |
| Data | Explore Spring Data repositories, domain types, IDs, and query methods. |
| Cache | Inspect Spring Cache managers, caches, metrics, annotations, and confirmed clear actions. |
| Security | Inspect Spring Security filter chains and best-effort endpoint rule explanations. |
| Vulnerabilities | Review dependency inventory and local OSV vulnerability scan results. |
Some panels depend on optional Spring, Actuator, or development infrastructure. When data is unavailable, BootUI returns stable empty responses or shows an explanatory empty state. The sidebar also dims panels whose backing classpath or endpoint support is unavailable so you can spot empty sections immediately.
- Java 25
- Spring Boot 4.x application
- Maven or your application's Maven Wrapper
<dependency>
<groupId>com.julien-dubois.bootui</groupId>
<artifactId>bootui-spring-boot-starter</artifactId>
<version>0.1.0-alpha.4</version>
</dependency>./mvnw spring-boot:run -Dspring-boot.run.profiles=devBootUI also activates automatically when spring-boot-devtools is on the classpath. To force it on or off:
bootui.enabled=AUTO
bootui.enabled=ON
bootui.enabled=OFFprod and production profiles disable BootUI unless bootui.enabled=ON is set. Invalid bootui.enabled values fail closed and keep BootUI disabled.
Visit: http://localhost:8080/bootui
BootUI is intended for local development only. By default it:
- activates in
AUTOmode only fordev/localprofiles or DevTools - rejects non-loopback requests
- masks secret-like configuration values
- exposes the local Actuator endpoints used by BootUI panels when BootUI is active
- disables itself for
prod/productionprofiles - stores runtime configuration overrides in
.bootui/application-bootui.properties, not in your source config files
Common properties:
| Property | Default | Description |
|---|---|---|
bootui.enabled |
AUTO |
AUTO, ON, or OFF. |
bootui.enabled-profiles |
dev,local |
Profiles that activate BootUI in auto mode. |
bootui.disabled-profiles |
prod,production |
Profiles that disable BootUI unless forced on. |
bootui.allow-non-localhost |
false |
Explicit opt-out of loopback-only protection. |
bootui.expose-values |
MASKED |
MASKED, METADATA_ONLY, or FULL; FULL can disclose secrets and should stay local. |
bootui.overrides-file |
.bootui/application-bootui.properties |
Runtime override persistence file. |
bootui.cache.clear-enabled |
true |
Enables Spring Cache clear actions after explicit browser confirmation. |
bootui.dev-services.restart-enabled |
false |
Enables restart controls for bean-backed Testcontainers services. Disabled by default. |
bootui.dev-services.log-tail-bytes |
65536 |
Maximum bytes returned by one Dev Services log request. |
The Configuration panel can create, update, and delete local runtime overrides. Overrides are stored in .bootui/application-bootui.properties by default, loaded at high precedence on the next startup, and never modify your application source configuration. Already-bound @ConfigurationProperties beans may keep their previous value until the app restarts; BootUI returns that warning with every override mutation.
| Symptom | Check |
|---|---|
/bootui returns 404 |
Use the dev or local profile, add DevTools, or set bootui.enabled=ON. |
BootUI is disabled in prod |
This is intentional; only bootui.enabled=ON can force activation with a disabled profile. |
| Browser is rejected | BootUI accepts loopback callers by default. Use bootui.allow-non-localhost=true only for a trusted local network. |
| A panel is empty | Enable the relevant Actuator endpoint or optional Spring module; BootUI degrades to stable empty DTOs when data is unavailable. |
| Startup Timeline is empty | Configure BufferingApplicationStartup in the host app. |
| Secrets are hidden | Default exposure is MASKED; use METADATA_ONLY to hide all values or FULL only in trusted local sessions. |
bootui-spring-boot-starter: dependency to add to your appbootui-autoconfigure: Spring Boot auto-configurationbootui-ui: Vue 3 frontend packaged into the starterbootui-core: shared DTOs and core helpersbootui-sample-app: demo and integration sample app
- Feature details: panel-by-panel guide with screenshots
- Sample app walkthrough: the demo app behind the screenshots and Playwright suite
- CHANGELOG.md: release notes
- CONTRIBUTING.md: contributor workflow, build, test, and publishing instructions
- SECURITY.md: threat model and security policy
- docs/SPECIFICATION.md: full product and technical specification
- docs/PLAN.md: implementation roadmap
Licensed under the Apache License, Version 2.0.
