tramai-spring-boot-starter
Version: 0.6.0
Status: Preview
Role: Unified Spring Boot starter; runtime selection happens through configuration, not a second coordinate.
Purpose
tramai-spring-boot-starter is the one Spring Boot entry point in TramAI 0.6.0. It is a dependency-composition artifact: it contains no runtime code of its own and simply exposes both runtime integrations, so an application adds one starter and chooses its runtime with tramai.profile.
dependencies {
api(project(":tramai-spring-core"))
api(project(":tramai-spring-sovereign"))
implementation(libs.spring.boot.autoconfigure)
}
The sovereign runtime is not a separate starter in 0.6.0: the 0.4.x-era standalone subset of this starter no longer exists. tramai.profile: sovereign is the only switch.
What it provides
| Composed module | Brings |
|---|---|
| tramai-spring-core | @AiService proxies, @AiTool scanning, secret resolution chain, tramai.* properties, standard runtime |
| tramai-spring-sovereign | Sovereign runtime wiring, tramai.sovereign.* properties, authority guard |
What it deliberately does not include:
- Provider adapters — add
tramai-spring-provider-openai,-anthropicor-ollama. - Secret backends — add
tramai-spring-secrets-file,-vaultor-aws. - Sovereign add-ons — persistence (
-sovereign-persistence-file|-jdbc) and ops (-sovereign-ops*) are opt-in.
Configuration selects the runtime:
tramai:
profile: standard # or: sovereign
Dependencies
dependencies {
implementation(platform("dev.tramai:tramai-bom:0.6.0"))
implementation("dev.tramai:tramai-spring-boot-starter")
implementation("dev.tramai:tramai-spring-provider-openai")
}
@SpringBootApplication
class InvoiceApplication
fun main() = runApplication<InvoiceApplication>()
@AiService
interface InvoiceAnalyzer {
@Operation(prompt = "Summarize this invoice.", model = "gpt-4o")
suspend fun analyze(invoiceText: String): String
}
@EnableTramai is not required: it selects a Spring model for annotation-driven contexts, not a runtime profile.
When to use this starter
- Any Spring Boot application that uses TramAI — standard or sovereign.
- You want the runtime chosen by
application.ymlrather than by the dependency list.
When NOT to use it
- You are not on Spring Boot: use tramai-standalone.
- You are building an adapter module for TramAI itself: depend on tramai-spring-core instead.
- You are not running Spring Boot's auto-configuration (plain Spring contexts) — the composed integrations expect Boot's auto-configuration machinery.
