Skip to content

Release Notes: v0.15.0

Release Date: 2026-04-11

Highlights

  • Module Rename: omnillmomnillm-core establishing thin/thick provider architecture
  • Gemini Extracted: Moved to separate omnillm-gemini package, removing heavy google.golang.org/genai dependency
  • Provider Registry: Priority-based registry allows thick (SDK) providers to override thin (stdlib) providers

Breaking Changes

Module Path Changed

The Go module path has changed from github.com/plexusone/omnillm to github.com/plexusone/omnillm-core.

Migration:

// Before
import "github.com/plexusone/omnillm"

// After
import "github.com/plexusone/omnillm-core"

Or use the new batteries-included aggregator (once available):

import "github.com/plexusone/omnillm"

Gemini Moved to Separate Package

Gemini is no longer included in omnillm-core. Install it separately:

go get github.com/plexusone/omnillm-gemini
import (
    "github.com/plexusone/omnillm-core"
    _ "github.com/plexusone/omnillm-gemini" // Register Gemini provider
)

Thin/Thick Provider Architecture

omnillm-core now implements a thin/thick provider architecture:

Thin Providers (omnillm-core)

  • Native HTTP implementations using only Go stdlib
  • Zero external SDK dependencies
  • Lightweight and fast to compile
  • Providers: OpenAI, Anthropic, X.AI, GLM, Kimi, Qwen, Ollama

Thick Providers (Separate Packages)

  • Use official SDKs from providers
  • Override thin providers when imported
  • Better API coverage and error handling
Provider Thin (omnillm-core) Thick Package SDK
OpenAI omnillm-openai openai-go
Anthropic omnillm-anthropic anthropic-sdk-go
Gemini omnillm-gemini google genai
X.AI
GLM
Kimi
Qwen
Ollama

Provider Registry

New priority-based registry allows thick providers to override thin providers:

// Thick providers register with higher priority
func init() {
    omnillm.RegisterProvider(omnillm.ProviderNameOpenAI, NewProvider, omnillm.PriorityThick)
}

Priority Constants:

  • PriorityThin (0): Default for stdlib providers
  • PriorityThick (10): SDK-based providers that override thin

Registry Functions:

  • RegisterProvider(name, factory, priority): Register a provider factory
  • GetProviderFactory(name): Get the highest-priority factory for a provider
  • ListRegisteredProviders(): List all registered provider names
  • GetProviderPriority(name): Get the priority of a registered provider

Compatibility Exports

New exports for thick provider compatibility:

  • Capabilities struct for provider feature detection
  • ErrInvalidAPIKey alias for ErrEmptyAPIKey
  • NewAPIError(provider, statusCode, errorType, message) for thick provider error creation
  • NewAPIErrorFull(provider, statusCode, message, errorType, code) for full error details

Installation

# Core package (thin providers)
go get github.com/plexusone/omnillm-core@v0.15.0

# Optional thick providers
go get github.com/plexusone/omnillm-openai
go get github.com/plexusone/omnillm-anthropic
go get github.com/plexusone/omnillm-gemini

Dependencies

  • Removed: google.golang.org/genai (moved to omnillm-gemini)
  • Updated: github.com/grokify/mogo to 0.74.1

Documentation

  • Added thin/thick provider architecture design document
  • Updated installation guide with thick provider information
  • Updated Gemini docs to indicate separate package