Content
# AutoGo Daemon (ObjC) — Rootless
iOS comprehensive device control daemon, pure Objective-C native implementation. Compatible with **Dopamine** and other **Rootless jailbreaks**, running in `/var/jb` environment, providing **HTTP REST API** and **MCP protocol** dual interfaces.
Integrated with [ios-mcp](https://github.com/witchan/ios-mcp) and [go-ios](https://github.com/danielpaulus/go-ios) full features, and provides 50+ MCP Tools for AI Agent.
> **Architecture**: `iphoneos-arm64` (Rootless) · **Minimum iOS**: 15.0 · **Port**: 8888
---
## 📱 Dashboard App
After installation, **AutoGo** app icon will be visible on SpringBoard. Click to open and view:
- **Service status**: real-time detection of daemon activation (green/red status indicator)
- **Device information**: device model, iOS version, IP address
- **Quick operations**: one-click to open web console, API documentation
- **Auto-refresh**: auto-detect service status every 10 seconds
Built-in **Web console** (`http://device IP:8888`) provides complete dark theme dashboard.
---
## Features
| Module | Function |
|------|------|
| 🖐 **Touch gestures** | tap, swipe, longpress, drag, multi-touch, swipe path |
| ⌨️ **Hardware keys** | Home, Power, Volume Up/Down, Mute, Siri, combo keys |
| ✍️ **Text input** | text input, key press events, clipboard paste |
| 📸 **Screenshot** | PNG/JPEG screenshot, GPU layer capture, scaling |
| 📱 **App management** | install/uninstall ipa, launch/terminate App, list installed Apps |
| ♿ **Accessibility** | AssistiveTouch, element tree acquisition, element click, attribute reading |
| 📋 **Clipboard** | read/write system clipboard |
| 📁 **File system** | file list, read/write, delete, directory creation |
| 📝 **System log** | syslog reading, process list, crash log |
| 🔧 **Device control** | reboot/shutdown/logout, lock, flashlight, vibration, dark mode |
| 📶 **WiFi** | WiFi switch/scan/connect (MobileWiFi private framework) |
| 🔒 **VPN** | IKEv2 VPN creation/management/connect/disconnect |
| 💻 **Shell** | arbitrary command execution, timeout control, environment variables |
| 🌐 **URL** | URL Scheme open, browser jump |
| 📐 **Device information** | model, iOS version, screen, battery, storage, network, time, region, language |
| 🤖 **MCP protocol** | JSON-RPC 2.0, tools/list, tools/call, 50+ Tools |
---
## API Overview (60+ endpoints)
### Accessibility
```
GET /api/accessibility/tree # Get element tree
POST /api/accessibility/element/click # Click element
POST /api/accessibility/element/set # Set element value
POST /api/assistive-touch/enable # Enable AssistiveTouch
POST /api/assistive-touch/disable # Disable AssistiveTouch
```
### App management
```
GET /api/apps/list # List all Apps
POST /api/apps/launch # Launch App
POST /api/apps/kill # Terminate App
POST /api/apps/install # Install ipa
POST /api/apps/uninstall # Uninstall App
```
### Clipboard
```
GET /api/clipboard/get # Read clipboard
POST /api/clipboard/set # Set clipboard
```
### Device information & control
```
GET /api/device/info # Complete device information
GET /api/device/screen # Screen information
GET /api/device/battery # Battery details
GET /api/device/storage # Storage usage
GET /api/device/processes # Process list
POST /api/device/flashlight # Flashlight
POST /api/device/vibrate # Vibrate
POST /api/device/screenshot # Screenshot
POST /api/device/reboot # Reboot
POST /api/device/shutdown # Shutdown
POST /api/device/lock # Lock screen
POST /api/device/setlang # Set language
POST /api/device/setlocale # Set region
POST /api/device/settime # Set time
POST /api/url/open # Open URL
```
### File system
```
GET /api/files/list # List files
POST /api/files/read # Read file
POST /api/files/write # Write file
POST /api/files/delete # Delete file
```
### Hardware keys
```
POST /api/hid/press # Key press
POST /api/hid/home # Home key
POST /api/hid/power # Power key
POST /api/hid/volume/up # Volume up
POST /api/hid/volume/down # Volume down
POST /api/hid/mute # Mute
POST /api/hid/siri # Siri
POST /api/hid/type # Text input
```
### Shell
```
POST /api/shell/exec # Execute command
GET /api/syslog # Get syslog
GET /api/logs # Get crash log
```
### Touch gestures
```
POST /api/touch/tap # Tap
POST /api/touch/doubletap # Double tap
POST /api/touch/longpress # Long press
POST /api/touch/swipe # Swipe
POST /api/touch/drag # Drag
POST /api/touch/path # Path swipe
POST /api/touch/multitouch # Multi-touch
```
### VPN
```
POST /api/vpn/create # Create IKEv2 VPN
POST /api/vpn/connect # Connect
POST /api/vpn/disconnect # Disconnect
GET /api/vpn/status # Status
GET /api/vpn/list # List existing
POST /api/vpn/delete # Delete
```
### WiFi
```
GET /api/wifi/status # WiFi status
POST /api/wifi/toggle # Toggle WiFi
GET /api/wifi/scan # Scan networks
POST /api/wifi/connect # Connect to network
```
### MCP protocol
```
POST /mcp # JSON-RPC 2.0 MCP protocol
tools/list # List all 50+ Tools
tools/call # Call arbitrary Tool
```
---
## Compilation
### Method 1: GitHub Actions (recommended)
Push code to GitHub and automatically compile. Download `com.autogo.daemon-[sha].deb` product from Actions page.
### Method 2: macOS local compilation
```bash
# Install theos
git clone https://github.com/theos/theos.git ~/theos
# Compile
cd autogo-daemon-objc
export THEOS=~/theos
make package
# DEB package in packages/ directory
```
### Method 3: clang manual compilation (without theos)
```bash
bash build.sh
```
---
### Install to iOS device (Rootless)
```bash
# Upload DEB
scp build/com.autogo.daemon_1.0.0_iphoneos-arm64.deb root@<device IP>:/var/root/
# SSH to device and install
ssh root@<device IP>
dpkg -i /var/root/com.autogo.daemon_1.0.0_iphoneos-arm64.deb
# Manually start (auto-start after installation)
launchctl load /var/jb/Library/LaunchDaemons/com.autogo.daemon.plist
# Verify
curl http://localhost:8888/health
```
### Install via Sileo/Zebra
Add repository to package manager (or directly install DEB). Search `AutoGo Daemon` and install. Package marked as `iphoneos-arm64`, compatible with Rootless environment.
---
## Usage examples
### REST API
```bash
# Health check
curl http://<device IP>:8888/health
# Get device information
curl http://<device IP>:8888/api/device/info
# Screenshot
curl -X POST http://<device IP>:8888/api/device/screenshot \
-H "Content-Type: application/json" \
-d '{"format":"png"}' > screenshot.png
# Tap coordinates
curl -X POST http://<device IP>:8888/api/touch/tap \
-H "Content-Type: application/json" \
-d '{"x":300,"y":500}'
# Swipe
curl -X POST http://<device IP>:8888/api/touch/swipe \
-H "Content-Type: application/json" \
-d '{"fromX":100,"fromY":800,"toX":100,"toY":200,"duration":0.3}'
# Return to home screen
curl -X POST http://<device IP>:8888/api/hid/home
# Launch App
curl -X POST http://<device IP>:8888/api/apps/launch \
-H "Content-Type: application/json" \
-d '{"bundleId":"com.apple.mobilesafari"}'
# Execute Shell command
curl -X POST http://<device IP>:8888/api/shell/exec \
-H "Content-Type: application/json" \
-d '{"command":"uptime"}'
```
### MCP protocol (AI Agent call)
```bash
# List all tools
curl -X POST http://<device IP>:8888/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
# Call tool - screenshot
curl -X POST http://<device IP>:8888/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc":"2.0",
"method":"tools/call",
"params":{
"name":"screenshot",
"arguments":{}
},
"id":2
}'
```
---
## Daemon management
```bash
# Load (auto-start on boot)
launchctl load /var/jb/Library/LaunchDaemons/com.autogo.daemon.plist
# Unload
launchctl unload /var/jb/Library/LaunchDaemons/com.autogo.daemon.plist
# View logs
tail -f /var/mobile/Documents/autogo/logs/daemon.log
# View status
curl http://localhost:8888/health
```
---
## Project structure
```
autogo-daemon-objc/
├── .github/workflows/build.yml # GitHub Actions CI/CD (Rootless)
├── .gitignore
├── Makefile # theos compilation configuration (rootless scheme)
├── build.sh # clang manual compilation script
├── README.md
├── DEBIAN/
│ ├── control # DEB package metadata (iphoneos-arm64)
│ ├── postinst # Post-install script (Rootless)
│ └── prerm # Pre-uninstall script
├── Library/LaunchDaemons/
│ └── com.autogo.daemon.plist # Daemon configuration (var/jb path)
├── app/ # Dashboard App (visible on SpringBoard)
│ ├── main.m # App entry
│ ├── AGAppDelegate.h/m # App interface (service status/device information)
│ └── Info.plist # App metadata
└── src/ # Objective-C source code
├── main.m # Entry
├── AGJSON.h/m # JSON serialization
├── AGHTTPServer.h/m # BSD socket HTTP server
├── AGRouter.h/m # API routing distribution
├── AGDeviceInfo.h/m # Device information & control
├── AGTouchController.h/m # IOKit HID touch
├── AGAppController.h/m # App management
├── AGFileController.h/m # File system
├── AGVPNController.h/m # VPN control
├── AGWiFiController.h/m # WiFi control
├── AGShellController.h/m # Shell command
├── AGClipboardController.h/m # Clipboard
├── AGAccessibilityController.h/m # Accessibility
├── AGHIDController.h/m # Hardware keys
└── AGMCPHandler.h/m # MCP protocol (50+ Tools)
```
## Rootless adaptation instructions
This project has completed **Dopamine / Rootless** adaptation:
| Project | Modification |
|------|------|
| `Architecture` | `iphoneos-arm` → `iphoneos-arm64` |
| Installation path | `/usr/bin/` → `/var/jb/usr/bin/` |
| LaunchDaemon | `/Library/` → `/var/jb/Library/` |
| User data | `/var/mobile/Documents/autogo/` (no /var/jb prefix) |
| Minimum iOS | 13.0 → 15.0 |
| DEB package name | `*_iphoneos-arm64.deb` |
| Default port | 8090 → **8888** |
| Dashboard App | None → **SpringBoard visible App + Web console** |
---
## Protocol and license
Pure Objective-C implementation, no third-party dependencies. Runs as root LaunchDaemon on Rootless jailbroken device (`/var/jb`), port 8888.
MCP Config
Below is the configuration for this MCP Server. You can copy it directly to Cursor or other MCP clients.
mcp.json
Connection Info
You Might Also Like
No recommendations available