1.3StartMarkdown
Where it runs
Web apps run on Macs and on Linux, x64 and arm64. iOS apps need a Mac with Xcode, and Android apps a Mac with the Android SDK. agentlane pins the browser it drives for each host, and on Linux doctor names any system library Chrome lacks. No Intel Mac has run agentlane yet, so that host is untested.
Hosts
| Host | Web app | iOS app | Android app |
|---|---|---|---|
| Mac, Apple silicon | Yes | Yes | Yes |
| Mac, Intel | Untested | Untested | Untested |
| Linux, x64 and arm64 | Yes | No | Not supported yet |
Every host needs Node 24 or newer and git. agentlane is a dev dependency of your project, and its commands run from the project's root as node_modules/.bin/agentlane.
Linux runs the web half of a project: a lane there holds ports, services, resources and a browser, and no device. That covers cloud agents and Linux machines. The browser builds for Intel Macs are pinned like the others, but no Intel Mac has run them.
Web apps
Nothing to install beyond Node. The first up --platform web downloads the pinned browser driver and its Chrome into agentlane's data folder. Browsers for web apps says what it fetches.
iOS
- macOS with Xcode and its command-line tools.
- At least one iOS simulator runtime, installed from Xcode.
claimpicks the newest one and the newest iPhone it supports, unless the config pins a device. - JDK 17 when the project drives its app (a
driverblock inagentlane.json), because Maestro runs on it. agentlane looks inAGENTLANE_JAVA_HOME, thenJAVA_HOME, then the JDK 17 that macOS or Homebrew knows about. - Whatever your build needs, such as CocoaPods. Name it in a precondition, so
upstops with the fix before a slow step.
Android
- The Android SDK with its emulator,
adb,avdmanagerand at least one system image. agentlane finds it atANDROID_HOME,ANDROID_SDK_ROOTor~/Library/Android/sdk. - JDK 17, for Maestro and for the build. The build hook runs with
JAVA_HOMEset to the JDK the build cache key names.
claim --platform android takes the pixel_8 profile and the newest installed Google APIs system image for the Mac's CPU unless the config says otherwise. Emulators run headless.
Linux system libraries
Chrome for Testing needs system libraries that slim images, such as node:24, leave out. doctor has a browser libraries check that names each missing library, such as libnss3.so, and gives Playwright's install command as its fix:
FAIL browser libraries: Chrome for Testing can't start without system libraries this machine lacks: libXcomposite.so.1, libXdamage.so.1, libXfixes.so.3, ...The fix runs install-deps chromium from agentlane's pinned Playwright, with sudo when you aren't root. up stops with the same message before it opens the browser. Hooks on Linux run with LANG and LC_ALL set to C.UTF-8, which glibc always has.
What agentlane downloads
On first use, agentlane downloads pinned builds into its data folder, ~/.local/share/agentlane/ (or $XDG_DATA_HOME/agentlane). Each download is checked against a sha256 that the package pins.
| What | When | From |
|---|---|---|
| agentlane's patched Maestro | the first look, run or up on a device | agentlane's GitHub releases |
| Playwright 1.64.0 | the first web up, or browser install | the npm registry |
| agent-browser 0.39.0 | the same, when the project picks it | the npm registry |
| Chrome for Testing and ffmpeg | with the driver | Playwright's CDN |
agentlane itself has no telemetry, and its Maestro build has Maestro's analytics, update check and error reporter taken out. The registry of lanes lives in ~/.local/state/agentlane/ (or $XDG_STATE_HOME/agentlane), and AGENTLANE_STATE_DIR moves it.