Skip to content

Back to the catalog

Announcing ADK for Kotlin 1.0: Building Production-Ready AI Agents in Kotlin, Android, and Beyond
developers.googleblog.comarticle

Announcing ADK for Kotlin 1.0: Building Production-Ready AI Agents in Kotlin, Android, and Beyond

Google announces ADK (Agent Development Kit) for Kotlin 1.0, reaching feature parity with ADK Python/Java and adding Android-first extensions: on-device inference via LiteRT-LM and ML Kit, Firebase AI Logic for hybrid cloud, and persistence through Room and AppSearch. It uses Kotlin Symbol Processing (KSP) to generate type-safe function-calling schemas at compile time from @Tool/@Param annotated methods, and introduces a SkillToolset for progressive-disclosure SOPs (SKILL.md files) plus human-in-the-loop confirmation for sensitive tool calls like bank transfers.

TL;DR Google ships ADK for Kotlin 1.0 — a KMP multi-agent framework with compile-time tool-calling codegen, agent skills, and Android on-device/cloud extensions.
Document

What it claims

ADK for Kotlin 1.0 is GA, built on a Kotlin Multiplatform (KMP) core that is agnostic to model backends, session providers, and memory systems, with plug-and-play Android extensions layered on top. It targets both server-side JVM agents and Android apps, and claims full feature parity with ADK Python/Java "Core" plus Vertex AI service bindings (VertexAiSessionService, VertexAiRagMemoryService, VertexAiMemoryBankService). Examples use gemini-3.8-flash.

How it works

The two mechanisms the summary names are shown concretely here:

  • KSP function calling: annotate methods with @Tool/@Param on a plain class; KSP generates an extension YourService().generatedTools() at compile time — type-safe schemas, suspend support, zero runtime reflection. Tools can set @Tool(requireConfirmation = true).
  • Skills: SkillToolset(NewFileSystemSource(...)) exposes list_skills, load_skill, load_skill_resource. A SKILL.md carries frontmatter (name, description, allowed-tools) and steps; bundled assets are fetched only on demand (progressive disclosure).

Human-in-the-loop is a two-turn pause/resume: turn 1 emits a synthetic function call named FunctionCall.REQUEST_CONFIRMATION_FUNCTION_CALL_NAME; the app reads its id, then turn 2 sends a FunctionResponse with mapOf(ToolConfirmation.CONFIRMED_KEY to true) to resume and execute the tool.

Agents run through InMemoryRunner.runAsync(...) returning a flow of Events. On Android the runner accepts pluggable services: RoomSessionService.fromContext (SQLite chat history across process death), AppSearchMemoryService.fromContext (on-device full-text indexed memory), FileArtifactService.fromExternalFilesDir.

How to use it

dependencies {
    implementation("com.google.adk:google-adk-kotlin-core:1.0.0")
    ksp("com.google.adk:google-adk-kotlin-processor:1.0.0")
    // Optional Android extensions:
    implementation("com.google.adk:google-adk-kotlin-mlkit-android:1.0.0-beta")
    implementation("com.google.adk:google-adk-kotlin-litertlm:1.0.0")
    implementation("com.google.adk:google-adk-kotlin-firebase-android:1.0.0")
}

Firebase-backed agents use Firebase.create("gemini-3.8-flash", firebaseAi) as the model.

Limits

The page is an announcement, not an evaluation — no benchmarks, latency, or cost figures, and no licence stated. Note the version skew across artifacts: the ML Kit extension is 1.0.0-beta while core, LiteRT-LM, and Firebase are 1.0.0; the text also flags LiteRT-LM/ML Kit on-device inference as "(beta)". All tool outputs in the examples are hardcoded stubs, so the diagnostics/banking flows demonstrate the API shape only, not real backend integration.

Organisations named here

  • Google
  • Firebase

Technologies named here

  • Kotlin
  • Gemini 3.8 Flash
  • ADK for Kotlin
  • ADK Python
  • ADK Java
  • LiteRT-LM
  • ML Kit
  • Firebase AI Logic
  • Room
  • AppSearch
  • Kotlin Multiplatform
  • KSP
  • VertexAiSessionService
  • VertexAiRagMemoryService
  • VertexAiMemoryBankService
  • InMemoryRunner
  • SkillToolset
  • RoomSessionService
  • AppSearchMemoryService
  • FileArtifactService
  • Kotlin Coroutines
  • Gemini
  • Firebase

Techniques named here

  • Progressive disclosure
  • Compile-time function calling via @Tool/@Param annotations
  • Human-in-the-loop tool confirmation
  • Multi-agent orchestration