
Animated orbs serving expressive AI/agent activity indicators, with multiple motion states, adjustable size/speed/color, and a single component that handles animation timing and reuse across UIs.
OrbMotion is a Kotlin Multiplatform animation library for expressive AI and agent activity indicators, built with Compose Multiplatform for Android and iOS.
It provides customizable animated orbs for AI assistants, agents, and interactive interfaces, with support for different states, sizes, speeds, and colors.
Build once with shared Compose UI and reuse the same animations across your Android and iOS applications.
https://github.com/user-attachments/assets/4bb89db1-187d-4cb7-a12c-a389ee922e28
OrbMotion is published to Maven Central.
For Kotlin Multiplatform projects, add the dependency to your commonMain source set:
With Version Catalog
```toml
[versions]
orbmotion = "1.0.1"
[libraries]
orbmotion = { module = "io.github.valentinerutto:orbmotion", version.ref = "orbmotion" }
kotlin {
sourceSets {
commonMain.dependencies {
implementation(libs.orbmotion)
}
}
}Without a Version Catalog
You can also add the dependency directly:
commonMain.dependencies {
implementation("io.github.valentinerutto:orbmotion:1.0.1")
}OrbMotion currently supports:
|
SEARCHING |
COMPOSING |
SOLVING |
|
WEAVING |
BREATHING |
SHAPING |
|
LISTENING |
WORKING |
CONNECTING |
This library exposes a single public composable for consumers: AnimatedThinkingOrb. It internally drives animation timing so you don't need to manage elapsedSeconds yourself.
Basic example:
@Composable
fun ThinkingIndicator() {
AnimatedThinkingOrb(
state = OrbState.WEAVING,
size = 120f,
speed = 1f,
color = Color.White
)
}AnimatedThinkingOrb can be customized using four main properties:
state — choose the animation state, e.g. OrbState.WEAVING
size — control the orb sizespeed — adjust the animation speedcolor — set the orb colorThe orb size can be customized using the following options:
OrbSize.LargeOrbSize.SmallOrbSize.Custom(36.dp)Float value, e.g. 120f
OrbMotion is an unofficial Kotlin/Compose Multiplatform adaptation inspired by Thinking Orbs, originally created by Jakub Antalik.
The original Thinking Orbs is a dotted, canvas-based web animation library featuring expressive animation states.
OrbsMotion-kmp brings the core visual concept and animation ideas of Thinking Orbs to Kotlin and Compose Multiplatform, adapting the original Canvas-based approach to Compose's Canvas and DrawScope APIs.
The animations have also been independently adapted and modified for this implementation, including changes to animation behavior, timing, movement, and visual characteristics.
The original Thinking Orbs project and its original animation concepts are credited to Jakub Antalik.
Original project and animation concepts: © Jakub Antalik Kotlin/Compose Multiplatform adaptation and modifications: © Valentine Rutto
OrbsMotion-kmp is an independent, unofficial project and is not affiliated with, sponsored by, or endorsed by Jakub Antalik.
If you're looking for the original web implementation, please visit the Original Thinking Orbs project.
MIT © Valentine Rutto — see LICENSE.
The original Thinking Orbs project is MIT © Jakub Antalik. The original MIT license and required copyright notice are preserved in THIRD_PARTY_NOTICES.md.
OrbMotion is a Kotlin Multiplatform animation library for expressive AI and agent activity indicators, built with Compose Multiplatform for Android and iOS.
It provides customizable animated orbs for AI assistants, agents, and interactive interfaces, with support for different states, sizes, speeds, and colors.
Build once with shared Compose UI and reuse the same animations across your Android and iOS applications.
https://github.com/user-attachments/assets/4bb89db1-187d-4cb7-a12c-a389ee922e28
OrbMotion is published to Maven Central.
For Kotlin Multiplatform projects, add the dependency to your commonMain source set:
With Version Catalog
```toml
[versions]
orbmotion = "1.0.1"
[libraries]
orbmotion = { module = "io.github.valentinerutto:orbmotion", version.ref = "orbmotion" }
kotlin {
sourceSets {
commonMain.dependencies {
implementation(libs.orbmotion)
}
}
}Without a Version Catalog
You can also add the dependency directly:
commonMain.dependencies {
implementation("io.github.valentinerutto:orbmotion:1.0.1")
}OrbMotion currently supports:
|
SEARCHING |
COMPOSING |
SOLVING |
|
WEAVING |
BREATHING |
SHAPING |
|
LISTENING |
WORKING |
CONNECTING |
This library exposes a single public composable for consumers: AnimatedThinkingOrb. It internally drives animation timing so you don't need to manage elapsedSeconds yourself.
Basic example:
@Composable
fun ThinkingIndicator() {
AnimatedThinkingOrb(
state = OrbState.WEAVING,
size = 120f,
speed = 1f,
color = Color.White
)
}AnimatedThinkingOrb can be customized using four main properties:
state — choose the animation state, e.g. OrbState.WEAVING
size — control the orb sizespeed — adjust the animation speedcolor — set the orb colorThe orb size can be customized using the following options:
OrbSize.LargeOrbSize.SmallOrbSize.Custom(36.dp)Float value, e.g. 120f
OrbMotion is an unofficial Kotlin/Compose Multiplatform adaptation inspired by Thinking Orbs, originally created by Jakub Antalik.
The original Thinking Orbs is a dotted, canvas-based web animation library featuring expressive animation states.
OrbsMotion-kmp brings the core visual concept and animation ideas of Thinking Orbs to Kotlin and Compose Multiplatform, adapting the original Canvas-based approach to Compose's Canvas and DrawScope APIs.
The animations have also been independently adapted and modified for this implementation, including changes to animation behavior, timing, movement, and visual characteristics.
The original Thinking Orbs project and its original animation concepts are credited to Jakub Antalik.
Original project and animation concepts: © Jakub Antalik Kotlin/Compose Multiplatform adaptation and modifications: © Valentine Rutto
OrbsMotion-kmp is an independent, unofficial project and is not affiliated with, sponsored by, or endorsed by Jakub Antalik.
If you're looking for the original web implementation, please visit the Original Thinking Orbs project.
MIT © Valentine Rutto — see LICENSE.
The original Thinking Orbs project is MIT © Jakub Antalik. The original MIT license and required copyright notice are preserved in THIRD_PARTY_NOTICES.md.