
Advanced debugging and inspection tool enabling real‑time remote inspection of apps: captures network/WebSocket/GraphQL traffic, mocks requests, displays analytics, images, storage, preferences and database contents.
Flocon is an advanced debugging and inspection tool built with Kotlin Multiplatform (KMP), designed to work seamlessly across Android and desktop environments.
Inspired from Flipper by Meta, while leveraging modern Kotlin multiplatform architecture for networking, databases, analytics, and UI data visualization.
It allows developers to connect a Kotlin Multiplatform or Android app to their computer and launch a desktop interface that can observe, inspect, and interact with the running app in real time — across shared Kotlin code and platform-specific implementations.
Since 2.0, the SDK is split into one module per feature: add the core and the plugins you need, each with its -no-op version for release builds.
debugImplementation("io.github.openflocon:flocon:LAST_VERSION")
releaseImplementation("io.github.openflocon:flocon-no-op:LAST_VERSION")
// for example, the network inspector with OkHttp
debugImplementation("io.github.openflocon:flocon-network-core:LAST_VERSION")
releaseImplementation("io.github.openflocon:flocon-network-core-no-op:LAST_VERSION")
debugImplementation("io.github.openflocon:flocon-okhttp-interceptor:LAST_VERSION")
releaseImplementation("io.github.openflocon:flocon-okhttp-interceptor-no-op:LAST_VERSION")in your Application.kt
startFlocon(FloconContext(this)) {
install(FloconNetwork)
install(FloconDatabase) { room() }
install(FloconAnalytics)
}
// then, anywhere in your app
Flocon.analyticsPlugin.log(AnalyticsEvent("button_clicked", "events"))On desktop use FloconContext(appName, packageName), on iOS FloconContext().
localhost only reaches your computer from an emulator or a simulator. On a real device, add the optional flocon-connect module (debug only), and give the IP address of your computer, for example from a debug menu:
debugImplementation("io.github.openflocon:flocon-connect:LAST_VERSION")
releaseImplementation("io.github.openflocon:flocon-connect-no-op:LAST_VERSION")import io.github.openflocon.flocon.connect
import io.github.openflocon.flocon.connectionState
startFlocon(FloconContext(this)) {
connect {
address = "192.168.1.20" // optional: a computer with a fixed IP, also tried at start
}
install(FloconNetwork)
}
// later, for example when the user types the IP of the computer in a debug menu
val result = Flocon.connect("192.168.1.20") // IP only, the port is always 9023
// follow the connection
Flocon.connectionState.collect { state -> /* Connected, Connecting, Failed(reason)... */ }Flocon keeps trying its default address and also connects to this one, sending what was logged in the meantime in order. The last address that worked is kept and tried again at the next launch. See the setup guide for all the options.
Coming from 1.x? See the 👉 migration guide.
Visit the full documentation site for setup guides, feature details, and advanced usage:
👉 openflocon.github.io/Flocon/
| Feature | Android | KMP (JVM/iOS) |
|---|---|---|
| Network (HTTP/Mocking) | ✅ | ✅ |
| Database (Room/SQLite) | ✅ | ✅ |
| Preferences | ✅ | ❌ |
| Dashboards & Tables | ✅ | ✅ |
| Analytics & Images | ✅ | ✅ |
| Feature Flags | ✅ | ✅ |
| Accessibility | ✅ | ✅ (iOS automatic, JVM manual) |
| Deeplink & Files | ✅ | ❌ |
| AI Agents (MCP) | ✅ | ✅ |
For detailed platform-specific requirements, see the Setup Guide.
Thanks to these amazing people for making Flocon better every day!
Flocon is MIT licensed, as found in the LICENSE file.
Flocon is an advanced debugging and inspection tool built with Kotlin Multiplatform (KMP), designed to work seamlessly across Android and desktop environments.
Inspired from Flipper by Meta, while leveraging modern Kotlin multiplatform architecture for networking, databases, analytics, and UI data visualization.
It allows developers to connect a Kotlin Multiplatform or Android app to their computer and launch a desktop interface that can observe, inspect, and interact with the running app in real time — across shared Kotlin code and platform-specific implementations.
Since 2.0, the SDK is split into one module per feature: add the core and the plugins you need, each with its -no-op version for release builds.
debugImplementation("io.github.openflocon:flocon:LAST_VERSION")
releaseImplementation("io.github.openflocon:flocon-no-op:LAST_VERSION")
// for example, the network inspector with OkHttp
debugImplementation("io.github.openflocon:flocon-network-core:LAST_VERSION")
releaseImplementation("io.github.openflocon:flocon-network-core-no-op:LAST_VERSION")
debugImplementation("io.github.openflocon:flocon-okhttp-interceptor:LAST_VERSION")
releaseImplementation("io.github.openflocon:flocon-okhttp-interceptor-no-op:LAST_VERSION")in your Application.kt
startFlocon(FloconContext(this)) {
install(FloconNetwork)
install(FloconDatabase) { room() }
install(FloconAnalytics)
}
// then, anywhere in your app
Flocon.analyticsPlugin.log(AnalyticsEvent("button_clicked", "events"))On desktop use FloconContext(appName, packageName), on iOS FloconContext().
localhost only reaches your computer from an emulator or a simulator. On a real device, add the optional flocon-connect module (debug only), and give the IP address of your computer, for example from a debug menu:
debugImplementation("io.github.openflocon:flocon-connect:LAST_VERSION")
releaseImplementation("io.github.openflocon:flocon-connect-no-op:LAST_VERSION")import io.github.openflocon.flocon.connect
import io.github.openflocon.flocon.connectionState
startFlocon(FloconContext(this)) {
connect {
address = "192.168.1.20" // optional: a computer with a fixed IP, also tried at start
}
install(FloconNetwork)
}
// later, for example when the user types the IP of the computer in a debug menu
val result = Flocon.connect("192.168.1.20") // IP only, the port is always 9023
// follow the connection
Flocon.connectionState.collect { state -> /* Connected, Connecting, Failed(reason)... */ }Flocon keeps trying its default address and also connects to this one, sending what was logged in the meantime in order. The last address that worked is kept and tried again at the next launch. See the setup guide for all the options.
Coming from 1.x? See the 👉 migration guide.
Visit the full documentation site for setup guides, feature details, and advanced usage:
👉 openflocon.github.io/Flocon/
| Feature | Android | KMP (JVM/iOS) |
|---|---|---|
| Network (HTTP/Mocking) | ✅ | ✅ |
| Database (Room/SQLite) | ✅ | ✅ |
| Preferences | ✅ | ❌ |
| Dashboards & Tables | ✅ | ✅ |
| Analytics & Images | ✅ | ✅ |
| Feature Flags | ✅ | ✅ |
| Accessibility | ✅ | ✅ (iOS automatic, JVM manual) |
| Deeplink & Files | ✅ | ❌ |
| AI Agents (MCP) | ✅ | ✅ |
For detailed platform-specific requirements, see the Setup Guide.
Thanks to these amazing people for making Flocon better every day!
Flocon is MIT licensed, as found in the LICENSE file.