A modern web interface for managing iOS Simulator devices using xcrun simctl commands. Built with Node.js, Express, React, and Tailwind CSS.
- Create Devices: Add new simulator devices with custom names, device types, and runtimes
- Boot/Shutdown: Start and stop simulator devices
- Delete Devices: Remove unwanted simulator devices
- Reset Devices: Clear device content and settings
- Device Status: Real-time monitoring of device states
- Install Apps: Install .app files on simulator devices
- Launch Apps: Start applications on running devices
- Terminate Apps: Stop running applications
- Uninstall Apps: Remove applications from devices
- iOS Runtimes: View available iOS versions and capabilities
- Device Types: Browse hardware configurations (iPhone, iPad, Apple TV, Apple Watch)
- Device Creation: Create devices with specific hardware and iOS combinations
- Responsive Design: Works on desktop and mobile devices
- Real-time Updates: Live status updates and command execution
- Intuitive Navigation: Clean, organized interface with clear sections
- Loading States: Visual feedback for all operations
- macOS: This application runs on macOS and requires Xcode to be installed
- Node.js: Version 16 or higher
- Xcode Command Line Tools: Ensure
xcrunis available in your PATH
-
Clone the repository
git clone <repository-url> cd xcrun-webinterface
-
Install backend dependencies
npm install
-
Install frontend dependencies
cd client npm install cd ..
-
Start the backend server
npm run dev
The server will start on
http://localhost:5000 -
Start the frontend development server
cd client npm startThe React app will open in your browser at
http://localhost:3000
-
Build the frontend
npm run build
-
Start the production server
npm start
-
Access the application Open
http://localhost:5000in your browser
GET /api/devices- List all devicesPOST /api/devices/boot- Boot a devicePOST /api/devices/shutdown- Shutdown a devicePOST /api/devices/create- Create a new deviceDELETE /api/devices/:deviceId- Delete a devicePOST /api/devices/reset- Reset device contentPOST /api/devices/open- Open device in Simulator
POST /api/devices/install- Install an appPOST /api/devices/uninstall- Uninstall an appPOST /api/devices/launch- Launch an appPOST /api/devices/terminate- Terminate an app
GET /api/runtimes- List available runtimesGET /api/devicetypes- List available device types
# List all devices
xcrun simctl list devices
# Boot a device
xcrun simctl boot <device-id>
# Shutdown a device
xcrun simctl shutdown <device-id>
# Create a new device
xcrun simctl create "iPhone 15 Pro" "iPhone 15 Pro" "iOS 17.0"
# Delete a device
xcrun simctl delete <device-id># Install an app
xcrun simctl install <device-id> "/path/to/app.app"
# Launch an app
xcrun simctl launch <device-id> <bundle-id>
# Terminate an app
xcrun simctl terminate <device-id> <bundle-id>
# Uninstall an app
xcrun simctl uninstall <device-id> <bundle-id>xcrun-webinterface/
βββ server.js # Express server with API endpoints
βββ package.json # Backend dependencies
βββ client/ # React frontend
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ pages/ # Page components
β β βββ App.js # Main app component
β β βββ index.js # React entry point
β βββ public/ # Static assets
β βββ package.json # Frontend dependencies
β βββ tailwind.config.js # Tailwind CSS configuration
βββ README.md # This file
-
"xcrun: command not found"
- Ensure Xcode is installed and up to date
- Run
xcode-select --installto install command line tools
-
Permission denied errors
- Make sure the application has necessary permissions
- Check that your user has access to the simulator directories
-
Devices not showing up
- Verify that Xcode Simulator is working correctly
- Try running
xcrun simctl list devicesin terminal first
-
Port already in use
- Change the port in
server.jsor kill the process using the port - Use
lsof -i :5000to find what's using the port
- Change the port in
Enable debug logging by setting the environment variable:
DEBUG=* npm run dev- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For issues and questions:
- Check the troubleshooting section above
- Review the API documentation
- Open an issue on GitHub
- Real-time device monitoring
- Batch operations support
- Command history and logging
- Advanced device configuration
- Performance metrics
- Multi-user support
- API rate limiting
- Authentication system