Android logcat viewer for Desktop (macOS, Windows, Linux)
- Logcat Viewer: Real-time Android logcat monitoring with filtering
- Log Bookmark: Bookmark important log lines for quick navigation
- Network Interceptor: Inspect HTTP traffic from Android apps in real-time with mock API support
- Screenshot Capture: Take device screenshots and save to local directory
- Screen Recording: Record device screen to MP4 video
- DeepLink Execution: Execute and manage deeplink history
- Scrcpy Integration: Launch scrcpy for device mirroring and control
- Theme Settings: Switch between IslandsDark and DarkModern themes
- JDK 21 or higher
- Android SDK with ADB installed
- scrcpy (optional, for device mirroring feature)
The application automatically searches for ADB in the following locations:
$ANDROID_HOME/platform-tools/adbor$ANDROID_SDK_ROOT/platform-tools/adb~/Library/Android/sdk/platform-tools/adb(macOS)/usr/local/bin/adb/opt/homebrew/bin/adb(macOS with Homebrew)- System PATH
Recommended Setup (macOS):
Add to your ~/.zshrc or ~/.bash_profile:
export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/platform-toolsThen restart your terminal or run source ~/.zshrc
For device mirroring and control feature, install scrcpy:
macOS (Homebrew):
brew install scrcpyWindows: Download from scrcpy releases
Linux:
sudo apt install scrcpy # Debian/UbuntuThe application automatically searches for scrcpy in common installation paths.
LogMeow includes a network interceptor library that captures HTTP traffic from your Android app and displays it in the desktop tool's Network Inspector.
Add the dependency to your Android app:
OkHttp:
// build.gradle.kts
debugImplementation("io.groovin.logmeow:network-interceptor-okhttp:<version>")
releaseImplementation("io.groovin.logmeow:network-interceptor-no-op:<version>")Ktor:
// build.gradle.kts
debugImplementation("io.groovin.logmeow:network-interceptor-ktor:<version>")
releaseImplementation("io.groovin.logmeow:network-interceptor-no-op:<version>")OkHttp:
val client = OkHttpClient.Builder()
.addInterceptor(LogMeowInterceptor(context))
.build()Ktor:
val client = HttpClient {
install(LogMeowPlugin) {
context = applicationContext
}
}// OkHttp
LogMeowInterceptor(
context = context,
mockSupportType = MockSupportType.ALWAYS, // ALWAYS, CONNECTED_ONLY, DISABLED
port = LogMeow.DEFAULT_PORT // default: 10087
)
// Ktor
install(LogMeowPlugin) {
context = applicationContext
mockSupportType = MockSupportType.ALWAYS
port = LogMeow.DEFAULT_PORT
}LogMeow desktop app communicates with the Android device via ADB reverse port forwarding. The app handles this automatically, but if you need manual setup:
adb reverse tcp:10087 tcp:10087The Network Inspector includes a Mock API feature that lets you define mock responses for specific endpoints directly from the desktop tool. Mock settings are synced to the Android app in real-time.
./gradlew run./gradlew packageDmgOutput: build/compose/binaries/main/dmg/LogMeow-{version}.dmg
./gradlew packageMsiOutput: build/compose/binaries/main/msi/LogMeow-{version}.msi
./gradlew packageDebOutput: build/compose/binaries/main/deb/logmeow_{version}-1_amd64.deb
./gradlew packageDistributionForCurrentOS./gradlew createDistributableOutput: build/compose/binaries/main/app/
src/main/kotlin/
├── adb/ # ADB service and data models
├── data/ # Data models (settings)
├── di/ # Dependency injection
├── network/ # Network interceptor server
├── repository/ # Data persistence
├── ui/ # UI components
│ ├── common/ # Common UI components
│ ├── icons/ # Custom icons
│ └── theme/ # Theme system
└── vm/ # ViewModels
interceptor-api/ # Shared API contract and DTOs
interceptor-core/ # Shared interceptor logic (protocol, client, mock settings)
interceptor-okhttp/ # OkHttp interceptor implementation
interceptor-ktor/ # Ktor client plugin implementation
interceptor-no-op/ # No-op implementation for release builds
- Kotlin
- Jetpack Compose for Desktop
- Koin (Dependency Injection)
- Kotlinx Coroutines
Copyright 2026 gaiuszzang (Mincheol Shin)
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


