The portal
holtdroid
The api and web UI, the device providers, the agent that runs next to every device, the SSH gateway, the holtdroid client for your computer and the Helm chart.
Holtdroid launches Android on your Kubernetes for any APK from Slack, S3 or GitHub, and hands you the screen, Chrome DevTools for its WebViews, clipboard and a VPN of its own, in one tab.
Each device is yours alone, starts clean and goes back to the pool when you are done.
Remote debugging is switched on at runtime. The APK stays exactly as your team shipped it.
Switch the exit location mid-session, next to the screen.
Bounded slots, an idle timeout and a max TTL.
Android runs in containers, several per node, with ARM translation.
No root, no Wi-Fi: the phone's traffic goes over the cable.
Video, logcat, network and console on one timeline, with markers where things went wrong.
The DNS log and the routes behind each name: far servers, missing names, connections that aren't reused. Point a name at staging without a rebuild.
What a screen downloads for nothing, too big or in an old format, and icons with extra digits.
Swap sources, devices, VPN, secrets and sign-in. No vendor lock-in.
Six repositories, each doing one job. Use them together, or take only the piece you need.
Sync jobs copy APKs from Slack, S3 and GitHub releases.
Lists apps, hands out slots, proxies screen and DevTools.
Android in containers, or real phones on USB.
Screen, DevTools, files, logcat and recordings.
The portal
The api and web UI, the device providers, the agent that runs next to every device, the SSH gateway, the holtdroid client for your computer and the Helm chart.
Android images
redroid, Android in a container, prepared for sessions: one image per Android version, with ARM64 translation for ARM-only builds.
Where builds come from
Jobs that copy APKs from Slack channels, S3 buckets and GitHub releases into Holtdroid's sources, with icons and changelogs.
Network for real phones
A VpnService that sends all of a phone's traffic over USB to the host, so a USB phone gets the session's country without root or Wi-Fi.
Test browser
An Android WebView playground with DevTools unlocked, presets of WebView settings and adb control. Works without Holtdroid too.
Browser versions on demand
Chromium and WebView for Android built from release tags with proprietary codecs, to reproduce a bug on the exact version it was reported on.
Try the whole UI on your laptop with simulated devices, then install one Helm chart on your cluster.
# simulated devices on :8080 $ git clone https://github.com/holtdroid/holtdroid $ cd holtdroid && mise install $ make dev
# values.yaml: see Installation $ helm install holtdroid \ oci://ghcr.io/holtdroid/charts/holtdroid \ -n holtdroid -f values.yaml