Published 17 March 2026
Major Features
- Java API: Introduced comprehensive Java interoperability across the framework:
- Java API for creating and running agents from pure Java projects (#1185)
- Builder-based Java API for graph strategies (#1581, #1617, #1366)
- Java-friendly API for
AIAgentStoragewith JVM-specific methods (#1600) - Blocking API builders for
PromptExecutorandLLMClientfor Java (#1555, #1604) - Jackson as the default serializer for Java API (#1630)
- Weave and Langfuse integrations now available from Java (#1616)
- Centralized Java/Kotlin time conversion utilities (
TimeUtils,toKotlinDuration, etc.) (#1620)
- Spring AI Integration: Added two new Spring Boot starters (
koog-spring-ai-starter-model-chatandkoog-spring-ai-starter-model-embedding) to integrate Spring AIChatModelandEmbeddingModelimplementations as Koog LLM backends, enabling support for the wide range of providers available in Spring AI (KG-109, #1587) - Chat Memory: Introduced persistent chat memory with multiple storage backend options:
- Long-term Memory: Added
LongTermMemoryfeature that augments prompts with relevant memory records from storage and extracts/ingests new memories from agent conversations (#1490) - Library-Agnostic Serialization API: Introduced a
JSONSerializerabstraction to support pluggable serialization libraries. Two implementations provided:KotlinxSerializer(default) and the newJacksonSerializerin a separateserialization-jacksonmodule. Tools API migrated to this new abstraction (#1588)
Improvements
- OpenTelemetry:
- Planner improvements:
- Added
AIAgentPlannerContextandAIAgentFunctionalContextBasefor better context hierarchy and planner-specific APIs (#1480) - Added planner-specific pipeline interceptors:
onPlanCreationStarting/Completed,onStepExecutionStarting/Completed,onPlanCompletionEvaluationStarting/Completed(KG-672, #1550) - GOAP strategies now have typed input/output and a dedicated
GoapAgentState(#1498)
- Added
- OpenRouter embedding support: Implemented
LLMEmbeddingProviderfor OpenRouter, enabling access to 21+ embedding models (KG-659, #1398) - Swift Package Manager support: Added XCFramework build and distribution infrastructure for iOS/macOS development via SPM (KG-682, #1485)
New LLM Models
- Anthropic Claude Opus 4.6: Added support via Anthropic and Bedrock executors (#1513)
- Google Gemini 3 Flash Preview: New model with extended capabilities and high-speed processing (#1621)
- OpenAI GPT-5.x series: Added GPT-5.1-Codex-Max, GPT-5.2-Codex, GPT-5.3-Codex, GPT-5.4, and GPT-5.4-Pro (#1595)
- Moonshot Kimi K2 Thinking: Added support via the Bedrock Converse API (#1436)
- Ollama thinking support: Added
think=truerequest parameter and streaming reasoning delta support for Ollama models (#1532)
Bug Fixes
- Persistence checkpoints: Fixed last successful node being re-executed when restoring from a checkpoint; changed
lastInputtolastOutputin checkpoint structure (#1308) - Ollama streaming: Fixed Ollama client to use
preparePost(...).executefor proper streaming instead of buffering the full response (#1497) - OpenRouter streaming: Fixed missing
reasoningandreasoningDetailsfields inOpenRouterStreamDeltacausing deserialization errors (#1504) - Dashscope streaming: Fixed tool call argument merging for streaming responses in
DashscopeLLMClient(KG-658, #1590) agents-extdependency leak: Movedagents-extfromcommonMain apitojvmTest implementationinagents-testto prevent transitive compile-time dependency leakage (#1506)- Streaming exception handling:
executeStreamingnow properly propagates exceptions from LLM clients and requiresStreamFrame.Endto signal stream completion (KG-550, #1580) - Debugger feature: Extended to support functional agents in addition to graph-based agents by dispatching appropriate strategy starting events (KG-741, #1637)
Breaking Changes
- Serialization API: All
encode/decodemethods inToolnow accept a secondJSONSerializerparameter. AutomaticToolDescriptorgeneration for primitive argument types (Tool<String, String>) is no longer supported without a custom descriptor.AIAgentFeature.createInitialConfignow takes anagentConfig: AIAgentConfigparameter. JSON types in pipeline events changed fromkotlinx.serializationtoai.koog.serialization(#1588) TypeTokenreplacesKType: Nodes and agent features now work withai.koog.serialization.TypeTokeninstead ofkotlin.reflect.KType. AlltypeOf<Foo>()usages should be replaced withtypeToken<Foo>()(#1581)- Global JSON schema registries removed:
RegisteredStandardJsonSchemaGeneratorsandRegisteredBasicJsonSchemaGeneratorsremoved.getStructuredRequestandStructureFixingParsermoved toai.koog.prompt.executor.modelpackage (KG-698, #1517) LLMDescription.descriptionrenamed tovalue: Thedescriptionfield ofLLMDescriptionhas been renamed tovaluefor Java compatibility (#1607)- Deprecated
kotlinx.datetimeimports replaced withkotlin.timeequivalents (Clock,Instant) (#1533) - Retired Anthropic/Bedrock models: Removed
Sonnet_3_7,Haiku_3_5,Sonnet_3_5, andOpus_3from Anthropic models; removed several AI21, Bedrock, and legacy Anthropic models.Haiku_3marked as deprecated (#1526)
Documentation
- Added documentation for Java API and Java examples (#1610)
- Added documentation for Spring AI integration (KG-109, #1627)
- Added documentation for custom feature creation (#1295)
- Reworked Getting Started, agent types, and Chat Memory tutorials (#1349, #1552)
- Improved Prompts and Planner agent documentation (#1302, #1301)
- Added nightly builds documentation (#1433)