20 debug tools in one library, zero lines in your release APK.
Inspect network traffic, monitor performance, browse databases, simulate locations, and more. Ships only in debug builds through Gradle's debugImplementation, so nothing reaches production.
Network inspection, system tools, and performance monitoring side by side:
Add JitPack to your settings.gradle.kts:
dependencyResolutionManagement {
repositories {
maven { url = uri("https://jitpack.io") }
}
}Add the dependencies in your app's build.gradle.kts:
dependencies {
implementation("com.github.azikar24.WormaCeptor:api-client:2.2.2")
debugImplementation("com.github.azikar24.WormaCeptor:api-impl-persistence:2.2.2")
}Initialize in your Application class:
import com.azikar24.wormaceptor.api.WormaCeptorApi
class App : Application() {
override fun onCreate() {
super.onCreate()
WormaCeptorApi.init(this)
}
}Add the interceptor to your OkHttp client:
import com.azikar24.wormaceptor.api.WormaCeptorInterceptor
val client = OkHttpClient.Builder()
.addInterceptor(WormaCeptorInterceptor())
.build()Open WormaCeptor from anywhere:
startActivity(WormaCeptorApi.getLaunchIntent(context))You can also enable the shake gesture with WormaCeptorApi.startActivityOnShake(activity). Using Ktor? See the Ktor guide.
Network — Intercept HTTP/HTTPS via OkHttp or Ktor, monitor WebSocket connections and WebView requests, export as cURL or JSON, throttle with the rate limiter
Performance — Track FPS, memory, and CPU in real time with a live overlay, catch memory leaks and StrictMode thread violations
System — Browse SQLite databases, edit SharedPreferences, inspect encrypted storage, explore files, view loaded native libraries and Gradle dependencies, read device info and logcat, capture crash reports
Testing — Fire test push notifications, manage FCM tokens, mock GPS locations, encrypt/decrypt and hash with the crypto tool
Every feature is its own module. Enable exactly what you need at init time, disable the rest. See Feature Toggles.
Your release APK never sees debug code. Here's why:
api-clientships in all build types. It contains only interfaces and a reflection-based lookup, no debug logic.api-impl-persistence(orapi-impl-imdb) ships only in debug viadebugImplementation. It registers itself through classpath discovery.- In release builds, no implementation exists on the classpath.
api-clientfalls back to a no-op automatically. No ProGuard rules, no runtime checks, no dead code.
More details in No-Op Behavior.
Strip credentials and PII before they hit the inspector.
val interceptor = WormaCeptorInterceptor()
.redactHeader("Authorization")
.redactJsonValue("password")
.redactXmlValue("apiKey")
.redactBody("ssn=\\d{3}-\\d{2}-\\d{4}")For global redaction that applies across all interceptors, use WormaCeptorApi.redactionConfig. See the Data Redaction guide.
Full docs at wormaceptor.com — Getting Started
- Installation & Requirements
- Ktor Client Plugin
- WebSocket Monitoring
- WebView Monitoring
- Launching the UI
- Performance Overlay
- Extension Providers
- Migrating from Chucker
- Troubleshooting
PRs welcome. To get started:
./gradlew build # Build everything
./gradlew spotlessApply # Format code
./gradlew :app:installDebug # Run the demo appMIT — see LICENSE.




