Jetpack Compose UI kit for building conversational AI, voice agents, video assistants, and biomarker-driven Android experiences.
Inspired by the web-based AgoraIO-Conversational-AI/agent-uikit, this project brings that same product direction to Android with reusable Compose components and a dedicated showcase app.
- Build voice and avatar-first AI interfaces faster in Jetpack Compose.
- Start from a cohesive dark visual system instead of assembling one-off screens.
- Reuse higher-level agent UI patterns, not just low-level buttons and cards.
- Explore every component in a live Android showcase before wiring it into your app.
agent-uikit is split into two modules:
uikit: the reusable Android libraryapp: a catalog-style showcase that exercises the library surface
The library includes components across these product areas:
| Area | Components |
|---|---|
| Voice | MicButton, SimpleVisualizer, LiveWaveform, AudioVisualizer, MicSelector, MicButtonWithVisualizer, AgentVisualizer |
| Chat | Conversation, ConversationContent, ConversationEmptyState, ConversationScrollButton, Message, MessageContent, Response, ConvoTextStream |
| Video | Avatar, AgentAvatar, AvatarVideoDisplay, LocalVideoPreview, CameraSelector |
| Layout | VideoGrid, VideoGridWithControls, MobileTabs, ControlStrip |
| Settings | AgentSettings, AgentSettingsPanel, SettingsDialog |
| Session | SessionPanel |
| Biomarkers | ShenPanel |
| Branding | AgoraLogo |
| Primitives | Button, IconButton, Card, Chip, ValuePicker, DropdownMenu, Popover, Command |
The demo app is no longer just a sample screen. It acts as a component catalog and now showcases:
- Mobile tabbed browsing for quick phone testing
- Full voice catalog including waveform, mic selector, and visualizers
- Full chat catalog including low-level message building blocks
- Both layout variants:
VideoGridandVideoGridWithControls - Video primitives like avatar surfaces, camera selector, and local preview
- Primitive wrappers and utility surfaces like dropdowns, popovers, and commands
- Settings, session, branding, and Shen measurement panels
This library is aimed at agentic experiences, not generic app chrome.
- Dark, token-driven palette
- Card-layered surfaces for live/real-time UI
- Video tile styling and avatar surfaces
- Reusable conversation, session, and settings shells
- Android-native Compose implementation rather than a web wrapper
Inside this repository, the showcase app uses the library like this:
implementation(project(":uikit"))Wrap your screen with the included theme:
AgoraAgentComposeUIKitTheme(darkTheme = true) {
AgentUIKitShowcase()
}Build the library and showcase:
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
./gradlew :uikit:assemble :app:assembleDebugInstall the showcase app:
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
./gradlew :app:installDebugMicButtonWithVisualizer(isEnabled = true)
MicSelector(
devices = listOf(
SettingOption("default", "System Default"),
SettingOption("usb", "USB Podcast Mic")
),
value = "usb",
muted = false,
state = MicButtonState.Listening
)Conversation(
messages = listOf(
ConversationMessage(
id = "1",
sender = MessageSender.Assistant,
author = "Agent",
text = "Welcome back. What should we tackle first?"
)
)
)VideoGridWithControls(
chat = { Conversation(messages = sampleMessages) },
avatar = {
AvatarVideoDisplay(
state = AvatarVideoState.Connected,
modifier = Modifier.fillMaxWidth().height(220.dp)
)
},
localVideo = {
LocalVideoPreview(
modifier = Modifier.fillMaxWidth().height(160.dp),
showLabel = true
)
},
controls = { ControlStrip() }
).
├── app/ # Showcase app and component catalog
├── uikit/ # Reusable Compose library
├── gradle/ # Wrapper and version catalog
└── .github/ # CI, issue templates, PR template
Consumers need the GitHub Packages repository in their Gradle setup:
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven {
url = uri("https://maven.pkg.github.com/anandwana001/agent-uikit")
credentials {
username = "<github-username>"
password = "<github-token>"
}
}
}
}Dependency:
implementation("io.github.anandwana001:agent-uikit:0.1.0")This project is usable and build-verified, but still evolving.
- The library compiles successfully
- The showcase app compiles successfully
- The API surface is broad enough to start adoption and feedback
- The next improvements are visual polish, richer examples, and external package publishing
If you want to help shape the Android version of agent-uikit, contributions are welcome.
- Read CONTRIBUTING.md
- Follow CODE_OF_CONDUCT.md
- Report sensitive issues through SECURITY.md
- License: MIT
- Attribution: this project takes inspiration from Agora's web
agent-uikit - Additional attribution details: NOTICE
If this library helps you ship agent experiences faster, starring the repo helps more Android teams discover it.