What’s New in Arconia 0.26.0

Arconia 0.26.0 provides a number of new features and enhancements. This page includes the highlights of the release, but you can also check out the full release notes for more details about each new feature and bug fix.

We provide an automated way to upgrade your project to the latest version of Arconia, which is described in the Upgrading Arconia documentation.

Dev Services

General

  • Dev Services can now be configured with dynamic properties for those integrations that don’t support Spring Boot’s ConnectionDetails API. That enables more extended use cases and support capabilities for Dev Services.

Ollama

  • The Ollama Dev Service now automatically configures the Spring AI OpenAI client to use Ollama’s OpenAI-compatible API endpoint when the Spring AI OpenAI module is on the classpath. Learn more about it here.

  • Workaround for a Testcontainers bug where Docker Desktop on Windows injects a phantom NVIDIA runtime via WSL, causing Ollama container startup to fail on non-NVIDIA hosts.

Observation

General

  • A new arconia-observation module was introduced for managing observation convention modules.

OpenTelemetry Semantic Conventions

  • A new arconia-opentelemetry-semantic-conventions module was introduced, providing support for the OpenTelemetry Semantic Conventions.

  • JVM metrics: OpenTelemetry-aligned naming for memory, thread, class loader, and CPU metrics, based on the stable OpenTelemetry Semantic Conventions for JVM.

  • HTTP Server: OpenTelemetry-aligned naming for HTTP server request observations (servlet-based web applications), based on the stable OpenTelemetry Semantic Conventions for HTTP.

  • Generative AI: Support for the experimental OpenTelemetry Semantic Conventions for Generative AI, including chat model, embedding model, and tool execution spans; token usage metrics; input/output message content capturing (as span attributes or span events); and multimodal media support.

  • Content capturing for Generative AI observations is opt-in via the arconia.observations.conventions.opentelemetry.generative-ai.inference.capture-content property (none, span-attributes, span-events).

LangSmith Semantic Conventions

OpenInference Semantic Conventions

  • All classes in the arconia-openinference-semantic-conventions module have been relocated from io.arconia.openinference.observation to io.arconia.observation.openinference.

  • The configuration property prefix has changed from arconia.observations.generative-ai.openinference to arconia.observations.conventions.openinference.

  • The exclusive property has been removed. If you’d like to filter out some observations from being sent to an observability backend, you can define an ObservationPredicate in your application or rely on the telemetry collector (e.g. the OpenTelemetry Collector).

  • The hide-embedding-vectors option has been renamed to hide-embeddings-vectors.

  • New options: hide-choices and hide-embeddings-text.

  • LLM spans now support multimodal message.contents for messages with media (images, audio), with hideInputImages and base64ImageMaxLength support.

  • AGENT spans now capture output.value from the chat client response.

Multitenancy

This release defines a new baseline for the Arconia Multitenancy module.

Highlights

  • Java 25 ScopedValue for tenant context: The TenantContext class uses Java’s ScopedValue API (JEP 506) for tenant context propagation, ensuring automatic cleanup and safe usage with virtual threads.

  • HTTP tenant resolution: Resolve tenants from HTTP headers or cookies via the arconia-multitenancy-web-spring-boot-starter.

  • Micrometer observation enrichment: All observations are automatically enriched with the tenant identifier via an ObservationFilter.

  • SLF4J MDC integration: Tenant identifier is automatically added to the MDC for log correlation.

  • Tenant verification: Optional TenantVerifier for validating resolved tenants against a TenantDetailsService.

  • Tenant-aware caching: Built-in TenantKeyGenerator for cache isolation between tenants.

Breaking Changes

The following breaking changes were introduced in this release for the multitenancy modules.

Most mechanical changes (type renames, package moves, property keys, method renames) are applied automatically by the Arconia migration recipes. The changes below require manual attention.

Java 25 Required

The multitenancy modules now require Java 25+ due to the use of the ScopedValue API. The rest of Arconia keeps working on Java 21+.

TenantContextHolder Replaced by TenantContext

TenantContextHolder has been replaced by TenantContext, which uses ScopedValue instead of ThreadLocal. The type rename is applied automatically, but the API change from set()/clear() to TenantContext.where("tenant").run(…​) requires manual migration.