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, package backups, journal undo, debloat queue recovery, scrcpy launch and session supervision, shell/logcat/file utilities, and fastboot inspection.
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 ui:smoke
npm run release:smokenpm run ui:smoke starts Vite with mocked Tauri IPC and checks sidebar
navigation, command palette focus, Apps action overlays, Debloat queue results,
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.


