0.77.0
triggerdotdev/trigger.dev0.77.0Jul 23, 2026by takahirom
AI Summary
Major release introducing iOS real-device support, upgrading the Maestro engine to 2.7, and adding a new CLI command for AI-driven reproduction steps.
Key Highlights
- iOS real-device support via CoreDevice/XCTest, iproxy, and devicectl
- New `arbigent instruction` command to generate AI-oriented reproduction steps
- Upgraded underlying automation engine from Maestro 1.40 to 2.7
- Added comprehensive reference documentation for Project YAML and CLI commands
New Features
- Physical iPhone automation capability
- AI-oriented step generation for scenarios
- Maestro 2.7 engine upgrade
- Reference documentation for YAML schema and CLI settings
Full Release Notes
## iOS Real Devices
Arbigent can now drive a **physical iPhone**, not just a simulator, over Apple's CoreDevice/XCTest stack. Device discovery, XCTest-runner signing, and USB port forwarding are all handled for you — a single connected, unlocked iPhone with `--os=ios` just works:
```bash
arbigent run --os=ios
```
For multiple connected devices, or when the signing team can't be auto-detected, pass the relevant options (they can also live in `.arbigent/settings.local.yml`):
```bash
arbigent run --os=ios \
--ios-xctest-apple-team-id=<TEAM_ID> \
--ios-real-device-id=<HARDWARE_UDID>
```
Under the hood Arbigent fills the gaps Maestro's consumable jars don't provide for real devices: a runner re-signed with your Apple team (built on demand with `xcodebuild build-for-testing -allowProvisioningUpdates`), `iproxy` port forwarding from host to device, and a `devicectl`-backed app-lifecycle controller. Any **Apple Development** identity works, including a **free Apple ID** (free profiles expire ~weekly, so re-run to rebuild/re-sign); the team id is treated as sensitive and masked in logs. The desktop UI lists connected physical iPhones alongside booted simulators so you can pick one explicitly.
**Prerequisites:** Xcode with the iOS platform matching your device (`xcodebuild -downloadPlatform iOS`), `iproxy` from libimobiledevice on your `PATH` (`brew install libimobiledevice`), and the device paired, trusted, and unlocked. See the "iOS real devices" section of the README for details.
## Reproduce a Scenario by Hand: `arbigent instruction`
When you want to reproduce a scenario on a device yourself instead of letting `arbigent run` drive it, the new `instruction` command prints AI-oriented, human-readable reproduction steps:
```bash
arbigent instruction --scenario-ids=open-about-page
```
It walks from the root dependency down to the target scenario, printing each step as a concrete goal plus its initialization (app launch, data cleanup), any human note, and verification checks. Reusable `uses`/`steps` calls are expanded with their `{{inputs.*}}` bindings already resolved, and any unresolved `{{...}}` placeholders are listed so you know what to supply with `run --variables`. Add `--include-app-ui-structure` to also print the project's app UI map.
## Reference Docs for Project YAML and the CLI
New reference documents describe the full project-YAML schema and every CLI command/option and settings key, so both humans and AI coding agents have a single authoritative source. The `arbigent guide` topics also now cover iOS real-device setup.
## Maestro 2.7
The underlying automation engine was upgraded from Maestro 1.40 to 2.7. Because Maestro stopped publishing its artifacts to Maven Central after 1.40, Arbigent now consumes 2.7 from the pinned official release artifact (verified by checksum) at build time. This is mostly an internal/build change, but it brings the newer Maestro engine behavior to all platforms (Android, iOS, Web).
## What's Changed
* Add instruction command to print AI reproduction steps for a scenario by @takahirom in https://github.com/takahirom/arbigent/pull/397
* Migrate to Maestro 2.7 consumed from the pinned release artifact by @takahirom in https://github.com/takahirom/arbigent/pull/398
* Add iOS real-device support via devicectl, signed XCTest runner, and iproxy by @takahirom in https://github.com/takahirom/arbigent/pull/399
* List physical iPhones in the UI and document iOS real-device support by @takahirom in https://github.com/takahirom/arbigent/pull/400
* Add project-YAML and CLI/settings reference docs by @takahirom in https://github.com/takahirom/arbigent/pull/401
* Thread iOS real-device config through discovery instead of a global singleton by @takahirom in https://github.com/takahirom/arbigent/pull/402
* Replace the coroutine dispatcher singleton with composition-root injection by @takahirom in https://github.com/takahirom/arbigent/pull/403
* Address CodeQL alerts: zip-slip guard and workflow token permissions by @takahirom in https://github.com/takahirom/arbigent/pull/404
**Full Changelog**: https://github.com/takahirom/arbigent/compare/0.76.1...0.77.0