# Artemis Control Artemis is the phone's **hands**. It drives the Pixel 8a screen from `.13` over Tailscale using **ADB wireless**, so the Hub can do things no deep link allows. The build spec is [`AGENTS.md`](AGENTS.md). Follow the phases in section 11 in order. ## Status | Phase | State | |---|---| | 1 — Prove the ADB link | ✅ proven — see [`docs/phase-1-adb-link.md`](docs/phase-1-adb-link.md) | | 2 — Act primitives | ✅ done — tap by text, type, scroll, back, home, launch | | 3 — Spotify recipe | not started | | 4 — Song radio | not started | | 5 — Maps recipe | not started | | 6 — Action API | not started | | 7 — Resilience | not started | | 8 — Documentation | not started | ## Layout ``` cmd/artemis/ command line entry point internal/adb/ timeout-bounded wrapper around the adb binary internal/ui/ read the screen (uiautomator dump) and act on it (input) docs/ phase evidence and notes ``` ## Build and test Go is not installed system-wide on `.13`; use a one-off nix shell. Nothing is added to `nixos-rebuild` and no system module changes. ```sh nix shell nixpkgs#go -c go build -o bin/artemis ./cmd/artemis nix shell nixpkgs#go -c go vet ./... nix shell nixpkgs#go -c go test ./... ``` ## Use The phone address defaults to `100.101.49.17`. Override with `ARTEMIS_PHONE`, pin a serial with `ARTEMIS_ADB_SERIAL`, or point at a different adb with `ARTEMIS_ADB`. ```sh ./bin/artemis connect # scan for the wireless-debugging port, then connect ./bin/artemis devices ./bin/artemis dump # text nodes and bounds ./bin/artemis launch com.spotify.music ./bin/artemis tap "Search" # find by text, tap its centre (FR-4) ./bin/artemis type "Rolling Stones Honky Tonk" ./bin/artemis scroll down ./bin/artemis back ./bin/artemis home ./bin/artemis demo # Phase 2 DoD: launch an app, tap a named element ``` ## Rules that the code enforces - **Find by text, never fixed coordinates.** `tap` resolves a text match to bounds and taps the centre. - **Never tap blindly.** A missing or disabled element is a loud failure, not a guessed coordinate. - **Wake first.** Every acting command wakes the screen (FR-7). - **Bound every command.** No adb call runs without a timeout (FR-11).