Skip to main content

Configuration

Windrunner is configured with environment variables. The variables below are the application settings and startup options supported by the repository. When running with Docker Compose, put them in the .env file next to docker-compose.yml.

Windrunner is a Spring Boot application, so standard Spring Boot properties can also be supplied through environment variables. For additional framework settings, see the official Spring Boot application properties reference. For example, spring.example-setting becomes SPRING_EXAMPLE_SETTING when set as an environment variable. The Windrunner-specific variables below are the ones used directly by this application and its startup scripts.

Keep passwords and API keys out of source control.

Database

These are standard Spring Boot datasource settings. The Docker Compose file sets them from the matching POSTGRES_* variables.

VariableDefaultDescription
SPRING_DATASOURCE_URLJDBC URL for PostgreSQL.
SPRING_DATASOURCE_USERNAMEPostgreSQL username.
SPRING_DATASOURCE_PASSWORDPostgreSQL password.
SPRING_DATASOURCE_HIKARI_MAXIMUM_POOL_SIZE10 in Docker ComposeMaximum database connection-pool size.

For a local source checkout, server/start-local.sh defaults to jdbc:postgresql://127.0.0.1:5432/windrunner, the current operating-system username, and password test. Override the SPRING_DATASOURCE_* variables when your local database uses different values.

Bootstrap administrator

These values are used only when the database has no users. They do not replace the password for an existing account.

VariableDefault in Docker ComposeDescription
WINDRUNNER_BOOTSTRAP_SUPERADMIN_USERNAMEadminFirst super administrator username.
WINDRUNNER_BOOTSTRAP_SUPERADMIN_EMAILadmin@localhostFirst super administrator email.
WINDRUNNER_BOOTSTRAP_SUPERADMIN_PASSWORDchangemeFirst super administrator password.

The local startup script uses the same username, email, and password defaults. Change the password after the first login.

Authentication

VariableDefaultDescription
WINDRUNNER_AUTH_COOKIE_SECUREtrue in the application; false in Docker Compose and local startupMarks authentication cookies as Secure. Use true behind HTTPS and false for direct local HTTP.
WINDRUNNER_AUTH_COOKIE_SAME_SITELaxSameSite policy for authentication cookies.

AI provider

Set WINDRUNNER_LLM_PROVIDER to openai, gemini, claude, or none. The provider is none by default in the application. The local startup script selects openai unless you override it.

Provider selection

VariableDefaultDescription
WINDRUNNER_LLM_PROVIDERnone in the application; openai in start-local.shSelects the active AI provider.

OpenAI

VariableDefaultDescription
OPENAI_API_KEYAPI key. Required when OpenAI is selected.
OPENAI_BASE_URLhttps://api.openai.com/v1OpenAI-compatible API base URL.
OPENAI_MODELgpt-5.6-lunaModel name.
OPENAI_MAX_OUTPUT_TOKENS2048Maximum output tokens.
OPENAI_REASONING_EFFORTlowReasoning effort sent to the provider.
OPENAI_MAX_TOOL_ROUNDS8Maximum tool-call rounds for one request.
WINDRUNNER_LLM_OPENAI_CONNECT_TIMEOUT10sConnection timeout.
WINDRUNNER_LLM_OPENAI_READ_TIMEOUT2mResponse read timeout.

Gemini

VariableDefaultDescription
GEMINI_API_KEYAPI key. Required when Gemini is selected.
GEMINI_BASE_URLhttps://generativelanguage.googleapis.com/v1betaGemini API base URL.
GEMINI_MODELgemini-3.1-flash-liteModel name.
GEMINI_MAX_OUTPUT_TOKENS2048Maximum output tokens.
GEMINI_TEMPERATURE1.0Sampling temperature.
GEMINI_MAX_TOOL_ROUNDS8Maximum tool-call rounds for one request.
WINDRUNNER_LLM_GEMINI_CONNECT_TIMEOUT10sConnection timeout.
WINDRUNNER_LLM_GEMINI_READ_TIMEOUT2mResponse read timeout.

Claude

VariableDefaultDescription
CLAUDE_API_KEYAPI key. Required when Claude is selected.
CLAUDE_BASE_URLhttps://api.anthropic.com/v1Claude API base URL.
CLAUDE_MODELclaude-sonnet-5Model name.
CLAUDE_MAX_OUTPUT_TOKENS2048Maximum output tokens.
CLAUDE_TEMPERATURE1.0Sampling temperature.
CLAUDE_MAX_TOOL_ROUNDS8Maximum tool-call rounds for one request.
WINDRUNNER_LLM_CLAUDE_ANTHROPIC_VERSION2023-06-01Anthropic API version header.
WINDRUNNER_LLM_CLAUDE_CONNECT_TIMEOUT10sConnection timeout.
WINDRUNNER_LLM_CLAUDE_READ_TIMEOUT2mResponse read timeout.

The short provider variables are the recommended form. The longer timeout variables use Spring's windrunner.llm.<provider> configuration namespace.

Server and API features

VariableDefaultDescription
SERVER_PORT8066HTTP port used by the application.
SERVER_SHUTDOWNgracefulShutdown behavior.
SPRING_LIFECYCLE_TIMEOUT_PER_SHUTDOWN_PHASE20sMaximum wait for graceful shutdown.
SERVER_FORWARD_HEADERS_STRATEGYframeworkHandles forwarded headers when behind a proxy.
SERVER_COMPRESSION_ENABLEDtrueEnables HTTP response compression.
SERVER_COMPRESSION_MIN_RESPONSE_SIZE2KBMinimum response size for compression.
SPRING_SERVLET_MULTIPART_MAX_FILE_SIZE10MBMaximum uploaded file size.
SPRING_SERVLET_MULTIPART_MAX_REQUEST_SIZE10MBMaximum multipart request size.
SPRING_FLYWAY_ENABLEDtrueEnables database migrations at startup.
SPRING_FLYWAY_LOCATIONSclasspath:db/migrationFlyway migration location.
WINDRUNNER_MCP_ENABLEDtrueEnables the MCP server. See MCP server.
WINDRUNNER_OPENAPI_ENABLEDtrueEnables the external OpenAPI document at /api/openapi.json.

Advanced Spring Boot settings

The following settings are available for deployments that need to adjust server metadata, health endpoints, MCP metadata, or OpenAPI discovery. Most deployments can keep their defaults.

VariableDefaultDescription
SPRING_MAIN_BANNER_MODEoffControls the Spring startup banner.
SPRING_APPLICATION_NAMEwindrunnerApplication name used by Spring and server metadata.
SPRING_JMX_ENABLEDfalseEnables Spring JMX.
MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDEhealthActuator endpoints exposed over HTTP.
MANAGEMENT_ENDPOINT_HEALTH_SHOW_DETAILSneverControls health response details.
MANAGEMENT_INFO_ENV_ENABLEDfalseControls environment information in the info endpoint.
SPRING_AI_MCP_SERVER_ENABLEDtrueDirect Spring setting for MCP availability; WINDRUNNER_MCP_ENABLED is the recommended alias.
SPRING_AI_MCP_SERVER_PROTOCOLSTATELESSMCP transport protocol.
SPRING_AI_MCP_SERVER_NAMEwindrunnerMCP server name.
SPRING_AI_MCP_SERVER_VERSION2.0MCP server version advertised to clients.
SPRINGDOC_API_DOCS_ENABLEDtrueDirect Springdoc setting for OpenAPI availability; WINDRUNNER_OPENAPI_ENABLED is the recommended alias.
SPRINGDOC_API_DOCS_PATH/api/openapi.jsonOpenAPI document path.
SPRINGDOC_PACKAGES_TO_SCANcom.windrunner.server.external.v1.apiPackages included in the OpenAPI document.
SPRINGDOC_PATHS_TO_MATCH/api/v1/**API paths included in the OpenAPI document.

Docker Compose variables

These variables are used by server/docker-compose.yml to configure the container deployment:

VariableDefaultDescription
POSTGRES_USERwindrunnerDatabase user created by the PostgreSQL container.
POSTGRES_PASSWORDwindrunnerDatabase password used by the PostgreSQL container and app.
APP_PORT8066Host port mapped to the application container.

WINDRUNNER_BOOTSTRAP_*, WINDRUNNER_AUTH_COOKIE_SECURE, and SPRING_DATASOURCE_HIKARI_MAXIMUM_POOL_SIZE are also read by the Compose file.

Source build and startup scripts

These variables affect the repository's helper scripts rather than the running application:

VariableUsed byDescription
SKIP_NPM_CIserver/build.shSet to 1 to skip frontend dependency installation when dependencies are already installed.
JAR_PATHserver/start.shOverrides the server JAR path.

See Build from source for the complete local setup.