Repository navigation
Releases: llmrix/llmrix-router
Releases · llmrix/llmrix-router
Release list
Release v1.0.3
Release v1.0.3
Added
- Optional JEV semantic routing enhancement for selected Chat routes. JEV receives the current
candidaterouting-tagsand may return preferred tags with a confidence score; the existing
routing strategy remains responsible for the final model selection and fallback behavior. - Provider-neutral
JevDecisionClient,JevDecisionProvider, andJevDecisionProviderRequestSPIs,
plus a built-in TypeSafe JEV provider usingPOST /v1/systemone. - Spring configuration for the JEV decision integration:
decision.enabled,provider,base-url,
api-key,authenticator,options,routes,timeout,min-confidence, andfailure-mode. - User-defined model
metadata.routing-tagsconfiguration and validation metadata.
Changed
- JEV is treated as an optional policy enhancement. Timeouts, invalid decisions, unknown tags,
low confidence, and provider failures fall back to the existing route strategy. - JEV is not enabled by default. The built-in provider defaults to
https://api.typesafe.ai,
usesdecision.api-keyas a Bearer token, and can be overridden with a custom client/provider.
Release v1.0.2
Added
- Caffeine-backed local quota state with idle expiration and a fail-closed maximum partition limit.
- Optional route-level RPM/TPM quotas for programmatic and Spring Boot routers, with independent
quota partitions whenRoutingHints.AUTH_QUOTA_KEYis present. - OpenRouter Embeddings support through the OpenAI-compatible
/v1/embeddingsadapter. - OpenRouter Rerank support through the Cohere-compatible
/v1/rerankadapter. - Free OpenRouter Embedding and Rerank routes in the standalone server example, including
liquid/lfm-2.5-embedding-350m:free,nvidia/nemotron-3-embed-1b:free,
nvidia/llama-nemotron-rerank-vl-1b-v2:free, andqwen/qwen3-reranker-8b. - Router and upstream curl examples for Embeddings and Rerank in the API and server documentation.
- Orion client operations for Embeddings, Rerank, Audio, Image, and Video, including request-level
headers and observation callbacks consistent with Chat operations. - Private routing-hints transport between the Orion client and Router using the
X-LLMRix-Routing-Hintsheader. - Optional
forward-routing-hintscompatibility configuration for integrations that explicitly
require routing hints at the upstream boundary. - DEBUG-level OpenAI-compatible request diagnostics that report method, endpoint, model, fields,
and payload size without logging credentials or request content.
Changed
- OpenRouter model credentials in the server example are now read from
OPENROUTER_API_KEY. - Aggregate
usage.total_tokensresponses are mapped to input usage for input-only operations. - Provider-bound OpenAI-compatible requests now filter the private routing-hints header by default;
the Orion client continues to send it on the Client-to-Router hop.
Fixed
- HTTP 200 Server-Sent Events containing an
errorevent are now surfaced instead of being silently
treated as a successful stream completion. - Streaming chat responses now include final usage data when the provider supplies it.
- Image and video responses retain provider
modelandusagefields. - Successful OpenAI-compatible responses are validated for required operation-specific fields before
being mapped to the common API. - Multipart filenames are sanitized to prevent CR/LF header injection.
Release v1.0.1
Added
- Multi-modal core API: unified
ModelClientinterface withModelRequest/RoutedResponseabstractions supporting chat, embedding, audio, image, and video modalities. - Modular API packages:
api/chat,api/embedding,api/audio,api/image, andapi/videosub-packages with modality-specific model, request, and response types. - New core packages:
engine(execution policy and routed operations),event(lifecycle events and listener SPI),model(target, capability, limits, pricing),runtime(LlmRouterbuilder and facade),state(health, quota, state store), andstream(streaming utilities). - Provider SPI:
ModelProviderandModelProviderRequestinspi.providerfor pluggable provider integrations. - Authentication SPI:
ProviderAuthenticatorandRequestAuthenticatorinspi.authfor flexible authentication strategies. - Cost SPI:
ModelPricingResolverandPricingContextinspi.costfor usage cost calculation. - First-class providers: built-in
openai,deepseek, andopenrouterproviders with official default endpoints and OpenRouter application attribution headers. - OpenAI-compatible multi-modal integrations:
OpenAiCompatibleAudioModel,OpenAiCompatibleEmbeddingModel,OpenAiCompatibleImageModel, andOpenAiCompatibleVideoModel. - OpenAI HTTP endpoints in Spring starter: audio, embedding, image, and video controllers alongside the existing chat endpoint, all under
llmrix.model.router.http.enabled. LlmRouterruntime facade: programmatic builder API (LlmRouterBuilder) for assembling router instances.ModelTargetRegistry: replacesCandidateFactoryRegistryin the Spring starter for managing model targets and providers.ObservingModelOperations: generic observation-aware model operations wrapper in the Orion client.- Module-scoped examples:
llmrix-model-router-core-examples,llmrix-model-router-integrations-examples,llmrix-model-router-spring-starter-examples,llmrix-model-router-server-examples, andllmrix-model-client-examplesas child modules underllmrix-model-examples. - GitHub Actions CI workflow: automatic build and test verification on pull requests and pushes to
main. - GitHub Actions auto-release workflow: automatic tag and GitHub Release creation when code is merged to
main, with changelog extraction fromCHANGELOG.md. - Additional Spring configuration metadata: JSON metadata for IDE auto-completion of router properties.
- Lombok configuration: project-wide
lombok.configfor consistent annotation processing.
Changed
- Restructured the core API around a modality-agnostic
ModelClient/ModelRequest/RoutedResponsemodel instead of a chat-onlyChatModelAPI. - Moved chat-specific types (
ChatRequest,ChatResponse,Message,ToolCallPart, etc.) fromapiinto theapi.chatsub-package. - Relocated execution pipeline types from
executiontoengine(execution policy, routed model operations) andstate(health, quota, state store). - Moved lifecycle event types from
spi.eventto the top-leveleventpackage with theRouterListenerSPI. - Renamed
CandidatetoRouteCandidateandCandidate*state types toTarget*for clearer terminology. - Replaced the generic Spring configuration providers with first-class
openai,deepseek, andopenrouterproviders. - Added official default API endpoints and OpenRouter application attribution headers.
- Moved the OpenAI-compatible HTTP protocol, authentication, request ID, and error handling into the Spring starter. The standalone Spring Boot launch shell now lives in
llmrix-model-router-server-examples, and HTTP exposure is controlled byllmrix.model.router.http.enabled. - Renamed
router.candidatesandroutes.*.candidatesconfiguration tointegrations. - Converted
llmrix-model-examplesinto a Maven aggregator with one*-exampleschild per Router or client production module, keeping examples and tests aligned with module boundaries. - Normalized the standalone server example configuration to environment-backed provider credentials and a consistent model pool.
- Refactored the Spring starter auto-configuration to use
ModelTargetRegistryand provider-based integration setup. - Enhanced
.gitignorewith comprehensive rules for IDEs, build tools, OS files, credentials, and environment configurations. - Updated Orion client and Spring starter to work with the new multi-modal model operations abstraction.
Removed
- Removed
llmrix-model-router-serverstandalone module; HTTP endpoints are now part of the Spring starter and the runnable example is inllmrix-model-router-server-examples. - Removed Spring AI provider implementation, tests, and dependencies.
- Removed LangChain4j provider implementation, tests, and dependencies.
- Removed the generic
Beanprovider abstraction andCandidateFactoryRegistry. - Removed route-level
fallbacksconfiguration, fallback execution branches, and fallback lifecycle metrics. Every route now uses only itsmodelspool; when no model remains available, execution raisesModelUnavailableExceptionand the HTTP layer returns503 Service Unavailable. - Removed
README.zh-CN.md(consolidated to single-language documentation). - Removed default fallback lists from the server example because route models already provide load balancing and failure continuation.
Fixed
- Skip examples modules (
maven.deploy.skip,gpg.skip,maven.source.skip,maven.javadoc.skip) during Maven Central deployment to avoid publishing example artifacts.
Release v1.0.0
Added
llmrix-model-router-core: provider-neutralChatModelAPI, candidate model, routing strategies (priority, round-robin, weighted random, balanced, semantic, contextual bandit), deterministic execution pipeline with quota, health, cooldown, retry, and lifecycle events.llmrix-model-router-integrations: OpenAI-compatible client, Spring AI adapter, LangChain4j adapter, Redis state store (Lettuce + Lua), Bucket4j quota, ONNX policy, online shadow execution, offline evaluation, and Fugu iterative orchestration.llmrix-model-router-spring-starter:llmrix.model.router.*configuration properties, auto-configuration, Micrometer metrics, Spring Observations, Actuator health indicator, first-token latency, and configuration metadata.llmrix-model-router-server: executable Spring Boot launch shell for the router starter.llmrix-model-orion: lightweight framework-neutral Java client withOrionModelClientListenerSPI, CRLF-safe custom headers, and request-level options.llmrix-model-orion-spring-starter: Orion auto-configuration and Micrometer integration.llmrix-model-examples: Maven examples aggregator with module-scoped child projects; Redis and HTTP integration tests.- Maven Central deployment configuration and project metadata normalization.