TramAI - governed AI workflows for Java and Kotlin

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 moduleBrings
tramai-spring-core@AiService proxies, @AiTool scanning, secret resolution chain, tramai.* properties, standard runtime
tramai-spring-sovereignSovereign runtime wiring, tramai.sovereign.* properties, authority guard

What it deliberately does not include:

  • Provider adapters — add tramai-spring-provider-openai, -anthropic or -ollama.
  • Secret backends — add tramai-spring-secrets-file, -vault or -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.yml rather 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.