
Extensible, plugin-based debugging platform with runtime-loadable modules, DSL configuration, simultaneous session support, and type-safe serialized communication for customizable debugging workflows.
JetWhale is an extensible debugging tool inspired by Flipper.
It is built with Kotlin and Jetpack Compose, making it especially familiar and approachable for Kotlin / Android developers. Thanks to its Kotlin-first design, JetWhale can be introduced with a minimal learning curve.
The host (left) debugging the desktop demo app (right): live traffic, a mocked response, and a screen pushed from the Nav3 Navigator.
adb reverse for you.[!NOTE] Under active development. Feedback is welcome as we work toward a stable release; the Plugin SDK APIs are not finalized and may still change.
📖 Documentation: https://kitakkun.github.io/JetWhale/
1. Install the host — download the installer for your OS from
the releases page (.dmg for macOS, .deb for
Linux, .msi for Windows), and launch it. macOS and Windows ask you to approve its first launch;
see First launch. After
that, you update it from inside the app.
2. Add the runtime to the app you want to debug:
// build.gradle.kts
dependencies {
implementation("com.kitakkun.jetwhale:jetwhale-agent-runtime:<version>")
}3. Start a session as early as you can in your app's startup:
startJetWhale {
connection {
endpoints {
ws("localhost", 5080)
}
}
plugins {
// each inspector below is its own artifact; register the ones you want
}
}That is the whole integration — the app shows up in the host as soon as it runs.
See Getting Started for the rest, and Connecting Devices for physical devices and secure connections.
The debugging tools themselves are plugins. These ship with JetWhale — install one into the host
from its plugin catalog; for one that works inside your app, also add the matching artifact to your
app and register it in startJetWhale { }:
Plugins are ordinary Gradle projects built against the published SDK. One command gives you a hot-reload loop:
./gradlew :myPlugin:runJetWhaleHotIt downloads a real host for your OS, launches it with your plugin loaded, and reloads the plugin on every source change without restarting.
See Developing plugins for the full guide.
JetWhale is an extensible debugging tool inspired by Flipper.
It is built with Kotlin and Jetpack Compose, making it especially familiar and approachable for Kotlin / Android developers. Thanks to its Kotlin-first design, JetWhale can be introduced with a minimal learning curve.
The host (left) debugging the desktop demo app (right): live traffic, a mocked response, and a screen pushed from the Nav3 Navigator.
adb reverse for you.[!NOTE] Under active development. Feedback is welcome as we work toward a stable release; the Plugin SDK APIs are not finalized and may still change.
📖 Documentation: https://kitakkun.github.io/JetWhale/
1. Install the host — download the installer for your OS from
the releases page (.dmg for macOS, .deb for
Linux, .msi for Windows), and launch it. macOS and Windows ask you to approve its first launch;
see First launch. After
that, you update it from inside the app.
2. Add the runtime to the app you want to debug:
// build.gradle.kts
dependencies {
implementation("com.kitakkun.jetwhale:jetwhale-agent-runtime:<version>")
}3. Start a session as early as you can in your app's startup:
startJetWhale {
connection {
endpoints {
ws("localhost", 5080)
}
}
plugins {
// each inspector below is its own artifact; register the ones you want
}
}That is the whole integration — the app shows up in the host as soon as it runs.
See Getting Started for the rest, and Connecting Devices for physical devices and secure connections.
The debugging tools themselves are plugins. These ship with JetWhale — install one into the host
from its plugin catalog; for one that works inside your app, also add the matching artifact to your
app and register it in startJetWhale { }:
Plugins are ordinary Gradle projects built against the published SDK. One command gives you a hot-reload loop:
./gradlew :myPlugin:runJetWhaleHotIt downloads a real host for your OS, launches it with your plugin loaded, and reloads the plugin on every source change without restarting.
See Developing plugins for the full guide.