devices
List devices
List Android devices and emulators, running iOS simulators, and iPhones connected to this Mac.
Takes no parameters.

io.github.yagizdoPublished by GitHub account yagizdov0.4.0Updated Nov 4, 2026
Device automation for Android emulators and phones, iOS simulators and iPhones. No daemon.
Drives Android emulators and phones plus iOS simulators and iPhones on macOS: inspect the screen, tap, swipe, type, install and launch apps.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Follow the launch instructions in the repository.
This repository has no README.
List devices
List Android devices and emulators, running iOS simulators, and iPhones connected to this Mac.
Takes no parameters.
Take a screenshot
Save a full-resolution PNG of the screen and return its path with size, scale and safe area. Use ui_tree to read the screen; inline only to look at the image.
outdeviceinlineRead the UI tree
Return the focused window's accessibility tree as JSON, compact by default: nodes with no text, label or action and nodes off screen are left out. Node bounds [left, top, right, bottom] are the physical pixels tap and swipe take. On an iPhone it needs karagoz's runner: install it once with install_runner.
detaildeviceTap
Tap x, y in physical pixels, or the center of the node whose text or contentDesc (iOS: label or value) equals text, or whose resource id (iOS: identifier) matches id. An iPhone needs install_runner once.
xyidtextdevicetimeoutLong-press
Long-press x, y in physical pixels, or the center of the node whose text or contentDesc (iOS: label or value) equals text, or whose resource id (iOS: identifier) matches id. An iPhone needs install_runner once.
xyidtextdevicetimeoutdurationDouble-tap
Double-tap x, y in physical pixels, or the center of the node whose text or contentDesc (iOS: label or value) equals text, or whose resource id (iOS: identifier) matches id. An iPhone needs install_runner once.
xyidtextdevicetimeoutSwipe
Swipe from x1, y1 to x2, y2 in physical pixels. An iPhone needs install_runner once.
x1requiredx2requiredy1requiredy2requireddevicedurationType text
Type into the focused field. Any text; on Android, text beyond ASCII is pasted through the clipboard and the old clip put back. An iPhone needs install_runner once.
textrequireddevicePress a key
Press one key.
keyrequireddeviceInstall an app
Install an .apk, or a .app or .ipa on an iOS simulator or iPhone, or replace the installed version of the same app. An iPhone takes only a build signed for it; karagoz does not re-sign. Times out after 30 s plus 1 s per MB.
apkrequireddeviceLaunch an app
Start an app as its launcher icon does. On iOS it returns before the app is in front.
devicepackagerequiredOpen a URL
Open a URL in the app that handles it, or in the app named by app. On iOS it returns before the app is in front, and a simulator may first ask "Open in <app>?".
appurlrequireddeviceStop an app
Force-stop every process of an app.
devicepackagerequiredUninstall an app
Remove an app.
devicepackagerequiredRead device logs
Read the newest device log records, oldest first. On iOS without since: the last minute, or the last hour with package. An iPhone read takes about 10 s.
linessincedevicepackageCheck adb and Xcode
Report which adb and Xcode tools karagoz uses, their versions, and how to fix one that is missing, old or broken.
Takes no parameters.
Install karagoz's iPhone runner
Build karagoz's runner with your Apple team and install it on a paired iPhone over USB; ui_tree, tap, swipe, text and key need it there.
teamdeviceRemove karagoz's iPhone runner
Remove karagoz's runner and its provisioning profile from an iPhone.
device75% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.