docs: document conductor.enable.ui.serving for headless deployments#1086
Open
bishnubista wants to merge 3 commits into
Open
docs: document conductor.enable.ui.serving for headless deployments#1086bishnubista wants to merge 3 commits into
bishnubista wants to merge 3 commits into
Conversation
Closes conductor-oss#1074 Adds reference documentation for conductor.enable.ui.serving, the property that disables Conductor's bundled UI serving so the server can run alongside a separately hosted UI (CDN, Nginx, or another container). Until now operators had to discover the flag by reading SpaInterceptor.java. The property toggles two Spring MVC registrations as a pair, both gated on the optional SpaInterceptor bean in RestConfiguration: - the HandlerInterceptor that forwards unmatched paths to index.html for the SPA's client-side router - the resource handler that serves the UI bundle at /static/ui/** Files changed: - docs/documentation/configuration/appconf.md New "UI Serving" section with the property reference, the authoritative path-exclude list from RestConfiguration.addInterceptors(), and an example usage block. - docs/devguide/running/deploy.md New "Headless (API-only) deployment" subsection under Production configuration, including a note that a small placeholder index.html shipped in the JAR is still served at / by Spring Boot's default static-resource handling. - docker/server/config/config.properties Commented example of conductor.enable.ui.serving=false near the top of the default Docker config. Verified against: rest/src/main/java/org/conductoross/conductor/SpaInterceptor.java rest/src/main/java/org/conductoross/conductor/RestConfiguration.java server-lite/src/main/resources/application.properties rest/src/main/resources/static/index.html Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
v1r3n
approved these changes
May 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #1074. Documents
conductor.enable.ui.serving, the property that controls Conductor's bundled UI serving. Until now, operators wanting to run a headless (API-only) Conductor server had to discover the flag by readingSpaInterceptor.java.The property toggles two Spring MVC registrations as a pair, both gated on the optional
SpaInterceptorbean inRestConfiguration:HandlerInterceptorthat forwards unmatched paths toindex.htmlso the SPA's client-side router can handle them./static/ui/**.What changed
docs/documentation/configuration/appconf.md— new "UI Serving" section with the property reference table, the authoritative path-exclude list, and an example usage block. Cross-linked to the deploy guide.docs/devguide/running/deploy.md— new "Headless (API-only) deployment" subsection under Production configuration, including a note that a small placeholderindex.htmlshipped inside the server JAR is still served at/by Spring Boot's default static-resource handling (so the behavior is not a strict 404 at the root).docker/server/config/config.properties— commented example ofconductor.enable.ui.serving=falsenear the top of the default Docker config.How I verified
Every behavioral claim was checked against source:
rest/src/main/java/org/conductoross/conductor/SpaInterceptor.javalines 25-28 (matchIfMissing = true).rest/src/main/java/org/conductoross/conductor/RestConfiguration.javaSpaInterceptorregistration viaaddInterceptors()is skipped when the bean is absent./static/ui/**resource handler inaddResourceHandlers()is also skipped.RestConfiguration.java:54-64(excludePathPatterns(...)at the registration site). The doc lists exactly these patterns, not the belt-and-suspenders checks insideSpaInterceptor.preHandle().server-lite/src/main/resources/application.properties:11./:rest/src/main/resources/static/index.html— confirmed it is a short page (logo + links to Swagger UI and the documentation), served by Spring Boot's default static-resource handling regardless of the flag.Verified independently that no other class reads this property (grep for
enable.ui.servingandenableUiServing— onlySpaInterceptor.javaand theserver-litedefault were hit).Per the project's documentation policy in
CLAUDE.md, no behavior is described that isn't traceable to one of these source files.Test plan
mkdocs serverenders the new sections without warningsappconf.md→deploy.md#headless-api-only-deploymentdeploy.md→appconf.md#ui-servingdocker/server/config/config.propertiesstill loads (it's a comment-only change, but worth runningdocker compose upto confirm)