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

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

    • All features
    • Overview
    • Advisors
    • Runtime
    • Configuration
    • Database
    • Security
    • Services
    • Diagnostics
    • Developer tools
  • Reference

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

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

    • Repository
    • Specification
    • Implementation plan
    • Quarkus design notes
    • WebFlux design notes
  • Privacy

BootUI properties

BootUI reads its bootui.* configuration from the host application's own configuration — Spring Boot property sources on the Spring adapter, MicroProfile Config on the Quarkus adapter. It is local-only by default: it activates only in development contexts, rejects non-loopback callers, masks secret-like values, and disables itself for production profiles unless explicitly forced on.

Panel settings are consistent across the UI and API:

  • Every visible panel has bootui.panels.<panel-id>.enabled with default true.
  • Panels with browser-triggered actions also have bootui.panels.<panel-id>.read-only with default false.
  • bootui.read-only=true makes every action-capable panel read-only, even when the per-panel read-only flag is false.
  • Disabled panels are moved to the Disabled / unavailable sidebar group and their panel API routes return 403.
  • Read-only panels keep read endpoints visible but block mutating API requests. Safe methods (GET, HEAD, OPTIONS) remain allowed.

Spring vs Quarkus (cross-adapter parity)

BootUI targets Spring Boot and Quarkus from one codebase, and its bootui.* keys are largely the same by name on both adapters — but they are read by different configuration engines, and a few keys are platform-specific.

How keys are read. On Spring, bootui.* keys are bound once into a @ConfigurationProperties object, so Spring's relaxed binding applies (camelCase, kebab-case, and underscores are all accepted). On Quarkus, each key is read live, per request through MicroProfile Config and must be written in exact kebab-case; a missing or invalid value fails closed (for example, masking stays on and non-loopback access stays denied). Most keys below are honored identically on both adapters.

Activation. Spring decides activation at runtime from bootui.enabled and the enabled-profiles / disabled-profiles lists (plus DevTools). Quarkus decides activation at build time from the launch mode: the console is wired in dev and test and is completely absent (prod-dark) in a production build. The three Spring activation keys therefore have no effect on Quarkus.

Host application namespace. The host application itself is configured with its own framework's properties — spring.* on Spring, quarkus.* on Quarkus. BootUI does not read spring.* keys on Quarkus; its advisors bridge the two namespaces internally (for example, the Hibernate advisor maps the Spring property names its rules expect onto their quarkus.hibernate-orm.* equivalents).

Keys that are not shared

Key(s)ScopeNotes
bootui.enabled, bootui.enabled-profiles, bootui.disabled-profilesSpring onlyQuarkus activates by build-time launch mode.
bootui.force-web, bootui.startup.enabled, bootui.startup.capacitySpring onlyDriven by Spring EnvironmentPostProcessors with no Quarkus analogue.
bootui.free-on-idle.enabled / .timeoutSpring onlyThe idle-buffer-release optimization is Spring-only.
bootui.dev-services.restart-enabled / .log-tail-bytesSpring onlyQuarkus Dev Services are build-time; the panel has no log-tail or restart controls.
bootui.graalvm.*Spring onlyThe GraalVM panel is not applicable on Quarkus.
bootui.http-sessions.max-sessionsSpring onlyThe HTTP Sessions panel is not applicable on Quarkus.
bootui.activity.max-entries, bootui.activity.n-plus-one-threshold, bootui.activity.request-slow-threshold-msSpring onlyStream cap, N+1 detection threshold, and slow-request threshold apply only to Spring's richer tiered-correlation profiler; Quarkus's reduced trace-id-only profiler has no equivalent config. bootui.activity.max-scheduled-task-runs is shared by both adapters (see below). The optional durable-persistence backend (bootui.activity.persistence.*) is shared — see below.
bootui.telemetry.max-request-bytesSpring onlySizes the embedded OTLP receiver, which Quarkus does not run (it captures spans in-process).
bootui.cache.activity-capture-enabled, bootui.cache.activity-max-eventsSpring onlyFeeds the Live Activity CACHE events and cache hit ratio KPI, captured by decorating Spring CacheManager beans; Quarkus has no comparable runtime interception seam for quarkus-cache's build-time-woven annotations.
bootui.internal.*Quarkus only, internalBuild-time facts (base packages, dependency inventory, capability-present flags) emitted by build steps. Not a user setting — never set by hand.

Keys with a shared name but platform-specific behavior

KeySpringQuarkus
bootui.overrides-fileThe Configuration panel persists runtime overrides here, and the key also locates the advisor dismissed-rules file.The Configuration panel is read-only on Quarkus, so the key only locates the advisor dismissed-rules file (.bootui/boot-ui.yml).

Everything not listed in the two tables above is honored under the same key — and with the same default — on both adapters. This includes the safety keys (bootui.allow-non-localhost, bootui.allowed-hosts, bootui.trusted-proxies, bootui.trust-container-gateway, bootui.authentication.token), bootui.expose-values, bootui.mask-secrets, bootui.path / bootui.api-path, bootui.monitoring.exclude-self, bootui.http-exchanges.max-exchanges (default 200), bootui.log-tail.max-bytes (default 0, meaning unbounded), and the bootui.github.*, bootui.vulnerabilities.* (including osv-base-uri, default https://api.osv.dev), bootui.sql-trace.*, bootui.transactions.*, bootui.telemetry.* (except max-request-bytes), bootui.heap-dump.*, bootui.exceptions.*, bootui.security-logs.*, bootui.cache.* (except .activity-capture-enabled and .activity-max-events, Spring only — see above), bootui.mcp.*, bootui.cli.*, bootui.ai.*, bootui.copilot.*, and bootui.claude-code.* families. It also includes the per-panel access keys — bootui.panels.<id>.enabled / .read-only and the global bootui.read-only — which are enforced on Quarkus by QuarkusPanelAccessFilter at full behavioral parity with Spring's PanelAccessFilter (same config keys, same BootUiPanels path resolution, same canonical JSON 403 body); see "Panel access settings" below.

Global settings

PropertyDefaultDescription
bootui.enabledAUTOActivation mode. AUTO activates only for configured local profiles or DevTools; ON forces BootUI on; OFF forces it off. In YAML, ON/OFF are parsed as booleans, so true/yes and false/no are accepted as ON/OFF.
bootui.enabled-profilesdev,localProfiles that activate BootUI when bootui.enabled=AUTO.
bootui.disabled-profilesprod,productionProfiles that force BootUI off unless bootui.enabled=ON.
bootui.force-webtrueWhile BootUI is active, force a non-web (command-line) application into a servlet web application so the console can be served. No effect on apps that are already servlet web apps or explicitly reactive. Set to false to leave the host's web-application type untouched.
bootui.path/bootuiApplication-relative UI base path used by the shell, assets, filters, and startup banner. Normalized and validated as described below.
bootui.api-path<bootui.path>/apiOptional application-relative API base path used by the UI, controllers, filters, MCP, OTLP, streams, and downloads.
bootui.allow-non-localhostfalseExplicitly relax only the source-address check. Host/DNS-rebinding, cross-site-write, and bearer-authentication protections remain active. Keep this false unless remote access is required and the network is trusted.
bootui.allowed-hosts(empty)Extra Host header values accepted by the loopback filter, in addition to the built-in loopback names (localhost, 127.0.0.1, ::1). Use this for custom local hostnames while keeping DNS-rebinding protection. Entries must be well-formed hostnames or IP literals: a request whose Host header cannot be parsed as an authority is rejected.
bootui.authentication.token(generated)Access token required for every non-loopback /bootui/api/** request. When remote access is configured and this property is blank, BootUI generates a 256-bit token and logs it once at startup. Supply a stable token through an environment-backed property when logs are shared; configured tokens are never printed.
bootui.trusted-proxies(empty)Source IP ranges in CIDR notation (e.g. 172.16.0.0/12 for the Linux Docker bridge, or 192.168.65.0/24 for the Docker Desktop gateway) trusted in addition to loopback. A narrow opt-in for local Docker-bridge callers: it relaxes only the source-address check while keeping the Host allow-list (DNS-rebinding) and cross-site write (CSRF) protections in force. Prefer this over bootui.allow-non-localhost, and pair it with bootui.allowed-hosts for the hostname the browser uses.
bootui.trust-container-gatewayOFFOne-flag opt-in to trust the auto-detected container gateway as a single /32, so BootUI can be reached inside a container with a published port (host→container traffic is SNAT'd to the gateway) without knowing the subnet or setting a broad bootui.trusted-proxies CIDR. Detection works on both flavors: the bridge default gateway from /proc/net/route on Linux Docker Engine (e.g. 172.17.0.1), and the gateway.docker.internal DNS name on Docker Desktop (192.168.65.1, which is not the route-table gateway). OFF (default, fail closed) never trusts it; AUTO auto-detects and trusts the gateway only when running inside a container; ON trusts a detected gateway even if container heuristics are inconclusive. Relaxes only the source-address check — the Host allow-list (DNS-rebinding) and cross-site write (CSRF) protections stay in force. Note: with the common -p 8080:8080 bind, LAN clients reaching the published port are also SNAT'd to the gateway; use -p 127.0.0.1:8080:8080 for strict loopback equivalence.
bootui.mask-secretstrueEnables secret-like value masking helpers.
bootui.expose-valuesMASKEDConfiguration value exposure mode: MASKED, METADATA_ONLY, or FULL. FULL can disclose secrets.
bootui.show-bannertruePrint the BootUI URL on application startup.
bootui.startup.enabledtrueInstall a BufferingApplicationStartup automatically while BootUI is active so the Startup Timeline panel has data.
bootui.startup.capacity4096Maximum startup steps retained by BootUI's auto-installed startup buffer. Values less than or equal to zero disable the buffer.
bootui.free-on-idle.enabledtrueRelease BootUI's live in-memory diagnostic buffers (captured SQL, ingested traces, and the request/security correlation windows) and pause recording into them after the console has been idle for bootui.free-on-idle.timeout, refilling them from live traffic once the console is used again. Dev-only (BootUI is inactive in production); the Exceptions and Log Tail buffers are always retained. Set to false to keep all buffers recording continuously.
bootui.free-on-idle.timeout5mHow long the console may go without any BootUI request (UI load, API poll, or stream open) before its live buffers are released. The timer resets on every BootUI request, so an open console never reclaims. Clamped to a minimum of one second.
bootui.read-onlyfalseDisable every browser-triggered action while keeping read-only panel data visible.
bootui.overrides-file.bootui/application-bootui.propertiesFile used by the Configuration panel to persist local runtime overrides. BootUI resolves the advisor dismissed-findings file (boot-ui.yml) in the same directory. Set it from the environment, not from application.properties.
bootui.monitoring.exclude-selftrueHide BootUI's own beans, mappings, loggers, metrics, traces, and related runtime data from monitoring panels.

Remote API authentication

The configured static SPA remains available after non-loopback access is explicitly enabled, but the configured API surface requires authentication for every caller whose raw TCP peer is not loopback. Paste the startup token into the unlock screen; BootUI exchanges it for an HTTP-only, SameSite=Strict session cookie scoped to the browser-visible API path (including the host application's context/root path), which also authenticates SSE streams and downloads. CLI, MCP, and OTLP clients should send the token using the standard HTTP bearer authorization scheme.

Localhost requests remain frictionless and do not require a token. Authentication is an additional layer: activation, source trust, Host validation, cross-site-write protection, panel access, and read-only checks still apply. Use HTTPS for direct remote access because bearer credentials sent over plain HTTP can be intercepted.

Custom UI and API paths

bootui.path is configurable on Spring MVC, Spring WebFlux, and Quarkus. /bootui remains the exact backward-compatible default. When only the UI path is set, the API path is derived after normalization:

bootui.path=/dev-console/
# Effective API path: /dev-console/api

Use bootui.api-path only when the API must live elsewhere:

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

Both values are relative to the application root. server.servlet.context-path, spring.webflux.base-path, or quarkus.http.root-path is prepended automatically and exactly once. Do not include that framework root in the bootui.* values.

BootUI trims surrounding whitespace and trailing slashes. It rejects blank or root paths, . / .. path segments, duplicate interior slashes, query/fragment content, percent encoding, backslashes, routing metacharacters, and any character outside RFC 3986's unreserved path-segment set. Invalid active configuration fails startup with the property name in the error. The UI path also cannot be nested below /bootui/**, which is reserved for Quarkus' private internal classpath mount; the exact /bootui default is valid, and the API default /bootui/api remains valid.

With a custom UI path, the old packaged /bootui mount is answered with 404 rather than retained as a compatibility alias. The generated SPA shell receives the fully composed UI/API locations at runtime, so assets, API calls, SSE, downloads, MCP configuration, and OTLP setup copy all follow the configured paths.

Panel access settings

Enforced identically on Spring and Quarkus (PanelAccessFilter / QuarkusPanelAccessFilter).

GroupPanelPanel idEnable propertyRead-only property
OverviewOverviewoverviewbootui.panels.overview.enabledNot applicable; view-only.
OverviewLive Activityactivitybootui.panels.activity.enabledbootui.panels.activity.read-only
OverviewGitHubgithubbootui.panels.github.enabledbootui.panels.github.read-only
AdvisorsArchitecturearchitecturebootui.panels.architecture.enabledbootui.panels.architecture.read-only
AdvisorsREST APIrest-apibootui.panels.rest-api.enabledbootui.panels.rest-api.read-only
AdvisorsSpringspringbootui.panels.spring.enabledbootui.panels.spring.read-only
AdvisorsDatabasedatabase-advisorbootui.panels.database-advisor.enabledbootui.panels.database-advisor.read-only
AdvisorsHibernatehibernatebootui.panels.hibernate.enabledbootui.panels.hibernate.read-only
AdvisorsMemorymemorybootui.panels.memory.enabledbootui.panels.memory.read-only
AdvisorsSecuritysecuritybootui.panels.security.enabledbootui.panels.security.read-only
AdvisorsPentestingpentestingbootui.panels.pentesting.enabledbootui.panels.pentesting.read-only
AdvisorsVulnerabilitiesvulnerabilitiesbootui.panels.vulnerabilities.enabledbootui.panels.vulnerabilities.read-only
RuntimeHealthhealthbootui.panels.health.enabledNot applicable; view-only.
RuntimeHTTP Sessionshttp-sessionsbootui.panels.http-sessions.enabledbootui.panels.http-sessions.read-only
RuntimeMetricsmetricsbootui.panels.metrics.enabledNot applicable; view-only.
RuntimeLive Memorylive-memorybootui.panels.live-memory.enabledNot applicable; view-only.
RuntimeJVM Tuningjvm-tuningbootui.panels.jvm-tuning.enabledNot applicable; view-only.
RuntimeHeap Dumpheap-dumpbootui.panels.heap-dump.enabledbootui.panels.heap-dump.read-only
RuntimeThreadsthreadsbootui.panels.threads.enabledbootui.panels.threads.read-only
RuntimeStartup Timelinestartupbootui.panels.startup.enabledNot applicable; view-only.
RuntimeGraalVMgraalvmbootui.panels.graalvm.enabledbootui.panels.graalvm.read-only
RuntimeCRaCcracbootui.panels.crac.enabledbootui.panels.crac.read-only
ConfigurationConfigurationconfigbootui.panels.config.enabledbootui.panels.config.read-only
ConfigurationProfile Diffprofile-diffbootui.panels.profile-diff.enabledNot applicable; view-only.
ConfigurationLoggersloggersbootui.panels.loggers.enabledbootui.panels.loggers.read-only
ConfigurationBeansbeansbootui.panels.beans.enabledNot applicable; view-only.
ConfigurationConditionsconditionsbootui.panels.conditions.enabledNot applicable; view-only.
ConfigurationMappingsmappingsbootui.panels.mappings.enabledNot applicable; view-only.
DatabaseDatabase Connection Poolsdatabase-connection-poolsbootui.panels.database-connection-pools.enabledNot applicable; view-only.
DatabaseTransactionstransactionsbootui.panels.transactions.enabledbootui.panels.transactions.read-only
DatabaseSQL Tracesql-tracebootui.panels.sql-trace.enabledbootui.panels.sql-trace.read-only
DatabaseHibernate Statisticshibernate-statisticsbootui.panels.hibernate-statistics.enabledbootui.panels.hibernate-statistics.read-only
DatabaseSpring Datadatabootui.panels.data.enabledNot applicable; view-only.
DatabaseFlywayflywaybootui.panels.flyway.enabledbootui.panels.flyway.read-only
DatabaseLiquibaseliquibasebootui.panels.liquibase.enabledbootui.panels.liquibase.read-only
SecuritySpring Securityspring-securitybootui.panels.spring-security.enabledNot applicable; view-only.
SecuritySecurity Logssecurity-logsbootui.panels.security-logs.enabledNot applicable; view-only.
ServicesScheduled Tasksscheduledbootui.panels.scheduled.enabledNot applicable; view-only.
ServicesFault Tolerancefault-tolerancebootui.panels.fault-tolerance.enabledNot applicable; view-only.
ServicesREST Clientrest-client-tracebootui.panels.rest-client-trace.enabledbootui.panels.rest-client-trace.read-only
ServicesWebSocketswebsocketsbootui.panels.websockets.enabledbootui.panels.websockets.read-only
ServicesAI Frameworkaibootui.panels.ai.enabledNot applicable; view-only.
ServicesCachecachebootui.panels.cache.enabledbootui.panels.cache.read-only
ServicesEmailemailbootui.panels.email.enabledbootui.panels.email.read-only
ServicesKafkakafkabootui.panels.kafka.enabledbootui.panels.kafka.read-only
ServicesRabbitMQrabbitmqbootui.panels.rabbitmq.enabledbootui.panels.rabbitmq.read-only
ServicesJMSjmsbootui.panels.jms.enabledbootui.panels.jms.read-only
DiagnosticsTracestracesbootui.panels.traces.enabledbootui.panels.traces.read-only
DiagnosticsLog Taillog-tailbootui.panels.log-tail.enabledNot applicable; view-only.
DiagnosticsExceptionsexceptionsbootui.panels.exceptions.enabledbootui.panels.exceptions.read-only
DiagnosticsHTTP Exchangeshttp-exchangesbootui.panels.http-exchanges.enabledNot applicable; view-only.
DiagnosticsHTTP Probehttp-probebootui.panels.http-probe.enabledbootui.panels.http-probe.read-only
Developer toolsMCP Servermcp-serverbootui.panels.mcp-server.enabledbootui.panels.mcp-server.read-only
Developer toolsCommand Lineclibootui.panels.cli.enabledNot applicable; view-only.
Developer toolsSpring DevToolsdevtoolsbootui.panels.devtools.enabledbootui.panels.devtools.read-only
Developer toolsDev Servicesdev-servicesbootui.panels.dev-services.enabledbootui.panels.dev-services.read-only
Developer toolsCopilotcopilotbootui.panels.copilot.enabledNot applicable; view-only.
Developer toolsClaude Codeclaude-codebootui.panels.claude-code.enabledNot applicable; view-only.

Per-panel action details

Startup Timeline

PropertyDefaultDescription
bootui.panels.startup.enabledtrueShow the Startup Timeline panel.
bootui.startup.enabledtrueInstall a BufferingApplicationStartup automatically while BootUI is active.
bootui.startup.capacity4096Maximum startup steps retained by the auto-installed startup buffer.

HTTP Sessions

PropertyDefaultDescription
bootui.panels.http-sessions.enabledtrueShow local embedded Tomcat HTTP sessions when a live session manager exists.
bootui.panels.http-sessions.read-onlyfalseDisable HTTP session clear and destroy actions.
bootui.http-sessions.max-sessions50Maximum HTTP sessions returned in one panel response.

GitHub

PropertyDefaultDescription
bootui.panels.github.enabledtrueShow the GitHub panel when the local working tree has a GitHub origin.
bootui.panels.github.read-onlyfalseDisable live refresh calls to GitHub while keeping local repository metadata.
bootui.github.api-enabledtrueAdditional action gate for outbound GitHub API calls during live refresh.
bootui.github.request-timeout5sTimeout for each GitHub API request and local gh auth token lookup.
bootui.github.max-pull-requests10Maximum open pull requests returned in one refresh.
bootui.github.max-issues25Maximum open issues fetched for the issue buckets and open issue list in one refresh.
bootui.github.max-security-alerts50Maximum Dependabot alert details listed per refresh (count stays exact; metadata only).
bootui.github.max-workflow-runs20Maximum recent workflow runs returned in one refresh.
bootui.github.quota-safety-threshold10Skip optional API calls when remaining core quota is at or below this value.
bootui.github.max-api-calls17Maximum GitHub API requests issued by one refresh.
bootui.github.allowed-api-hostsapi.github.comAllowed GitHub API hosts. Add a GitHub Enterprise host to enable enterprise remotes.

Configuration

PropertyDefaultDescription
bootui.panels.config.enabledtrueShow the Configuration panel and allow its read APIs.
bootui.panels.config.read-onlyfalseDisable creating, updating, and deleting runtime property overrides.
bootui.overrides-file.bootui/application-bootui.propertiesLocal file where runtime overrides are persisted. Also locates boot-ui.yml (advisor dismissed findings), which BootUI resolves in the same directory.
bootui.expose-valuesMASKEDControls whether property values are masked, hidden, or fully exposed.

Loggers

PropertyDefaultDescription
bootui.panels.loggers.enabledtrueShow logger data from the Actuator loggers endpoint.
bootui.panels.loggers.read-onlyfalseDisable runtime logger level updates and resets.

REST API

PropertyDefaultDescription
bootui.panels.rest-api.enabledtrueShow read-only REST API design best-practice checks.
bootui.panels.rest-api.read-onlyfalseDisable the explicit REST API Advisor scan action.

Spring

PropertyDefaultDescription
bootui.panels.spring.enabledtrueShow read-only Spring application-context best-practice checks.
bootui.panels.spring.read-onlyfalseDisable the explicit Spring Advisor scan action.

Spring Security

PropertyDefaultDescription
bootui.panels.spring-security.enabledtrueShow Spring Security filter chains and best-effort endpoint rule explanations.

Security Logs

PropertyDefaultDescription
bootui.panels.security-logs.enabledtrueShow Spring Boot audit/security events and auto-contribute an in-memory AuditEventRepository when the host has none.
bootui.security-logs.max-logs500Maximum recent audit events returned in one Security Logs response.

Security

PropertyDefaultDescription
bootui.panels.security.enabledtrueShow read-only Spring Security hardening checks.
bootui.panels.security.read-onlyfalseDisable the explicit Spring Security Advisor scan action.

Pentesting

PropertyDefaultDescription
bootui.panels.pentesting.enabledtrueShow the host-application OWASP hygiene panel and its latest report.
bootui.panels.pentesting.read-onlyfalseDisable the explicit local scan action.

Cache

PropertyDefaultDescription
bootui.panels.cache.enabledtrueShow cache managers, caches, metrics, and cache annotations.
bootui.panels.cache.read-onlyfalseDisable cache clear actions.
bootui.cache.clear-enabledtrueAdditional action gate for cache clearing. Both this and the read-only state must allow clearing.
bootui.cache.activity-capture-enabledtrueSpring only. Feed cache hits/misses/puts/evictions/clears into the Live Activity stream and its cache hit ratio KPI.
bootui.cache.activity-max-events500Spring only. Bounded ring-buffer size for captured cache-activity events.

Hibernate

PropertyDefaultDescription
bootui.panels.hibernate.enabledtrueShow Hibernate/JPA mapping and configuration advisor findings.
bootui.panels.hibernate.read-onlyfalseDisable the explicit Hibernate Advisor scan action while keeping results visible.

Hibernate Statistics

PropertyDefaultDescription
bootui.panels.hibernate-statistics.enabledtrueShow live Hibernate SessionFactory statistics when Hibernate ORM is available.
bootui.panels.hibernate-statistics.read-onlyfalseDisable Enable for this runtime while keeping already-enabled statistics visible and readable.

Enable for this runtime starts statistics collection for the current application process only. It does not rewrite application configuration or reset existing counters, and it does not require confirmation. The action is blocked when either bootui.read-only=true or bootui.panels.hibernate-statistics.read-only=true. To enable collection persistently from startup, set hibernate.generate_statistics=true on Spring or quarkus.hibernate-orm.statistics=true on Quarkus, as recommended by HIB-CONFIG-007.

Database

PropertyDefaultDescription
bootui.panels.database-advisor.enabledtrueShow read-only JDBC schema checks and the latest Database Advisor report.
bootui.panels.database-advisor.read-onlyfalseDisable the explicit Database Advisor scan action while keeping the latest report visible.

Run Database checks performs bounded, read-only JDBC schema introspection. It does not require confirmation and is blocked when either bootui.read-only=true or bootui.panels.database-advisor.read-only=true.

Memory

PropertyDefaultDescription
bootui.panels.memory.enabledtrueShow read-only JVM memory configuration best-practice checks.
bootui.panels.memory.read-onlyfalseDisable the explicit Memory Advisor scan action.

Flyway

PropertyDefaultDescription
bootui.panels.flyway.enabledtrueShow Flyway migration state and allow its read APIs.
bootui.panels.flyway.read-onlyfalseDisable Flyway migrate and clean actions while keeping migration state visible.

Liquibase

PropertyDefaultDescription
bootui.panels.liquibase.enabledtrueShow Liquibase change-set history and allow its read APIs.
bootui.panels.liquibase.read-onlyfalseDisable Liquibase update actions while keeping change-set history visible.

SQL Trace

PropertyDefaultDescription
bootui.panels.sql-trace.enabledtrueShow the SQL Trace panel and its captured executions.
bootui.panels.sql-trace.read-onlyfalseDisable the Pause/Resume and Clear actions while keeping captured executions visible.
bootui.sql-trace.enabledtrueWrap DataSource beans with BootUI's hand-written JDBC tracing proxy. When false, no data source is wrapped.
bootui.sql-trace.recordingtrueInitial recording state. Recording can be paused and resumed at runtime from the panel without unwrapping data sources.
bootui.sql-trace.capture-parametersfalseCapture bound statement parameters alongside the SQL text. Off by default because values may be sensitive; metadata-only exposure suppresses them even when enabled. Prepared batches preview at most five parameter sets and five values per set, with omitted counts shown explicitly.
bootui.sql-trace.capture-call-sitetrueCapture the call site (class, method, line) in your own application code that triggered each statement, via a small, bounded stack walk. A call site carries no bound values, so — unlike parameter capture — it is not privacy-gated and defaults on; set false to skip the stack walk entirely.
bootui.sql-trace.max-entries200Maximum number of executed statements retained in the in-memory ring buffer.
bootui.sql-trace.slow-query-threshold-millis100Executions at or above this many milliseconds are flagged as slow. Set to 0 to disable slow-query flagging.
bootui.sql-trace.max-sql-length2000Maximum retained SQL text length; longer statements are truncated. Plain Statement batches preview at most five statements and 256 characters per statement before this report-level limit is applied.
bootui.sql-trace.max-parameter-length200Maximum retained length of a single captured parameter value.
bootui.sql-trace.n-plus-one-threshold5Number of times an identical SELECT must repeat within the buffer before it is flagged as a likely N+1 access pattern (minimum 2).

Transactions

PropertyDefaultDescription
bootui.panels.transactions.enabledtrueShow the Transactions panel and register transaction capture.
bootui.panels.transactions.read-onlyfalseDisable Pause/Resume and Clear while keeping captured transactions visible.
bootui.transactions.enabledtrueContribute BootUI's listener to configurable blocking Spring transaction managers.
bootui.transactions.recordingtrueInitial recording state; the panel can pause or resume it at runtime.
bootui.transactions.max-entries200Maximum completed transaction boundaries retained in the bounded in-memory buffer.
bootui.transactions.slow-transaction-threshold-millis200Transactions at or above this duration are flagged as slow; 0 disables the flag.
bootui.transactions.connection-hold-threshold-millis500Transactions at or above this duration are flagged as holding a connection; 0 disables the flag.

REST Client

PropertyDefaultDescription
bootui.panels.rest-client-trace.enabledtrueShow the REST Client panel and its captured outbound HTTP calls.
bootui.panels.rest-client-trace.read-onlyfalseDisable the Pause/Resume and Clear actions while keeping captured calls visible.
bootui.rest-client-trace.enabledtrueCapture outbound calls from Spring's RestClient/RestTemplate/WebClient or Quarkus REST Client Reactive. When false, the recorder remains unavailable and retains no calls.
bootui.rest-client-trace.recordingtrueInitial recording state. Recording can be paused and resumed at runtime from the panel without removing the client instrumentation.
bootui.rest-client-trace.capture-headersfalseSpring only: capture bounded request headers and mask them at report time. Quarkus ignores this property and never reads or retains arbitrary headers, credentials, cookies, or tokens.
bootui.rest-client-trace.capture-call-sitetrueCapture the first application stack frame that triggered each outbound call, when available. Attribution is best-effort on Quarkus because reactive callbacks may run after the issuing stack has unwound.
bootui.rest-client-trace.max-entries200Maximum number of outbound calls retained in the in-memory ring buffer.
bootui.rest-client-trace.slow-call-threshold-millis1000Calls at or above this many milliseconds are flagged as slow. Set to 0 to disable slow-call flagging.
bootui.rest-client-trace.max-uri-length2000Maximum retained length of the request URI and path; longer values are truncated.
bootui.rest-client-trace.max-header-value-length200Spring only: maximum retained length of a captured header value. Quarkus captures no headers.
bootui.rest-client-trace.chatty-call-threshold5Number of calls to the same method/host/path (with numeric and UUID path segments normalized) within the buffer before the group is flagged as a likely repeated-call access pattern (minimum 2).

WebSockets

PropertyDefaultDescription
bootui.panels.websockets.enabledtrueShow the WebSockets panel with its endpoints, live sessions, subscriptions, and captured frame metadata.
bootui.panels.websockets.read-onlyfalseDisable the Pause/Resume and Clear actions while keeping the endpoint topology and captured metadata visible.
bootui.websockets.enabledtrueInstall the frame-capture seam where the stack supports one (Spring MVC + STOMP). When false, the panel still reports endpoints, sessions, and subscriptions but captures no frame metadata.
bootui.websockets.capturingtrueInitial frame-capture state. Capture can be paused and resumed at runtime from the panel without removing the instrumentation.
bootui.websockets.max-endpoints200Maximum number of declared endpoints reported; the panel says when the list was truncated.
bootui.websockets.max-sessions200Maximum number of sessions reported; the panel says when the list was truncated.
bootui.websockets.max-subscriptions500Maximum number of STOMP subscriptions reported; the panel says when the list was truncated.
bootui.websockets.max-activity-entries500Maximum frame-metadata entries retained in the bounded in-memory ring buffer.
bootui.websockets.max-tracked-sessions2000Maximum number of sessions for which per-session frame and byte counters are retained.

BootUI never reads, decodes, or stores a WebSocket message payload on any stack; only frame size, direction, type, and destination are recorded, and provider session ids are replaced by a short one-way hash before they leave the process.

AI Framework

PropertyDefaultDescription
bootui.panels.ai.enabledtrueShow the AI Framework panel.
bootui.ai.token-series-minutes60Number of minutes retained in the AI Framework token series.
bootui.ai.max-recent-chats100Maximum recent chat completions surfaced by the AI Framework panel.
bootui.ai.show-content-capture-bannertrueShow the AI content-capture explanation banner.

Live Activity

The Live Activity panel reuses the HTTP Exchanges, SQL Trace, REST Client, Exceptions, Security Logs, Cache, Scheduled Tasks, and Email sources, so disabling any of those panels through their own bootui.panels.* toggles also removes them from the stream. Kafka, RabbitMQ, and JMS capture additionally have their own bootui.kafka.*, bootui.rabbitmq.*, and bootui.jms.* toggles—see below—and each stops feeding Live Activity when its dedicated panel is disabled. The panel itself is read-only. A request whose correlated SQL trips bootui.activity.n-plus-one-threshold is flagged with a red N+1 badge both in the main stream row and in its profile drawer (the same threshold, so the two views never disagree); the drawer additionally lists the flagged group's call site(s) whenever bootui.sql-trace.capture-call-site is enabled.

PropertyDefaultDescription
bootui.panels.activity.enabledtrueShow the Live Activity panel (merged stream and per-request profiler).
bootui.activity.max-entries200Maximum number of merged stream entries returned per page after merging and sorting all sources.
bootui.activity.request-slow-threshold-ms1000Duration in milliseconds above which a request is flagged as slow in the stream and KPI strip.
bootui.activity.n-plus-one-threshold5Number of identical correlated SELECT statements above which a request is flagged with a potential N+1 pattern, both as a list-level badge and in its profile drawer.
bootui.activity.max-scheduled-task-runs200Maximum number of captured @Scheduled method executions retained for SCHEDULED stream entries. Shared by both adapters: Spring feeds it from Micrometer's ScheduledTaskObservationContext, Quarkus from the CDI SuccessfulExecution/FailedExecution events (see docs/PLAN.md §3.4).

Live Activity Kafka capture

When Kafka support is present, BootUI captures producer/consumer outcomes into the Live Activity stream as MESSAGING entries. Spring does this by wrapping application-owned KafkaTemplate and @KafkaListener container factory beans; Quarkus does it through SmallRye Reactive Messaging Kafka interceptors. Only metadata is captured — topic, partition, offset, a hash of the key, timing, success/failure, consumer group id when exposed, and listener id — the message value/payload is never captured, and failure text is generic so exception messages cannot leak payload or credentials. On Spring, the consumer group is available and the listener-id field currently carries the listener container factory bean name (not the resolved per-@KafkaListener id); on Quarkus the group is unavailable and the channel name is used as the listener id. Quarkus outgoing capture requires OutgoingKafkaRecordMetadata to be attached before the interceptor; payload-only emissions that rely solely on channel configuration are not recorded. See SPECIFICATION.md §5.14.2.

PropertyDefaultDescription
bootui.kafka.enabledtrueCapture Kafka producer/consumer activity when the framework's Kafka integration is present.
bootui.kafka.capture-keytrueCapture a SHA-256 hash of the record key alongside each entry (the raw key is never stored). Disable if even a hash of the key is unwanted.
bootui.kafka.max-entries200Maximum number of captured Kafka messages retained in the in-memory ring buffer.
bootui.kafka.max-key-length16Maximum retained hex characters from the key hash (minimum 8, maximum 64).

Live Activity JMS capture

On Spring MVC and WebFlux, spring-jms activates metadata-only capture for application-owned JmsTemplate and @JmsListener container factories. JMS has its own bounded recorder and settings, independent from Kafka and RabbitMQ, so one transport's traffic cannot evict another transport's history. Destination names are control-character-stripped, length-bounded, and credential-like URI/user-info or password/secret/token/API-key assignments are masked before storage. Unknown provider-specific Destination implementations are not rendered because their toString() output can expose broker metadata. Raw message IDs, payloads, arbitrary headers/properties, and exception messages are never stored; when a MessageCreator or MessagePostProcessor exposes the provider-assigned message ID, only its SHA-256 hash is retained. Quarkus does not claim a JMS capture integration.

PropertyDefaultDescription
bootui.jms.enabledtrueCapture Spring-managed JMS publish/consume activity for the JMS panel and Live Activity when spring-jms and the JMS API are present.
bootui.jms.capture-message-idtrueRetain a truncated SHA-256 hash of the provider-assigned message ID; the raw ID is never stored.
bootui.jms.max-entries200Maximum captured JMS messages retained in the independent bounded in-memory buffer.
bootui.jms.max-message-id-length16Maximum retained hex characters from the message-ID hash (minimum 8, maximum 64).

Live Activity RabbitMQ capture

When RabbitMQ support is present, BootUI captures publish/consume activity as MESSAGING entries. Spring composes with application-owned RabbitTemplate before-publish processors and listener-factory advice; Quarkus uses SmallRye Reactive Messaging RabbitMQ interceptors. Message bodies and arbitrary headers are never captured. Routing metadata is bounded, correlation IDs are omitted by default and stored only as a SHA-256 hash when explicitly enabled, and failure details are generic so exception messages cannot leak payload or credential data. On Quarkus, producer exchange, consumer queue, and producer duration are unavailable because SmallRye's callbacks do not expose them; outgoing capture also requires OutgoingRabbitMQMetadata to be attached before the interceptor.

PropertyDefaultDescription
bootui.rabbitmq.enabledtrueCapture RabbitMQ publish/consume activity when the framework integration is present.
bootui.rabbitmq.capture-correlation-idfalseCapture a SHA-256 hash of the AMQP correlation ID; the raw value is never retained.
bootui.rabbitmq.max-entries200Maximum captured messages retained in the bounded in-memory buffer.
bootui.rabbitmq.max-correlation-id-length16Maximum retained hex characters from the correlation-ID hash (minimum 8, maximum 64).

Live Activity durable persistence

Off by default: the merged stream stays in-memory-only, exactly as above. Setting bootui.activity.persistence.enabled=true additionally buffers captured entries and flushes them to a SQL database over direct JDBC, so history survives a restart and the dashboard can page back further than fits in memory. Available on both adapters with an identical config surface and wire contract; on Quarkus a QuarkusActivityCapture CDI bean (@Observes StartupEvent/ShutdownEvent) owns the capture-poller lifecycle instead of Spring's controller-inline wiring. See SPECIFICATION.md §5.14.2 for the full design (the ActivityStore abstraction, buffering/flush, merge-for-reads, re-queue-on-failure, the flush guard, and multi-tenancy).

PropertyDefaultDescription
bootui.activity.persistence.enabledfalseEnable durable persistence for captured Live Activity entries, in addition to the in-memory default.
bootui.activity.persistence.data-source-modeSHAREDSHARED reuses the host application's own DataSource bean; DEDICATED opens a small, non-pooled connection of BootUI's own using the dedicated-* properties below.
bootui.activity.persistence.dedicated-jdbc-url(none)JDBC URL used when data-source-mode=DEDICATED; ignored otherwise.
bootui.activity.persistence.dedicated-username(none)Username used when data-source-mode=DEDICATED; ignored otherwise.
bootui.activity.persistence.dedicated-password(none)Password used when data-source-mode=DEDICATED; ignored otherwise.
bootui.activity.persistence.dedicated-driver-class-name(none)Optional explicit JDBC driver class for data-source-mode=DEDICATED; blank lets a modern JDBC 4+ driver auto-register itself.
bootui.activity.persistence.table-namebootui_activityTable name every BootUI instance pointed at the same database shares. Created automatically on first use if absent.
bootui.activity.persistence.flush-interval5sHow often buffered entries are flushed to durable storage.
bootui.activity.persistence.buffer-max-entries500Capacity of both the in-memory hot read cache (entries visible before their scheduled flush) and the pending-flush queue.
bootui.activity.persistence.retention7dHow long persisted rows are kept before this instance prunes its own rows older than this on a periodic pass.
bootui.activity.persistence.instance-id(auto)Multi-tenant partition key this instance writes/reads its rows under. Defaults to the HOSTNAME environment variable, or else a generated <app-name>-<random> id.
bootui.activity.persistence.capture-interval2sHow often the capture coordinator polls the merged Live Activity feed for new entries to buffer.

Traces

PropertyDefaultDescription
bootui.panels.traces.read-onlyfalseDisable clearing retained traces. OTLP ingestion remains controlled by bootui.telemetry.enabled.
bootui.telemetry.enabledtrueEnables local in-memory trace capture and accepts OTLP/HTTP trace payloads at BootUI's OTLP endpoint.
bootui.telemetry.max-traces500Maximum distinct traces retained in memory.
bootui.telemetry.max-spans-per-trace500Maximum spans retained per trace.
bootui.telemetry.max-attribute-value-bytes4096Maximum attribute string length before truncation.
bootui.telemetry.exclude-self-spanstrueDrop ingested spans whose route/path targets BootUI before they enter the local trace store.
bootui.telemetry.enrichtrueStamp BootUI bootui.* span attributes (service identity, SQL query count / suspected N+1, exceptions) on the active span at BootUI's capture points. Effective only while bootui.telemetry.enabled is on.
bootui.telemetry.max-request-bytes8388608Maximum accepted OTLP request body size.

HTTP Exchanges

PropertyDefaultDescription
bootui.panels.http-exchanges.enabledtrueShow recent inbound HTTP exchanges and create a bounded in-memory recorder when none exists.
bootui.http-exchanges.max-exchanges200Maximum recent HTTP exchanges retained in memory. Requires restart because it sizes the buffer.
management.httpexchanges.recording.enabledtrueSpring Boot recorder switch. Set to false to disable capture while leaving the panel visible.

HTTP Probe

PropertyDefaultDescription
bootui.panels.http-probe.enabledtrueShow the HTTP Probe panel.
bootui.panels.http-probe.read-onlyfalseDisable sending probe requests through BootUI.

Email

PropertyDefaultDescription
bootui.panels.email.enabledtrueShow the Email Viewer panel when a supported mail sender is present (JavaMailSender on Spring or quarkus-mailer on Quarkus).
bootui.panels.email.read-onlyfalseDisable the clear action while keeping captured messages visible.
bootui.email.max-entries100Maximum number of captured messages retained; the oldest is evicted once full.
bootui.email.max-body-length200000Maximum number of characters retained per captured text/HTML body; a longer body is truncated at capture time so one oversized message cannot spike memory before max-entries would evict it.
bootui.email.dev-trapfalseOn Spring, when true, captured messages are recorded but never actually handed to the real mail transport. On Quarkus, sent/not-sent instead reflects quarkus.mailer.mock because capture happens after send.
bootui.email.mask-contentfalseWhen true, mask recipients/subject/body (like Configuration's secret masking) unless bootui.expose-values=FULL. Email content is not a config secret, so BootUI reveals it by default; enable this for teams that route real customer PII through a shared dev environment.

Kafka

The Kafka panel is a dedicated, filterable view over the same producer/consumer capture that feeds Live Activity's MESSAGING entries — see "Live Activity Kafka capture" above for the shared bootui.kafka.* capture properties (enabled, capture-key, max-entries, max-key-length), which tune both surfaces identically.

PropertyDefaultDescription
bootui.panels.kafka.enabledtrueShow the Kafka panel when a Kafka integration is present (KafkaTemplate on Spring, or quarkus-messaging-kafka in a non-production Quarkus launch). Configured channels determine whether activity is captured, not panel availability.
bootui.panels.kafka.read-onlyfalseDisable the clear action while keeping captured messages visible.

RabbitMQ

The RabbitMQ panel is a dedicated view over the same bounded capture that feeds Live Activity. On Spring it is available when a RabbitTemplate bean exists; on Quarkus it is available when quarkus-messaging-rabbitmq is present in dev/test mode. The bootui.rabbitmq.* properties above tune both surfaces.

PropertyDefaultDescription
bootui.panels.rabbitmq.enabledtrueShow the RabbitMQ panel when the adapter detects RabbitMQ support.
bootui.panels.rabbitmq.read-onlyfalseDisable the clear action while keeping captured messages visible.

Fault Tolerance

The Fault Tolerance panel reads protective policies live from Resilience4j registries, Spring Retry @Retryable metadata, and SmallRye Fault Tolerance annotations captured at build time on Quarkus. It is strictly capture-only: BootUI never opens, closes, resets, or otherwise mutates a circuit breaker, retry, rate limiter, bulkhead or time limiter. Captured events are metadata only — policy name, outcome, attempt number, duration, exception simple name, and circuit breaker state — never method arguments, return values or exception messages.

PropertyDefaultDescription
bootui.panels.fault-tolerance.enabledtrueShow the Fault Tolerance panel when a supported fault tolerance library is present.
bootui.fault-tolerance.enabledtrueCapture bounded fault tolerance events (retries, rejections, timeouts, short circuits, and circuit breaker state transitions) for the panel and Live Activity. Setting it to false keeps the live policy inventory but stops recording events.
bootui.fault-tolerance.max-events200Maximum captured fault tolerance events retained in the bounded in-memory buffer (hard-capped at 2000).

JMS

The JMS panel is a dedicated view over the same bounded Spring JMS capture that feeds Live Activity. The bootui.jms.* properties above tune both surfaces. Quarkus reports this panel not yet available.

PropertyDefaultDescription
bootui.panels.jms.enabledtrueShow the JMS panel when a JmsTemplate bean is available.
bootui.panels.jms.read-onlyfalseDisable the clear action while keeping captured messages visible.

Exceptions

PropertyDefaultDescription
bootui.panels.exceptions.enabledtrueShow the Exceptions panel and its captured exception groups.
bootui.panels.exceptions.read-onlyfalseDisable the clear action while keeping captured exceptions visible.
bootui.exceptions.max-groups100Maximum number of distinct exception groups retained. The group with the oldest most-recent occurrence is evicted first.
bootui.exceptions.max-occurrences-per-group25Maximum number of recent occurrences retained per exception group.
bootui.exceptions.max-stack-frames50Maximum number of stack-trace frames retained per exception (and per cause).

Log Tail

PropertyDefaultDescription
bootui.panels.log-tail.enabledtrueShow the Log Tail panel and its live log stream.
bootui.log-tail.max-bytes0Approximate retained-byte budget for the in-memory log-tail ring buffer, bounding it alongside its fixed 500-line cap (oldest evicted first). 0 (the default) means unbounded.

Vulnerabilities

PropertyDefaultDescription
bootui.panels.vulnerabilities.enabledtrueShow dependency inventory and local scan results.
bootui.panels.vulnerabilities.read-onlyfalseDisable on-demand OSV scan requests.
bootui.vulnerabilities.osv-enabledtrueAdditional action gate for OSV.dev scans.
bootui.vulnerabilities.request-timeout10sTimeout for each OSV request.
bootui.vulnerabilities.max-packages500Maximum packages included in one OSV batch query; the excess is reported as scan.packagesSkipped.
bootui.vulnerabilities.max-advisories200Maximum advisory details fetched after a package query.
bootui.vulnerabilities.osv-base-urihttps://api.osv.devBase URI of the OSV.dev API queried during a scan. Mainly useful for pointing scans at a local stub in tests.
bootui.vulnerabilities.epss-enabledtrueEnrich CVE-aliased advisories with FIRST.org EPSS probability and percentile data during the user-initiated scan. EPSS failure never discards OSV results.
bootui.vulnerabilities.epss-base-urihttps://api.first.orgBase URI of the FIRST.org EPSS API queried during a scan. Mainly useful for pointing scans at a local stub in tests.

Heap Dump

PropertyDefaultDescription
bootui.panels.heap-dump.enabledtrueShow the Heap Dump panel when running on a HotSpot JVM.
bootui.panels.heap-dump.read-onlyfalseDisable on-demand capture, analyze, and delete actions.
bootui.heap-dump.capture-enabledtrueAdditional action gate for capturing new heap dumps.
bootui.heap-dump.allow-raw-downloadfalseAllow downloading the raw .hprof file. Disabled by default because dumps contain plaintext secrets.
bootui.heap-dump.output-dir.bootui/heap-dumpsDirectory where captured heap dumps are written.
bootui.heap-dump.max-dumps5Maximum number of heap dump files retained on disk. Oldest dumps are deleted first.
bootui.heap-dump.max-classes1000Maximum number of classes retained in memory after a histogram analysis, ordered by retained bytes. Capping this prevents very large heaps from exhausting memory. Must be ≥ top-classes.
bootui.heap-dump.top-classes25Number of top classes shown in the value-free class histogram.

Threads

PropertyDefaultDescription
bootui.panels.threads.enabledtrueShow the Threads panel when a ThreadMXBean is available.
bootui.panels.threads.read-onlyfalseDisable the confirmation-gated raw thread-dump download action.

Architecture

PropertyDefaultDescription
bootui.panels.architecture.enabledtrueShow the ArchUnit architecture hygiene panel and its latest report.
bootui.panels.architecture.read-onlyfalseDisable the on-demand architecture scan action.

GraalVM

PropertyDefaultDescription
bootui.panels.graalvm.enabledtrueShow the GraalVM native-image readiness panel and its latest report.
bootui.panels.graalvm.read-onlyfalseDisable the on-demand readiness scan action (the metadata download stays available).
bootui.graalvm.repository-lookup-enabledtrueAllow the dependency survey to query Oracle's GraalVM reachability-metadata repository. This is the panel's only outbound network call and runs only during a user-initiated scan.
bootui.graalvm.repository-lookup-timeout2sTimeout applied to each reachability-metadata repository request.
bootui.graalvm.max-repository-lookups500Maximum number of distinct dependency coordinates looked up against the reachability-metadata repository in a single scan.

CRaC

PropertyDefaultDescription
bootui.panels.crac.enabledtrueShow the CRaC (Coordinated Restore at Checkpoint) readiness panel and its latest report.
bootui.panels.crac.read-onlyfalseDisable the on-demand readiness scan and the Dockerfile/entrypoint install actions (downloads stay available).

Spring DevTools

PropertyDefaultDescription
bootui.panels.devtools.enabledtrueShow Spring Boot DevTools status when DevTools is on the classpath.
bootui.panels.devtools.read-onlyfalseDisable LiveReload trigger and application restart actions.

Dev Services

PropertyDefaultDescription
bootui.panels.dev-services.enabledtrueShow Docker Compose snapshots, Testcontainers beans, and service connection metadata.
bootui.panels.dev-services.read-onlyfalseDisable service restart actions. Bounded log reads remain available.
bootui.dev-services.restart-enabledfalseAdditional action gate for restarting bean-backed Testcontainers services. Disabled by default.
bootui.dev-services.log-tail-bytes65536Maximum bytes returned by a single Dev Services log request.

Copilot

PropertyDefaultDescription
bootui.panels.copilot.enabledtrueShow the Copilot panel in the sidebar.
bootui.copilot.enabledAUTOActivate the Copilot integration. AUTO enables it only when the session-state directory exists; ON/OFF force it.
bootui.copilot.session-state-dir~/.copilot/session-stateDirectory scanned for Copilot CLI sessions.
bootui.copilot.max-events-per-session2000Maximum Copilot events retained per parsed session.
bootui.copilot.max-sessions100Maximum recent Copilot sessions returned by the explorer.
bootui.copilot.max-parsed-sessions100Maximum recent Copilot session files parsed and retained in memory.
bootui.copilot.stream-debounce400msDebounce window before refreshing parsed Copilot sessions and notifying stream subscribers.
bootui.copilot.allow-raw-revealtrueAllow explicit raw event reveal when value exposure is not METADATA_ONLY.

Claude Code

PropertyDefaultDescription
bootui.panels.claude-code.enabledtrueShow the Claude Code panel in the sidebar.
bootui.claude-code.enabledAUTOActivate the Claude Code integration. AUTO enables it only when the project log directory exists; ON/OFF force it.
bootui.claude-code.session-state-dir~/.claude/projectsDirectory scanned for Claude Code project JSONL logs.
bootui.claude-code.max-events-per-session2000Maximum Claude Code events retained per parsed session.
bootui.claude-code.max-sessions100Maximum recent Claude Code sessions returned by the explorer.
bootui.claude-code.max-parsed-sessions100Maximum recent Claude Code JSONL files parsed and retained in memory.
bootui.claude-code.stream-debounce400msDebounce window before refreshing parsed Claude Code sessions and notifying stream subscribers.
bootui.claude-code.allow-raw-revealfalseAllow explicit raw Claude Code JSONL reveal; disabled by default because logs can include prompts and outputs.

MCP server

The MCP server exposes BootUI's advisors and read-only diagnostics to local AI agents (GitHub Copilot, Claude Code) over a loopback-only Model Context Protocol endpoint at POST <bootui.api-path>/mcp (default POST /bootui/api/mcp). It is off by default and only ever active while BootUI itself is active, so it is never reachable in production. Tools inherit the same safety model as the panels: read tools require the backing panel to be enabled, action (*_scan) tools are additionally refused when the panel is read-only, and all values flow through the same secret masking as the REST API.

PropertyDefaultDescription
bootui.mcp.enabledOFFEnable the local MCP server. OFF (default) and AUTO keep it disabled so it is never silently exposed; ON exposes the endpoint.
bootui.mcp.max-results200Maximum number of items returned by paginated read tools (config, beans, mappings, security logs, traces, HTTP exchanges) per call.
bootui.mcp.max-payload-bytes1048576Maximum size (in bytes) of an incoming JSON-RPC request body; larger requests are rejected before parsing.
bootui.mcp.max-concurrent-calls20Maximum number of tools/call invocations the server executes concurrently; excess calls are refused with a rate-limited error.
bootui.mcp.execution-timeout30sMaximum wall-clock duration of one tool invocation; timed-out calls are interrupted and return JSON-RPC -32002.
bootui.mcp.max-response-bytes4194304Maximum size of a rendered JSON-RPC response; oversized results are replaced by JSON-RPC -32003.

Command-line endpoint

The command-line endpoint projects the same tool registry the MCP server exposes onto plain REST, so a terminal or a CI job can ask a running application one diagnostic question without an MCP client. GET <bootui.api-path>/cli (default GET /bootui/api/cli) describes the tools this instance advertises, and POST <bootui.api-path>/cli/tools/{name} invokes one, returning its payload directly with the outcome in the HTTP status (403 panel disabled or read-only, 404 unknown tool, 400 bad argument, 409 action already running, 429 at capacity, 504 timeout).

It is on by default, because it is a different spelling of data the panel endpoints already serve rather than a new capability: every tool remains gated by its panel's enable/read-only settings, and the endpoint sits under bootui.api-path, so the loopback, Host allow-list, cross-site-write, and bootui.authentication.token protections apply unchanged. It does not require bootui.mcp.enabled, and its calls are counted separately so the MCP Server panel keeps reporting only what agents did.

PropertyDefaultDescription
bootui.cli.enabledtrueWhether the command-line endpoint answers. When false, the catalog still reports itself as disabled and tool invocation returns 503.
bootui.cli.max-results200Maximum number of items returned by paginated read tools per call, tracked separately from bootui.mcp.max-results.
bootui.cli.max-concurrent-calls20Maximum number of concurrent tool invocations; excess calls are refused with 429.
bootui.cli.execution-timeout30sMaximum wall-clock duration of one tool invocation; timed-out calls are interrupted and return 504.

Make the whole application read-only:

bootui.read-only=true

Hide one panel entirely:

bootui.panels.devtools.enabled=false

Keep one panel visible but disable its actions:

bootui.panels.config.read-only=true

Require both an action gate and panel read-only state to allow an action:

bootui.panels.dev-services.read-only=false
bootui.dev-services.restart-enabled=true
Next
Framework support