Open source · Apache-2.0 · pre-alpha

Android test devices,
right in your browser

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.

Features

Everything a tester needs, nothing to install

Each device is yours alone, starts clean and goes back to the pool when you are done.

Chrome DevTools for every WebView

Remote debugging is switched on at runtime. The APK stays exactly as your team shipped it.

A country per device

Switch the exit location mid-session, next to the screen.

Sessions that clean up

Bounded slots, an idle timeout and a max TTL.

ARM apps on x86 nodes

Android runs in containers, several per node, with ARM translation.

Real phones over USB

No root, no Wi-Fi: the phone's traffic goes over the cable.

Record a bug, share one link

Video, logcat, network and console on one timeline, with markers where things went wrong.

See every lookup and connection

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.

Heavy images and SVG icons

What a screen downloads for nothing, too big or in an old format, and icons with extra digits.

Pluggable by contract

Swap sources, devices, VPN, secrets and sign-in. No vendor lock-in.

Open source

From a Slack message to a device in your tab

Six repositories, each doing one job. Use them together, or take only the piece you need.

  1. Builds come in

    Sync jobs copy APKs from Slack, S3 and GitHub releases.

    holtdroid-syncchromium-builds
  2. The portal

    Lists apps, hands out slots, proxies screen and DevTools.

    holtdroid
  3. Devices

    Android in containers, or real phones on USB.

    holtdroid-redroidholtdroid-tunnelholtdroid-webview
  4. Your browser

    Screen, DevTools, files, logcat and recordings.

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.

Go · React · HelmDocs

Android images

holtdroid-redroid

redroid, Android in a container, prepared for sessions: one image per Android version, with ARM64 translation for ARM-only builds.

Container image · AndroidDocs

Where builds come from

holtdroid-sync

Jobs that copy APKs from Slack channels, S3 buckets and GitHub releases into Holtdroid's sources, with icons and changelogs.

Go · Slack · S3 · GitHubDocs

Network for real phones

holtdroid-tunnel

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.

Kotlin · Android appDocs

Test browser

holtdroid-webview

An Android WebView playground with DevTools unlocked, presets of WebView settings and adb control. Works without Holtdroid too.

Kotlin · Android appDocs

Browser versions on demand

chromium-builds

Chromium and WebView for Android built from release tags with proprietary codecs, to reproduce a bug on the exact version it was reported on.

APK · x86_64 · arm64Docs
Get started

Give your testers a cozy holt

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