The visual IDE for Maestro tests.
Inspect, build and run flows locally from one desktop window.
Download · Website · Docs · FAQ · Discussions
Maestro Deck mirrors your device, lets you click on an element to get a selector, and runs the flow with each step lit up as it executes. You write tests by using your app instead of guessing at selectors.
- Android, iOS and Web — USB phones, emulators, iOS simulators and Chromium, from the same window.
- Local first. Everything runs on your machine, and no account is needed. Anonymous usage statistics are strictly opt-in — see Privacy and usage statistics.
- Zero setup. On first launch the app installs Java, the Maestro CLI (2.10.0) and ADB in its own folder.
- Native and light. Built on Tauri 2 (Rust + system webview), not Electron.
- Source-available under BUSL-1.1. It becomes Apache-2.0 on 2030-05-15.
- Live device mirror. Low-latency scrcpy stream for Android, ScreenCaptureKit for iOS simulators, CDP screencast for the web.
- Drive the device from the preview: tap, swipe, type, Home and Back.
- Inspector with element overlay and smart selectors (
id→text→content-desc→ point), portable between Android and iOS. - One device picker for everything: phones plugged into this machine, simulators, the web browser, device-farm phones and cloud devices, filterable by source and type. Plugged-in phones and booted simulators show up on their own, and a simulator boots in one click.
- YAML editor (CodeMirror) with Maestro syntax highlighting and autocomplete for every command, dark mode commands from Maestro 2.9 included.
- Insert from the inspector: pick an element and an action, and the step lands at your cursor.
- One-click run with a live console: the gutter follows each step, failures point to the line that broke, and you can switch between a simple view and raw logs.
- Run all over a workspace, with a file tree, folders and a right-click menu.
- Image bank. Store baselines from
takeScreenshot, compare later runs against them and review side-by-side diffs. Tolerances live in Settings → Visual Regression.
- A chat agent that sees the screen and acts on it. It can read the hierarchy, take screenshots, tap and type, launch apps, read and write flows, and run them to fix a failing test.
- Works with your Maestro Deck account (no key needed, voice input included), or bring your own key: Anthropic or Google Vertex AI.
- Sign in to run flows on hosted devices: an Android emulator, an iOS simulator, or a real phone from the device farm. All of them sit in the same device picker as your local devices.
- Live preview of the remote device while the flow runs, with clear results.
- The label next to Run always tells you whether a flow runs locally or in the cloud, and a session bar under the device header shows the farm phone you're connected to.
- Your Account page shows your plan and the device-farm minutes left, live.
- Guided first test with a sample app, auto-update with release notes, native macOS menu bar, dark and light themes, and custom tool paths in Settings → Toolchain for locked-down machines.
| Target | Status |
|---|---|
| Android (USB, emulator) | ✅ Stable, Android 8.0 (API 26)+ with USB debugging |
| iOS simulator | ✅ Stable, macOS with Xcode |
| Web (Chromium) | 🧪 Beta, turn it on in Settings → Devices & Performance |
| Physical iPhone |
| Desktop OS | Build |
|---|---|
| macOS 12+ | Apple Silicon (.dmg, signed and notarized) |
| Windows 10+ | x64 (.msi / .exe) |
| Linux | Not packaged yet, build from source |
- Download the installer for your OS from Releases.
- Launch it. The first-run setup installs Java, Maestro and ADB. Progress shows next to Run. Already have them? The app finds the ones on your
PATH, or you can point to them in Settings → Toolchain. - Connect a device: plug in an Android phone with USB debugging on, start an emulator, or boot an iOS simulator. It appears in the device picker.
- Follow the guided first test, or open a folder of flows and press Run.
Requires Node 20+, pnpm 10+, Rust (via rustup) and the Tauri 2 prerequisites.
git clone https://github.com/BlueShork/maestro-deck.git
cd maestro-deck
pnpm install
pnpm tauri:devBuild a release bundle:
pnpm tauri:buildInstallers are written to src-tauri/target/release/bundle/.
Useful checks before a PR: pnpm lint, pnpm typecheck, pnpm test, and cargo test in src-tauri/.
A single-window Tauri 2 app. The React + TypeScript frontend handles the UI (device canvas, inspector, editor, console, Billy). The Rust backend does the device work: ADB and a bundled scrcpy server for Android, ScreenCaptureKit and simctl for iOS simulators, and long-lived maestro mcp sessions for the inspector, input and live preview. Flows run through the Maestro CLI.
React (webview) <── IPC ──> Rust (Tauri) ──> ADB / scrcpy ──> Android
──> simctl / SCK ──> iOS simulator
──> maestro mcp / CDP ──> Chromium
──> maestro test ──> any target
More details in docs/ARCHITECTURE.md. Release notes are in CHANGELOG_EN.md.
Contributions of any size are welcome.
- Good first issues
- Discussions
- CONTRIBUTING.md for setup and the PR process
- Code of Conduct
Contributions are accepted under a Contributor License Agreement. For security issues, see SECURITY.md.
Maestro Deck is licensed under the Business Source License 1.1. Copyright 2026 Ethan Morisset.
- The source is public: you may read, copy, modify and redistribute it.
- You may use Maestro Deck in production for the internal business operations of your organization (Additional Use Grant in the LICENSE).
- You may not offer it as a hosted or embedded service to third parties, or sell it (original or modified) as, or as part of, a commercial product. Those uses need a commercial license. Contact the author.
- On 2030-05-15 the license automatically becomes Apache-2.0.
BUSL-1.1 is a source-available license (not OSI-approved), like the ones used by Sentry, MariaDB, CockroachDB and HashiCorp.
On first launch, Maestro Deck asks whether you want to share anonymous usage statistics. Nothing is sent unless you say yes, and you can change your mind at any time in Settings → Privacy.
These statistics exist for one reason: Maestro Deck is built by an independent developer, and they are the only way to know how many people use it, on which platforms, and which features matter — so we can decide what to build next. They are not used to track, profile or advertise to anyone, and they are never sold or shared.
- Collected: app version, operating system, a random install ID (not tied to your machine or account), and usage — screens opened, device platform connected, runs finished (passed / failed / stopped), inspector opened, Billy message sent, cloud run started, image bank check.
- Never collected: flow contents, file paths, selectors, app IDs, screenshots, device names or serials, prompts or anything you type, your name, email or Maestro Deck Cloud account.
- Where: PostHog EU Cloud (servers in the European Union), the same analytics used on maestrodeck.cloud. No person profiles are created, and development builds never report.
Every event the app can send is listed in src/lib/telemetry.ts. Details are in the privacy policy.
Maestro Deck™ is a trademark of Ethan Morisset, filed with the French INPI on 2026-05-19 (application n°5259782, Nice classes 9 and 42, under examination).
Maestro Deck is an independent project. It is not affiliated with, endorsed by, or sponsored by mobile.dev Inc., the maintainers of Maestro. "Maestro" is used only to describe interoperability, and related marks belong to their owners.
Maestro Deck is published by Ethan Morisset, entrepreneur individuel registered in France. The desktop app runs locally. Anonymous usage statistics and signing in to Maestro Deck Cloud are both optional and covered by the policies below.
Mentions légales · Terms of use (CGU) · Terms of sale (CGV) · Privacy · Cookies
Thanks to everyone who has contributed code, issues, ideas and feedback. This project is shaped by its contributors.

