A cross-platform, open-source workshop for Android devices over ADB.
Droidsmith is the spiritual successor to ADB AppControl — a modern, cross-platform GUI for managing Android devices through ADB, without root, without a closed-source binary, without paywalled features.
Functional early desktop build. The Tauri shell builds and runs; shipped routes cover device readiness, wireless ADB pairing/connect, package inventory and actions, atomic APK/APKS/XAPK/APKM installation with guarded failure remedies, package backups, audited permission/device-control mutations, reviewed shell mutations, journal undo, debloat queue recovery, scrcpy launch and session supervision, cancellable background shell/backup/file operations, incremental Logcat streaming and export, live cross-route device hot-plug updates, ADB server/mDNS/Wi-Fi 2.0 health with audited guided recovery, and fastboot inspection. A local-only Diagnostics center previews and saves redacted support bundles with tool/OS/ADB health, failed-operation records, and crash excerpts; it never uploads data and can wipe disposable local diagnostic history.
Current blockers are tracked separately in Roadmap_Blocked.md: signed release pipeline, bundled platform-tools wiring, UAD-NG redistribution, crash-log upload infrastructure, and the future plugin API/marketplace. Remaining actionable work lives in ROADMAP.md; release notes live in CHANGELOG.md; design rationale is summarized in RESEARCH_REPORT.md.
ADB AppControl is the closest thing the Windows ecosystem has to a polished ADB front end, but it has hard limits that an open project can fix:
| ADB AppControl 1.8.6 | Droidsmith | |
|---|---|---|
| Source | Closed | MIT, public on GitHub |
| Platforms | Windows only (.NET 4.6+) | Windows, macOS, Linux |
| Free tier | Core only — dark theme, Process Manager, batch ops are sponsor-gated | All features always free |
| Debloat lists | Static, underperforms Universal Android Debloater per user reports | Versioned YAML packs and vendor quirks; UAD-NG import is blocked on redistribution permission |
| Screen mirror | Virtual buttons + screenshots | System scrcpy launch/supervision with per-device presets; bundled scrcpy remains planned |
| Wireless ADB | Manual adb pair in console |
First-class pairing UI (Android 11+) |
| Automation | None | YAML profiles + headless CLI for reproducible device actions |
| Extensibility | None | Versioned local pack, quirk, and profile schemas; plugin API and marketplace are deferred |
| i18n | EN + RU | i18next-driven, contributor-friendly |
| Multi-device | One at a time | Device selector and per-device workflows; side-by-side device tabs remain planned |
- Tauri 2 — Rust core + native webview, single-binary distribution (~10 MB vs Electron's ~100 MB)
- React + TypeScript + Vite — frontend
- ADB shell transport — typed Rust wrappers around the platform-tools
adbbinary, with direct parser coverage for device/package/process/file transcripts - scrcpy on PATH — detected and supervised for mirror/control sessions
- Versioned YAML packs, quirks, and profiles — packaged as Tauri resources for local linting and reproducible actions
- Tailwind — dark-first route surfaces
- i18next — translations
Bundled platform-tools and bundled scrcpy are not wired into the installer yet;
that work is held with release signing in Roadmap_Blocked.md.
The current extension surface is schema-only: this build accepts schema version
"1" for packs, quirks, and profiles and rejects future revisions with a
migration hint. The plugin API and marketplace remain deferred in
Roadmap_Blocked.md.
See RESEARCH_REPORT.md for the rationale and the
alternatives considered.
Droidsmith/
src-tauri/ Rust backend, Tauri commands, ADB domain, CLI binary
src/ React + TS frontend
packs/ Community debloat packs (YAML)
quirks/ Vendor failure explanations and mitigations (YAML)
scripts/ Local development, resource, and sidecar helpers
docs/ Development notes and screenshots
ROADMAP.md
Roadmap_Blocked.md
CHANGELOG.md
RESEARCH_REPORT.md
- ROADMAP.md - active and planned roadmap items.
- Roadmap_Blocked.md - work paused on external blockers.
- CHANGELOG.md - shipped roadmap history and release notes.
- RESEARCH_REPORT.md - research summary and archive index.
npm run format:check
npm run lint
npm run typecheck
npm test
npm run security:audit
npm run ui:smoke
npm run release:smokenpm run security:audit runs npm audit plus the Rust dependency gate
(cargo audit --deny warnings, which requires cargo install cargo-audit).
npm run ui:smoke starts Vite with mocked Tauri IPC and checks sidebar
navigation, command palette focus, Apps action overlays, Debloat queue results,
ADB health/recovery review, the redacted Diagnostics preview/save/wipe flow,
the split-package install and explicit override-confirmation flow, cross-route
disconnect/reconnect behavior, incremental Logcat reconnect/cancel behavior,
and mobile/narrow overflow.
npm run release:smoke builds the frontend and Tauri bundle, checks bundled
resource metadata, validates third-party notices, and fails if expected local
installer artifacts are missing.
Locale files live in src/locales/<code>.json. Keep each locale's key tree
identical, add new supported language codes in src/lib/i18n.ts, and include
language selector labels under language.*. Run npm test -- src/lib/i18n.test.ts
before submitting translation changes; it checks English/Russian parity and
navigation key coverage.
Use docs/DEVELOPMENT.md for local setup and verification. Before proposing a new feature, check ROADMAP.md and Roadmap_Blocked.md so blocked signing, sidecar, redistribution, and plugin work does not get duplicated.
MIT — see LICENSE.


