AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻譯準備中
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.