Herdr UI
Herdr의 TUI가 뛰어나며, 창을 통해 추가되는 기능
Android용 강력한 파일·앱·시스템 검사기, 파일·앱·데이터베이스·소켓·센서·시스템 내부까지 한 번에 빠르게 확인
A powerful file, app & system inspector for Android. Everything on the device - files, apps, databases, sockets, sensors, system internals - in one fast, modern app.
개발 도구Kotlin · C++GitHub @sromku직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
설치형 프로젝트는 배포 도메인 없이도 확인할 수 있습니다. 개인 저장소는 GitHub 로그인으로, 조직 저장소는 위의 저장소 확인 파일로 직접 확인해 주세요.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A powerful file, app, and system inspector for Android - grown from the 2017
android-storage library, which still ships underneath. Browse a phone like a file
manager, then keep going: inspect apps and APKs, read providers and databases, watch the intents and
broadcasts moving through the system, reclaim space - and drive the whole thing from an AI agent over
HTTP and MCP.
Kotlin · Jetpack Compose · Apache 2.0 · Full feature tour with screenshots →README 전문 보기 ↗A powerful file, app, and system inspector for Android - grown from the 2017
android-storage library, which still ships underneath. Browse a phone like a file
manager, then keep going: inspect apps and APKs, read providers and databases, watch the intents and
broadcasts moving through the system, reclaim space - and drive the whole thing from an AI agent over
HTTP and MCP.
Kotlin · Jetpack Compose · Apache 2.0 · Full feature tour with screenshots →
android-storage began in 2017 as a small Java wrapper over java.io.File. Maintenance ended,
jcenter died, and it was archived while Android moved on a decade of API levels. It returns now as
something new: an app that spans everything from browsing your files to heavy, privileged, low-level
work - and a companion for building and validating your own apps. The library stays underneath,
rewritten in Kotlin, but the point now is the app, built for the AI age: everything it does is exposed
over an HTTP and MCP API so agents can drive the device directly.
Depending on how much access you grant it, the app spans a lot of ground:
.ARW from the sensor (exposure, tone curve, HSL, presence,
effects) and exports JPEG, 16-bit TIFF or an archival DNG; focus peaking, clipping warnings,
histogram and deep EXIF; plus camera sync over Wi-Fi FTP / PTP / USB, duplicate finder and library insights.The same engine behind the screens is a local server: 54 operations over REST (/api/v1/{op})
and MCP (/mcp), behind a bearer token and two safety gates (shell tools, device changes) - both off
by default, with an audit log.
adb forward tcp:8484 tcp:8484
curl -s localhost:8484/api/v1/apps -H "Authorization: Bearer $TOKEN"
Nothing is faked - each capability is honest about what it needs, and the app works at every tier.
| Capability | Needs |
|---|---|
| Browse your own app dirs, inspect any APK, list apps & components | none |
| All of shared storage, per-app storage sizes | permission (MANAGE_EXTERNAL_STORAGE, usage access) |
Other apps' Android/data, debuggable-app private files, logcat, pm/am/appops, dumpsys | Shizuku (shell UID over ADB) |
Any app's private /data/data, non-exported providers, partitions & swap | root |
Starting Shizuku. Enable Wireless debugging (Settings → Developer options), then in the Shizuku app tap Start via Wireless debugging - no computer needed. Non-root Shizuku stops on every reboot, so restart it after each restart; the app already holds the grant, so it reconnects on its own. (The permission is tied to the app's signature, so re-grant once after switching between the debug and Play builds.)
com.snatik:storage lives on as a thin, typed Kotlin module. Every operation returns Result<T>
(failures are a StorageException); calls block, so wrap them in withContext(Dispatchers.IO).
val storage = Storage(context)
val file = "${storage.externalStorageDirectory}/notes.txt"
storage.createFile(file, "first line")
storage.appendLine(file, "second line")
storage.readTextFile(file).onSuccess { println(it) }
// AES-256-GCM, hardware-backed key that never leaves the device
val secure = Storage(context, Encryption.fromKeystore("my-files"))
Encryption uses a fresh random nonce per file, so identical content never produces identical bytes.
Requires minSdk 28.
Everything the UI can do is reachable from core, which is what the HTTP/MCP API calls:
core/fs - file-system abstraction, volumes, operations, the disk scannercore/apps - package inspection and the binary XML decodercore/data - provider queries, the SQLite inspector, the preferences codeccore/intents - intent model, sender, broadcast monitor, deep-link parserscore/capture - Room database, snapshots, diffs and the recording enginecore/net - the Ktor server, peer discovery and the transfer clientcore/shell - the privilege layer and a ShellExecutor with plain, Shizuku and root backendsapp is Compose only, with Navigation 3, Koin and Coil. The Shizuku binder is hand-written Kotlin -
no AIDL, no generated Java. Roadmap in docs/PLAN.md.
JDK 17+ and the Android SDK (platform 37).
./gradlew :app:installDebug
Apache 2.0 - see LICENSE.