Whether you're a solo dev with multiple repos or a team scaling CI, SAIR gives you real device testing without the headaches.
GitHub only lets orgs share runners across repos. As an individual dev, you need a runner per repo — and they all fight for the same phones. Set up the Proxy and DeviceSource once and SAIR coordinates device access so every repo on every runner gets its turn.
Works with your existing ./gradlew connectedCheck. No test rewrites, no new APIs, no vendor lock-in.
Use your own hardware. Repurpose old phones or buy used devices. No per-minute billing surprises.
Test APKs and artifacts never leave your network. Only job metadata flows through the orchestrator.
Scoped ADB ports give each CI runner exclusive device access. No conflicts between parallel jobs.
Opt any of your devices into the shared fleet and every SAIR user can test on it. In return you can lock fleet devices you don't own. Your devices stay private by default, and when one is shared you still get priority on it. Sharing a signed-in phone asks you to confirm its accounts first, and the share pauses if a new account appears.
Run Renovate and Dependabot PRs at a lower priority with sair-acquire --priority -1. When devices are busy, the PRs your team is working on go ahead of queued bot jobs, and the bots pick up the slack.
Reserve a phone from its device page while you debug on it locally, with a note saying why. CI skips it until you release it back, with no host config changes or restarts.
No CI needed: an agent uploads the app and test APKs with your API key, and SAIR installs them on one of your phones (or a fleet phone), runs the instrumentation, and returns the result. Or it can lease a phone to install, run shell commands, take screenshots and read logcat across several calls.
Invite teammates by email. They see your devices, jobs and API keys and can create keys of their own, while billing and device sharing stay with you.
Your dashboard shows what ran where, how your phones are doing, and how to debug a failure.
Each job links back to its CI run and records every ADB command it ran on the device, with shell output streamed live while the job runs. Turn on screen capture to get screenshots or video of the phone during the job.
See which phones are online, busy or offline, their Android version and last check-in, a 7-day utilization chart, every connect and disconnect, Wi-Fi join failures, and the last failed acquire with its cause.
Every job across all your repos: pass or fail, which device it ran on, and how long it took.
We run the orchestrator. You keep your devices and your data.
Your CI jobs call sair-acquire to lock a device, run tests with stock adb, then sair-release. No SDK changes needed.
DeviceSource runs on the machine with USB devices and reports them to the Proxy. The Proxy relays ADB traffic and coordinates locks with the Orchestrator. All CI runners share the same Proxy.
Manages device locks and coordination so multiple CI jobs never collide on the same device.
These open-source projects run connectedCheck on real devices through SAIR in their CI pipelines.
Kotlin Android starter with library + app modules, JaCoCo coverage, and instrumented tests.
Java Android starter with lint, unit tests, and on-device instrumented tests.
Kotlin Multiplatform ICMP library with Android instrumented tests that need real network access.