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

Setup

This page installs BootUI in a Spring Boot Spring MVC application. On WebFlux, the starter is the same; follow BootUI on Spring WebFlux. On Quarkus, follow BootUI on Quarkus. All three serve the same console and the same JSON contract.

Prerequisites

  • Java 17 or later
  • Spring Boot 4.x application on spring-boot-starter-web (or spring-boot-starter-webmvc)
  • Maven or Gradle (or their local wrappers)

Add the starter dependency

Adding the starter is the whole install. BootUI ships dormant: it activates in the dev and local profiles, or when spring-boot-devtools is on the classpath, and stays off in prod and production.

The starter brings no web stack of its own. Your application's spring-boot-starter-web keeps it a servlet application on Tomcat, and BootUI binds to Spring MVC; a WebFlux application keeps spring-boot-starter-webflux and the same starter binds to WebFlux. An application with neither starts no web server, and BootUI stays off.

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

To keep the starter jar out of your production artifact, declare it in a dev-only build profile instead. See Activation and safety.

Run your app in development mode

Start the application with the dev profile active so BootUI turns on:

Maven
./mvnw spring-boot:run -Dspring-boot.run.profiles=dev
Gradle
./gradlew bootRun --args='--spring.profiles.active=dev'

BootUI also activates when spring-boot-devtools is on the classpath. To decide explicitly instead of relying on the AUTO default, set bootui.enabled:

bootui.enabled=ON

The prod and production profiles disable BootUI unless bootui.enabled=ON is set. An unrecognized value fails closed and leaves BootUI disabled.

YAML parses ON as a boolean

In application.yml, ON, OFF, yes, no, true, and false are booleans, so bootui.enabled: ON arrives as true. BootUI treats ON, true, and yes as enabled and OFF, false, and no as disabled, so bootui.enabled: ON works unquoted.

Open the console

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

Use a custom path

To move the console, set bootui.path:

bootui.path=/dev-console

The UI is then served at /dev-console, and the API, streams, downloads, writes, and MCP endpoint move to /dev-console/api/**. The old /bootui mount returns 404; it is not kept as an alias.

To serve the API from a separate mount, set bootui.api-path as well:

bootui.path=/dev-console
bootui.api-path=/internal/bootui-api

Both paths are application-relative. A servlet context path, a WebFlux base path, or a Quarkus HTTP root path is composed automatically, so server.servlet.context-path=/host with bootui.path=/dev-console produces /host/dev-console. The UI receives the browser-visible paths at runtime, so no frontend rebuild is needed.

Path validation rules

A path must be absolute and may contain only letters, digits, -, _, ., ~, and /. Trailing slashes are stripped first, so /dev-console/ is accepted. BootUI then fails startup for /, blank values, . and .. segments, query and fragment components, encoded separators, consecutive interior slashes, and routing patterns. A custom bootui.path may not live under the reserved /bootui/** namespace. See the property reference.

What to read next

Everything below is optional.

If you want toRead
Understand when BootUI turns on, or keep it out of your prod buildActivation and safety
Run BootUI on WebFlux or QuarkusSpring WebFlux · Quarkus
Run inside Docker, or in a command-line appNon-standard runtimes
See which methods ran, and whether your change didJava agent
Fix something that is not workingTroubleshooting
Look up a propertyProperty reference
See what each panel doesFeatures
Know what BootUI does not do yet, per stackKnown limitations

Using the MySQL panel

The MySQL panel reuses a configured application JDBC datasource and MySQL Connector/J. It creates no monitoring pool, requires no Hibernate, and starts no database or workload. Keep credentials in the application's existing secure configuration. Oracle MySQL 8.4 LTS and 9.7 LTS are the tested server lines. MariaDB reached through MySQL Connector/J is read but unsupported, and R2DBC-only access is not covered.

Prev
Try the sample app
Next
Spring WebFlux

© 2026 Julien Dubois