{"slug": "announcing-adk-for-kotlin-and-adk-for-android-0-1-0-building-ai-agents-on-and", "title": "Announcing ADK for Kotlin and ADK for Android 0.1.0: Building AI Agents on Android and Beyond", "summary": "0.1.0 release of the Agent Development Kit (ADK) for Kotlin and a specialized ADK for Android, enabling developers to build AI agents for backend and on-device applications. The Android version allows agents to run locally using on-device LLMs like Gemini Nano for enhanced privacy, while still integrating with cloud-based models for complex orchestration. The release includes code examples and dependencies for integrating ADK into Android apps and Kotlin backend projects.", "body_md": "ADK for Kotlin brings agentic workflows to your backend projects, while ADK for Android provides specialized on-device optimizations\nFollowing the recent 1.0.0 releases of ADK for Java and Go, as well as the beta of ADK for Python 2.0, we are thrilled to announce the launch of version 0.1.0 of Agent Development Kit (ADK) for Kotlin! In addition, we're also launching an additional specialized library called ADK for Android. ADK is a flexible and open-source framework for developing and running AI agents, and is now available in Kotlin. With the Android version you can create AI agents that can operate on-device directly within your apps with local on-device LLMs, enhancing privacy, but with the flexibility to bridge the gap with cloud-based models.\nThe AI ecosystem is experiencing a massive shift toward the edge, since the introduction of Gemini Nano as a model on Android, it has become available on over 140 million devices. As developers look to build faster, more cost-effective, and privacy-enhancing applications, the ability to run AI models directly on mobile hardware (models like Gemini Nano) has never been more critical. However, building agentic systems can be complex, especially when coordinating tasks between the cloud and the edge. ADK removes that friction by managing all the complex orchestration, context handling, and error handling for you.\nWith just a few lines of Kotlin, you can:\nDuring our I/O session, we showcased how ADK for Kotlin powers an in-app trip assistant.\nGoogle I/O Video Embed\nIf a user encounters an issue while traveling, the cloud-based orchestrator interacts with the user to understand the problem. However, when it needs to verify a booking confirmation, it delegates the task to an on-device subagent. Various retrieval agents use the on-device Gemini Nano model to extract data from the user's locally stored documents. Finally, a validation agent compares the data coming from these analyses. This keeps private data offline while leveraging the reasoning capabilities of the cloud orchestrator.\nTo add ADK to your Android app, add the following dependency to your build.gradle.kts\nfile:\nimplementation(\"com.google.adk:google-adk-kotlin-core-android:0.1.0\")\nYou can then easily build your ADK agents:\nval orchestrator = LlmAgent(\nname = \"genius_orchestrator\",\nmodel = Gemini(apiKey = apiKey, name = MODEL_NAME),\ninstruction = Instruction(\"\"\"\nYou are a travel genius assistant.\nFirst, use `get_trip_details` to get the full itinerary of the trip and\nunderstand what events are scheduled.\nThen, respond with a welcome message tailored to the trip state.\n\"\"\".trimIndent()),\ntools = listOf(GetTripDetailsTool(tripId)),\nsubAgents = listOf(carRentalPipeline, hotelPipeline),\ndisallowTransferToPeers = true,\ndisallowTransferToParent = true,\n)\nFor more extended agent setups, check out the ADK for Android demos.\nIn your build.gradle.kts\nfile, add the following dependencies:\ndependencies {\n// Implementation dependency for ADK Core\nimplementation(\"com.google.adk:google-adk-kotlin-core:0.1.0\")\n// KSP processor for generating @AdkTools\nksp(\"com.google.adk:google-adk-kotlin-processor:0.1.0\")\n}\nADK for Kotlin lets you define tools to equip the LLM with extra powers. Let’s create an imagined “improbability drive” service, inspired from the Hitchhiker’s Guide to the Galaxy:\nclass ImprobabilityDriveService {\n/** Calculates the improbability of a given event. */\n@Tool\nfun calculateImprobability(\n@Param(\"The event to calculate the improbability for, e.g., 'A cup of tea materializing'\")\nevent: String\n): String {\nreturn \"The improbability of '$event' is approximately 42 to 1 against.\"\n}\n}\nNotice the use of the @Tool\nand @Param\nannotations to describe the tool to the LLM.\nNow, we can create a first agent, which will be the sub-agent of a main agent we’ll define later on. The HeartOfGold\nagent represents the spaceship’s computer:\nval heartOfGoldAgent =\nLlmAgent(\nname = \"HeartOfGold\",\ndescription = \"The Heart of Gold ship computer. Handles improbability drive queries.\",\nmodel = Gemini(apiKey = apiKey, name = \"gemini-2.5-flash\"),\ninstruction =\nInstruction(\n\"\"\"\nYou are the ship computer of the Heart of Gold. You are cheerful, helpful, and slightly annoying.\nYou have access to the Infinite Improbability Drive.\nUse real facts about yourself if asked, but keep it funny.\n\"\"\"\n.trimIndent()\n),\ntools = ImprobabilityDriveService().generatedTools()\n)\nNow we can use this sub-agent in our root agent:\nval rootAgent =\nLlmAgent(\nname = \"MissionControl\",\ndescription = \"The central router for space queries. Routes to HeartOfGold.\",\nsubAgents = listOf(heartOfGoldAgent),\nmodel = Gemini(apiKey = apiKey, name = \"gemini-2.5-flash\"),\ninstruction =\nInstruction(\n\"\"\"\nYou are Mission Control. You are the central hub for all communications.\nYour main job is to route the user's query to the most appropriate agent.\n- If the query is about improbability, the Infinite Improbability Drive, or the Heart of Gold, transfer to `HeartOfGold`.\n- Otherwise, respond directly with a professional but stressed persona.\n\"\"\"\n.trimIndent()\n)\n)\nThe heartOfGoldAgent\nis defined as a subagent in the agent configuration of this main agent.\nWhen the user asks questions about the improbability of an odd event to happen, the main agent delegates the task to the heartOfGoldAgent\n, which in turn will call the local function tool to calculate the probability, before replying to the user.\nThis is a simple example of how you can define tools and sub agents in ADK for Kotlin.\nThe ADK for Kotlin & ADK for Android 0.1.0 releases contain the foundational feature set required for building AI agents on Android and beyond, including advanced control over agent execution, comprehensive tooling, and essential services for state management.\nAgents\nTooling & Integrations\nRuntime & Observability\nDeveloper Experience\nAndroid Models\nThis 0.1 release is our first experimental version of the library, currently featuring default agents for the ML Kit GenAI APIs and direct connections to Gemini in the Cloud. But we are just getting started!\nWe are incredibly excited about the future of in-app AI and can’t wait to see the intelligent experiences you build. Be sure to check out the project on GitHub!", "url": "https://wpnews.pro/news/announcing-adk-for-kotlin-and-adk-for-android-0-1-0-building-ai-agents-on-and", "canonical_source": "https://developers.googleblog.com/adk-kotlin-android-building-ai-agents/", "published_at": "2026-05-21 16:09:17.566222+00:00", "updated_at": "2026-05-21 16:09:20.549522+00:00", "lang": "en", "topics": ["artificial-intelligence", "machine-learning", "large-language-models", "open-source", "developer-tools"], "entities": ["ADK", "Kotlin", "Android", "Gemini Nano", "Google"], "alternates": {"html": "https://wpnews.pro/news/announcing-adk-for-kotlin-and-adk-for-android-0-1-0-building-ai-agents-on-and", "markdown": "https://wpnews.pro/news/announcing-adk-for-kotlin-and-adk-for-android-0-1-0-building-ai-agents-on-and.md", "text": "https://wpnews.pro/news/announcing-adk-for-kotlin-and-adk-for-android-0-1-0-building-ai-agents-on-and.txt", "jsonld": "https://wpnews.pro/news/announcing-adk-for-kotlin-and-adk-for-android-0-1-0-building-ai-agents-on-and.jsonld"}}