github Swift re-analysis due

Kasempiternal/agentcontroller

github

Native app QA automation for AI agents over MCP — drive and test macOS, Windows, and iOS apps in the background, without stealing your focus or cursor

maintainer
Kasempiternal
license
Apache-2.0
first seen
2026-08-09
last seen
2026-09-01
releases · 30d
1
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 36 tools
transport stdio · http counts 36 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • boot_simulator
  • describe_screen
  • device_action
  • device_actions
  • dismiss_keyboard
  • get_clipboard
  • get_device_info
  • get_execution_context
  • get_orientation
  • get_screenshot
  • handle_alert
  • install_app
  • launch_app
  • list_apps
  • list_devices
  • lock_screen
  • open_url
  • read_alert
  • scan_ui
  • send_push
  • set_appearance
  • set_clipboard
  • set_content_size
  • set_location
  • set_orientation
  • set_permission
  • set_status_bar
  • setup_device
  • shutdown_simulator
  • start_recording
  • stop_recording
  • tap_element
  • terminate_app
  • uninstall_app
  • unlock_screen
  • wait_for_element
code evidence vv2.5.0 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 104

filesystem 6

  • fs Kasempiternal-agentcontroller-276f84d/iOS/src/cli.ts :3 import { existsSync, mkdirSync, readFileSync, writeFileSync, symlinkSync, rmSync } from 'fs'
  • fs Kasempiternal-agentcontroller-276f84d/iOS/src/idb/companion-client.ts :2 import { existsSync } from 'fs'
  • fs Kasempiternal-agentcontroller-276f84d/iOS/src/idb/idb-client.ts :5 import { writeFile, unlink } from 'fs/promises'
  • fs Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :3 import { promises as fs, readFileSync } from 'node:fs'
  • fs Kasempiternal-agentcontroller-276f84d/iOS/src/paths.ts :1 import { existsSync } from 'fs'
  • fs Kasempiternal-agentcontroller-276f84d/iOS/src/wda/wda-manager.ts :3 import { existsSync, mkdirSync } from 'fs'

shell / exec 9

  • shell Kasempiternal-agentcontroller-276f84d/iOS/src/child-env.ts :3 import { execFileSync } from 'node:child_process'
  • shell Kasempiternal-agentcontroller-276f84d/iOS/src/cli.ts :7 import { exec, execSync } from 'child_process'
  • shell Kasempiternal-agentcontroller-276f84d/iOS/src/execution-context.ts :1 import { execFile } from 'child_process'
  • shell Kasempiternal-agentcontroller-276f84d/iOS/src/idb/ax-scan-client.ts :1 import { spawn, type ChildProcess, execFile } from 'child_process'
  • shell Kasempiternal-agentcontroller-276f84d/iOS/src/idb/companion-client.ts :1 import { spawn, type ChildProcess } from 'child_process'
  • shell Kasempiternal-agentcontroller-276f84d/iOS/src/idb/idb-client.ts :1 import { spawn, type ChildProcess, execFile } from 'child_process'
  • shell Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :6 import { execFile, spawn, type ChildProcess } from 'node:child_process'
  • shell Kasempiternal-agentcontroller-276f84d/iOS/src/wda/device-discovery.ts :1 import { exec } from 'child_process'
  • shell Kasempiternal-agentcontroller-276f84d/iOS/src/wda/wda-manager.ts :1 import { spawn, type ChildProcess, exec } from 'child_process'

network 2

  • net Kasempiternal-agentcontroller-276f84d/iOS/src/viewer/server.ts :2 import { createServer, type Server } from 'node:http'
  • net Kasempiternal-agentcontroller-276f84d/iOS/src/wda/wda-client.ts :85 const response = await fetch(url, options)

tool registrations 36

  • describe_screen Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :195
  • device_action Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :236
  • device_actions Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :361
  • get_screenshot Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :482
  • scan_ui Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :564
  • list_devices Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :619
  • get_execution_context Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :646
  • setup_device Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :738
  • launch_app Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :821
  • list_apps Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :853
  • open_url Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :905
  • terminate_app Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :930
  • install_app Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :955
  • uninstall_app Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :979
  • get_clipboard Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1003
  • set_clipboard Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1025
  • wait_for_element Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1050
  • get_orientation Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1113
  • set_orientation Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1136
  • start_recording Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1162
  • stop_recording Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1206
  • tap_element Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1238
  • read_alert Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1308
  • handle_alert Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1331
  • dismiss_keyboard Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1358
  • lock_screen Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1381
  • unlock_screen Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1404
  • get_device_info Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1427
  • send_push Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1473
  • set_location Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1501
  • set_permission Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1534
  • set_appearance Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1563
  • set_status_bar Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1587
  • set_content_size Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1633
  • boot_simulator Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1660
  • shutdown_simulator Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1686

declared dependencies 11

  • @modelcontextprotocol/sdk@^1.12.1
  • @grpc/grpc-js@^1.14.4
  • @grpc/proto-loader@^0.8.1
  • express@^5.1.0
  • ws@^8.18.3
  • zod@^3.23.0
  • @types/express@^5.0.0
  • @types/node@^22.0.0
  • @types/ws@^8.5.0
  • typescript@^5.7.0
  • unix-dgram@^2.0.7

clipboard 1

  • clipboard shell call Kasempiternal-agentcontroller-276f84d/iOS/src/idb/idb-client.ts :497 const { stdout } = await execFileAsync('xcrun', ['simctl', 'pbpaste', resolvedUdid], { env: childEnv(), timeout: SIMCTL_TIMEOUT_MS })