BootUI
Try it
Setup
Features
Workshop
Properties
AI agents
Ecosystem
GitHub
Try it
Setup
Features
Workshop
Properties
AI agents
Ecosystem
GitHub
  • Get started

    • Try the sample app
    • Setup
    • Spring WebFlux
    • Quarkus
    • Java agent
    • Activation and safety
    • Non-standard runtimes
    • Troubleshooting
  • Workshop

    • Workshop overview
    • 00 - Runtime understanding
    • 01 - Setup and tooling
    • 02 - Configuration and wiring
    • 03 - Runtime journal
    • 04 - Runtime Insights
    • 05 - Java instrumentation
    • 06 - Assessment and impact
    • 07 - Agent change loop
    • 08 - Going further
    • Participant worksheet
    • A - Prompts
    • B - Troubleshooting
    • C - Frameworks
    • D - Extensions
  • Features

    • All features
    • Scorecard
    • Live Activity
    • Runtime Insights
    • Advisors
    • Runtime
    • Configuration
    • Database
    • Security
    • Services
    • Diagnostics
    • Java Agent
    • Developer tools
  • Reference

    • Properties
    • Framework support
    • AI agents
    • Command line
    • BootUI family
    • Known limitations
  • Diagnostic checks

    • Architecture
    • REST API
    • Spring
    • Hibernate
    • Database
    • Security
    • Vulnerabilities
    • Memory
    • Pentesting
    • GraalVM readiness
    • CRaC readiness
    • Quarkus
    • Quarkus security
  • Contributing

    • Repository
    • Specification
    • Implementation plan
    • v2 plan
    • Try 2.0 early
    • v2 validation report
    • Releasing 2.0
    • Quarkus design notes
    • WebFlux design notes
  • Privacy

BootUI on Quarkus

BootUI ships as a Quarkus extension. It serves the same console and the same JSON contract as the Spring starter, backed by the Quarkus build of the framework-neutral engine.

Prerequisites

  • Java 17 or later
  • A Quarkus application, built and tested against the platform version pinned by the root pom.xml (quarkus.platform.version, currently the 3.40.1 LTS release)
  • Maven or Gradle (or their local wrappers)

The extension also supports the previous LTS line, 3.33. Every build runs the published build of the extension through all of its Quarkus integration fixtures on Quarkus 3.33.4 LTS, and runs the extension's own tests compiled against it. Its core, REST client, production-guard, and Hibernate JVM fixtures have also passed with Quarkus 3.39.5. Quarkus 3.39 is the most recently released non-LTS line, but its upstream support ended when 3.40 shipped.

Add the extension

Maven
<dependency>
  <groupId>com.julien-dubois.bootui</groupId>
  <artifactId>bootui-quarkus</artifactId>
  <version>2.1.0</version>
</dependency>
Gradle
// Groovy DSL (build.gradle)
implementation 'com.julien-dubois.bootui:bootui-quarkus:2.1.0'
// Kotlin DSL (build.gradle.kts)
implementation("com.julien-dubois.bootui:bootui-quarkus:2.1.0")

Declare only bootui-quarkus. The Quarkus extension mechanism resolves the matching bootui-quarkus-deployment artifact for you.

Run your app in development mode

Start Quarkus in dev mode. BootUI activates automatically, with no profile or flag to set:

Maven
./mvnw quarkus:dev
Gradle
./gradlew quarkusDev

BootUI is then available at http://localhost:8080/bootui.

The bootui.path and bootui.api-path settings described in Use a custom path work in dev and test mode and compose with quarkus.http.root-path.

Activation and safety

The Quarkus launch mode decides activation. There is no Spring-style profile and no bootui.enabled flag:

Launch modeBehavior
dev (quarkus:dev) and test (@QuarkusTest)The console, its /bootui/api/** endpoints, the CDI beans, and the safety filter are wired.
NORMAL (a packaged quarkus-run.jar or a native image)The console, its endpoints, and its CDI beans are not wired. One guard filter is registered in every launch mode and decides at runtime: in NORMAL it answers a plain 404 for /bootui and every /bootui/** path, including the packaged UI shell, and in dev and test it passes through.

This is fail-closed by design: no flag turns BootUI on in a production build.

The request-time safety model matches Spring Boot. The shared LocalhostGuard applies loopback-source trust, a Host allow-list against DNS rebinding, and cross-site-write protection. API callers from untrusted sources must also present the BootUI bearer token; loopback callers and sources you have explicitly trusted through bootui.trusted-proxies or bootui.trust-container-gateway are exempt. The same keys apply, read from MicroProfile Config:

# Default: reject non-loopback callers.
bootui.allow-non-localhost=false
# Extra Host header values to accept.
bootui.allowed-hosts=localhost
# Extra source ranges, for example a Docker gateway.
bootui.trusted-proxies=172.17.0.1/32
# Auto-trust the container gateway in dev containers.
bootui.trust-container-gateway=AUTO
# Optional stable token; otherwise generated at startup.
# bootui.authentication.token=...

The Docker container guidance applies to Quarkus too, since dev mode is already active there. Per-panel bootui.panels.* toggles and the bootui.read-only master switch behave identically on both frameworks.

Runtime configuration overrides are Spring-only today, so the Configuration panel is read-only on Quarkus.

Panel availability

Most panels are live. Nine target Spring-specific runtime concepts and are permanently marked not applicable, and JMS is not available yet. See what is not on Quarkus for the list and the reason for each. To try a fully wired application, see Try the sample app.

The MySQL panel needs an existing default or named JDBC datasource with the io.quarkus:quarkus-jdbc-mysql extension and a MySQL declaration: quarkus.datasource.db-kind=mysql for the default datasource, or quarkus.datasource.<name>.db-kind=mysql for a named one. A reactive MySQL client alone is not enough, and BootUI creates no monitoring datasource of its own.

Prev
Spring WebFlux
Next
Java agent

© 2026 Julien Dubois