ADK for Kotlin 1.0 Is GA: Build Production AI Agents Google released ADK for Kotlin 1.0 on September 9, 2026, the first general availability version of its agent framework for Kotlin and Android, headlined by compile-time function calling via Kotlin Symbol Processing (KSP). The 1.0 release adds full feature parity with ADK Python and Java, including hierarchical multi-agent systems, context compaction, resumable sessions, human-in-the-loop flows, and Java interoperability, and ships three Android inference paths: LiteRT-LM with Gemma for fully on-device inference, ML Kit/Gemini Nano in beta without tool calling, and Firebase AI Logic for cloud Gemini. Google shipped ADK for Kotlin 1.0 https://developers.googleblog.com/announcing-adk-for-kotlin-10-building-production-ready-ai-agents-in-kotlin-android-and-beyond/ on September 9, 2026 — the first general availability release of its agent framework for Kotlin and Android. The headline feature is compile-time function calling via KSP: tool schemas are generated at build time, not discovered at runtime through reflection. If you have been watching agent frameworks accumulate and wondering which one would actually land on Android with real coroutines support and on-device inference, this is it. Compile-Time Function Calling Changes the Risk Equation Most agent SDKs — including ADK Python — build tool schemas by inspecting your functions at runtime. ADK for Kotlin does it at compile time using Kotlin Symbol Processing KSP https://kotlinlang.org/docs/ksp-overview.html . Annotate a function with @Tool and @Param , and KSP generates a .generatedTools extension function during the build. The schema is correct when the build passes, or it does not ship. That is a different class of guarantee than a runtime exception when the LLM first tries to call your tool in production. It also means zero reflection overhead at inference time — the JVM does not need to inspect method signatures on hot paths. // build.gradle.kts dependencies { implementation "com.google.adk:adk-core:1.0.0" ksp "com.google.adk:adk-ksp:1.0.0" } class WeatherService { @Tool "Gets current weather for a city" fun getWeather @Param "Name of the city" city: String : String = fetchWeather city } val agent = LlmAgent model = GeminiModel "gemini-2.0-flash" , instruction = "You are a helpful weather assistant.", tools = WeatherService .generatedTools // generated by KSP, not reflected This was the community’s top ask after 0.1.0. The workaround before — wrapping ADK Python via HTTP calls from Kotlin — is no longer the right answer. Full Feature Parity With ADK Python and Java Version 1.0 closes everything that 0.1.0 left open. The complete orchestration feature set is now available in idiomatic Kotlin: - Hierarchical multi-agent systems: Agents can delegate tasks to specialized sub-agents — useful when a single model cannot handle intent classification, retrieval, and execution in one context window. - Context compaction: As conversations grow, ADK auto-summarizes older history to stay within token limits. Configurable as token-based or sliding-window turn-based. - Resumable sessions: Pause, serialize, and restore mid-conversation state across process restarts. - Human-in-the-loop flows: Agents can pause and request confirmation before taking irreversible actions. - Java interoperability: Call ADK Kotlin agents from existing Java code without wrappers. The parity claim is real. If you have used ADK Python for backend agents and wanted the same orchestration primitives in Kotlin for server-side or Android work, 1.0 delivers that. Android Gets Three Inference Paths The Android extensions are where ADK for Kotlin separates from every other agent framework. Three distinct inference backends, all using the same agent API: - LiteRT-LM + Gemma: Fully on-device inference. No API key, no network required at inference time. Supports full tool calling. Use for offline agents, privacy-sensitive document analysis, or when connectivity cannot be guaranteed. - ML Kit / Gemini Nano beta : Uses the Gemini Nano model baked into Pixel hardware. Lowest possible latency. Tool calling is not supported yet — that is on the roadmap. - Firebase AI Logic: Routes to cloud Gemini without embedding an API key in the APK. The recommended production path https://developer.android.com/ai/adk for apps that need cloud inference with proper auth and billing controls. A single ADK Kotlin agent can route between these three based on network state and task complexity. That hybrid routing — on-device for cheap or private tasks, cloud for harder ones — is the production pattern that demo-quality agent code does not support. KMP Core: One Agent Codebase for Server and Android ADK for Kotlin is built on Kotlin Multiplatform https://kotlinlang.org/docs/multiplatform.html . Agent logic — tools, orchestration, memory, context compaction configuration — compiles to JVM for server-side Kotlin and to Android without separate implementations. Server-side Kotlin gets full ADK Python parity without the Python runtime. iOS is not a supported target yet. The persistence layer matters for production. ADK Kotlin integrates Room for session persistence — multi-turn state survives process kills and device reboots — and AppSearch for on-device semantic search over agent memory. Both work offline. Production agents that remember things across sessions no longer require a cloud memory store. Who Should Move on This Now If you are building Android apps that need agent behavior — document Q&A, on-device task automation, or voice assistants that call tools — ADK for Kotlin 1.0 is the right starting point. The official quickstart at adk.dev https://adk.dev/get-started/kotlin/ covers JVM and Android setup separately. Start with JVM to learn the agent API, then add the Android extensions. If you are already on ADK Python for a backend that talks to Kotlin clients, check whether a shared KMP agent core would simplify your architecture. The server-side Kotlin path is production-ready — not a second-class port. If your current approach is wrapping ADK Python behind a REST API that an Android app calls, the compile-time guarantees in ADK Kotlin 1.0 alone are worth the migration.