A modern, feature-rich mobile app for monitoring and managing your Unraid servers
Features • Installation • API Permissions • Documentation • Contributing • Support
Parity is an open-source, cross-platform mobile application that brings comprehensive Unraid server management to your iOS and Android devices. Built with React Native and Expo, it provides real-time monitoring, intuitive controls, and powerful notifications—all wrapped in a beautiful, native mobile interface.
While Unraid 7.2+ offers a responsive web interface, Parity delivers a superior mobile experience with:
- Native Push Notifications - Get instant alerts for critical events
- Optimized Mobile UX - Purpose-built for touch interfaces
- Biometric Security - Face ID/Touch ID support
- Real-time Monitoring - Live server metrics at your fingertips
- Dark Mode - Beautiful light and dark themes
- Offline Support - View cached data when disconnected
- Multi-Server - Manage multiple Unraid servers from one app
- System Dashboard - CPU, RAM, network, disk I/O, and temperatures
- Array Status - Disk health, parity status, and capacity monitoring
- Smart Notifications - Get alerted to issues before they become critical
- View all containers with status and resource usage
- Start, stop, and restart containers
- Monitor container logs
- Quick access to container WebUIs
- View VM status and resource allocation
- Start, stop, pause, and resume VMs
- Monitor VM resource usage
- Critical alerts (disk failures, high temps, server offline)
- Warning notifications (high resource usage, container crashes)
- Configurable quiet hours
- Per-server notification settings
- API key-based authentication
- Encrypted credential storage
- Biometric authentication support (Face ID, Touch ID, Fingerprint)
- No telemetry or data collection
- Local-only data storage
- Node.js 18+ (Download)
- pnpm (recommended) or npm/yarn
npm install -g pnpm
- Expo CLI
npm install -g expo-cli
- Unraid Server with OS v6.12+ (v7.2+ recommended)
-
Clone the repository
git clone https://github.com/yourusername/parity.git cd parity -
Install dependencies
pnpm install
-
Start the development server
pnpm start
-
Run on your device
- iOS: Press
ior scan the QR code with the Camera app - Android: Press
aor scan with the Expo Go app - Web: Press
wto open in browser (limited functionality)
- iOS: Press
-
Generate an API key on your Unraid server:
unraid-api apikey --create
-
Save the API key - You'll need it to connect the app
-
Ensure the Unraid API is running:
systemctl status unraid-api
-
Configure firewall (if needed) to allow connections on port 3001
When creating your API key, you need to grant the following permissions for Parity to function properly:
| Permission | Description | Used For |
|---|---|---|
info |
System Information | Dashboard: CPU, memory, OS info, uptime, hostname, kernel version |
metrics |
System Metrics | Real-time CPU & RAM usage charts |
array |
Array Status | Disk health, parity status, array capacity, boot device info |
shares |
Share Information | Display share sizes and usage |
vars |
Server Variables | Server name and Unraid version |
registration |
License Info | Display license type and status |
docker |
Docker Management | List containers, view status, start/stop containers |
vms |
VM Management | List virtual machines, view status, start/stop VMs |
notifications |
Notifications | View and manage server notifications |
These permissions enable control features. Without them, you can still monitor but not control:
| Permission | Description | Used For |
|---|---|---|
array.setState |
Array Control | Start/Stop the array from the app |
docker.start |
Start Containers | Start Docker containers |
docker.stop |
Stop Containers | Stop Docker containers |
vm.start |
Start VMs | Start virtual machines |
vm.stop |
Stop VMs | Stop virtual machines |
Option 1: Full Access (Recommended for personal use)
unraid-api apikey --create --name "Parity App" --description "Mobile app access"Option 2: Specific Permissions (For restricted access)
unraid-api apikey --create --name "Parity App" \
--scope info \
--scope metrics \
--scope array \
--scope shares \
--scope vars \
--scope registration \
--scope docker \
--scope vms \
--scope notificationsIf you see errors like "Permission denied" or certain features don't work:
-
Check your API key permissions:
unraid-api apikey --list
-
Delete and recreate with proper permissions:
unraid-api apikey --delete --name "Parity App" unraid-api apikey --create --name "Parity App"
-
Verify API is running:
systemctl status unraid-api systemctl restart unraid-api # If needed
- Launch the app
- Enter your server details:
- Server Name: A friendly name (e.g., "Home Server")
- Server IP/Hostname: Your Unraid server address (e.g.,
192.168.1.100:3001) - API Key: The key generated in the previous step
- Tap "Connect" to validate and save
The main dashboard displays:
- System uptime and Unraid version
- Real-time CPU and RAM usage
- Network activity
- Array status
- Active containers and VMs
Pull down to refresh or enable auto-refresh in settings.
- Tap the server name in the header to switch between servers
- Add multiple servers in Settings → Manage Servers
- Remove or edit server configurations anytime
Configure notifications in Settings → Notifications:
- Choose which alert types to receive
- Set quiet hours for Do Not Disturb
- Customize notification sounds
Parity follows a clean, modular architecture:
src/
├── components/ # Reusable UI components
│ └── ui/ # Base design system components
├── config/ # App configuration
├── gql/ # GraphQL types and utilities
├── graphql/ # GraphQL queries and mutations
├── hooks/ # Custom React hooks
├── lib/ # Third-party integrations (Apollo Client)
├── providers/ # Context providers (Auth, Theme, Apollo)
├── screens/ # Screen components
├── services/ # Business logic layer
├── types/ # TypeScript type definitions
└── utils/ # Helper functions
- React Native & Expo - Cross-platform mobile framework
- TypeScript - Type-safe development
- Apollo Client - GraphQL data management
- GraphQL Code Generator - Auto-generate TypeScript types
- AsyncStorage - Secure local storage
- Expo Router - File-based navigation
- Product Requirements Document - Complete product vision and specifications
- Architecture Guide - Technical architecture deep-dive
- Contributing Guide - How to contribute to Parity
- API Reference - Unraid GraphQL API integration
- Troubleshooting - Common issues and solutions
- Changelog - Version history and updates
pnpm start # Start Expo development server
pnpm android # Run on Android device/emulator
pnpm ios # Run on iOS simulator
pnpm web # Run in web browser
pnpm lint # Run ESLint
pnpm codegen # Generate GraphQL TypeScript typesTo generate TypeScript types from your Unraid GraphQL schema:
-
Set environment variables:
export UNRAID_SCHEMA_URL=http://YOUR_IP:3001/graphql export API_KEY=your_api_key
-
Run code generation:
pnpm codegen
# Run unit tests (coming soon)
pnpm test
# Run integration tests (coming soon)
pnpm test:integration# Build with EAS
eas build --platform ios
# Or build locally
pnpm ios --configuration Release# Build APK with EAS
eas build --platform android
# Or build locally
pnpm android --variant=releaseSee the Expo EAS Build documentation for detailed instructions.
We welcome contributions from the community! Whether it's:
- Bug reports and fixes
- New features and enhancements
- Documentation improvements
- UI/UX refinements
Please read our Contributing Guide to get started.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Unraid Forums
- Discord (Coming soon)
Found a bug? Have a feature request? Please open an issue with:
- A clear, descriptive title
- Steps to reproduce (for bugs)
- Expected vs. actual behavior
- Screenshots (if applicable)
- Your environment (device, OS version, app version)
Powered by:
- Expo - React Native platform
- Apollo Client - GraphQL client
- GraphQL Code Generator - Type generation
- Unraid API - Official Unraid API
Inspired by:
- unMobile by s3ppo
- The amazing Unraid community
- Real-time dashboard
- Docker container management
- VM control
- Multi-server support
- Push notifications
- Dark mode
- Historical performance graphs
- Plugin management
- File browser (read-only)
- Multi-language support
- Apple Watch & Wear OS support
- Automation & scheduled actions
See our full roadmap for more details.
If you find Parity useful, please consider giving it a star on GitHub! It helps others discover the project.
Made with care for the Unraid Community