Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Android leases over HTTP give no adb serial: udid is the AVD name

Open Beginner friendly
#817 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
78/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
android, typescript
Domain
api, backend

Research direction

Read src/http/tracker.ts around line 71 and the device schema in src/contract/schemas.ts around lines 211 and 272; compare the lease response with the CLI’s device.address output. Check the Android driver fields around lines 918 and 948 to confirm the serial source. Done when the HTTP lease object exposes the device address, including the adb serial on Android, and the response contract reflects it.

Written by the indexing model from the issue text.

Description

bug:new
What happened

A lease granted over the HTTP API gives no way to reach an Android emulator with adb. The lease object's udid is the device's driver id (device.driverDeviceId, src/http/tracker.ts:71). For an Android emulator that is the AVD name (simlock_<uuid>), not the adb serial (emulator-5554) that adb -s needs. No HTTP response carries the serial: the lease object has no address field, although the contract's device record has one (src/contract/schemas.ts:211,272) and the CLI's lease line includes device.address.

So a remote agent that leases an Android device over HTTP cannot run adb -s <serial> … through POST /v1/leases/{id}/exec without first running adb devices and then adb -s <serial> emu avd name on each serial to find its own. iOS is not affected, because a simulator's driver id and its address are both the UDID.

What you expected

The HTTP lease object names the address to point tools at (the adb serial on Android, the UDID on iOS), the same value the CLI prints as device.address.

How to reproduce
  1. On a worker with Android set up and HTTP on, create an agent token: simlock token create --role agent.
  2. curl -X POST http://127.0.0.1:4701/v1/lease-requests -H "Authorization: Bearer <secret>" -H 'Content-Type: application/json' -d '{"platform":"android","model":"Pixel 8"}', then wait until the request is granted.
  3. Look at the lease object: udid is simlock_…, and no field holds emulator-5554.
  4. Compare simlock lease --platform android --device "Pixel 8" --detach, whose device.address is the serial.
Environment

main at 4cc44f82. Found while writing the website's "Remote agents over HTTP" page (PR #816), which documents the adb devices workaround.

Logs and evidence
  • src/http/tracker.ts:71: udid: device.driverDeviceId
  • src/drivers/android/index.ts:948: a running emulator's address is running.serial; :918: its deviceId is the AVD name.

Written by an agent.

Dominant language
TypeScript
Stars
20
Forks
2
Avg merge
8h
Merged PRs (30d)
316

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from callstackincubator/simlock

All issues in callstackincubator/simlock

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.