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.