Manage your Azure Linux VMs from your iPhone.
Azlin Mobile PWA provides full VM management capabilities through a Progressive Web App that installs on your iPhone home screen. No backend server required - the app communicates directly with Azure REST APIs using your Azure credentials.
- VM Management: Create, start, stop, delete, and monitor VMs
- Tmux Integration: View tmux session snapshots and send commands without keeping connections open
- Private IP Support: Works with VMs behind Azure Bastion (no public IPs needed)
- Cost Tracking: Real-time cost monitoring and budget alerts
- Installable: Add to iPhone home screen for native app experience
- Offline-Ready: Service worker caching for instant loads
Zero-Config Experience: If ye've configured azlin already, the PWA sets itself up automatically!
# Clone and install
git clone https://github.com/rysweet/azlin.git
cd azlin/pwa
npm install
# Zero-config start (if azlin is configured)
npm start
# ✓ Automatically pulls config from Azure CLI and azlin
# ✓ Only CLIENT_ID needs manual setup (one-time)
# Manual config (if needed)
cp .env.example .env
# Edit .env with your Azure credentials
# Build for production
npm run buildWhat happens automatically:
- Tenant ID and Subscription ID from
az account show - Bastion configuration from
~/.azlin/config.json - Clear feedback showing where each value came from
What needs one-time manual setup:
- Azure AD Client ID (requires app registration - see Getting Started)
Visit on your iPhone and tap "Add to Home Screen".
Azlin Mobile PWA is a React-based Progressive Web App that:
- Authenticates using Azure AD OAuth2 (device code flow for mobile)
- Communicates directly with Azure REST APIs (no backend server)
- Executes commands via Azure Run Command API
- Monitors tmux sessions through periodic snapshots
- Caches data locally using IndexedDB and service workers
For detailed architecture, see Architecture Documentation.
- Getting Started - Installation and authentication setup
- Features Guide - Complete feature documentation with examples
- Architecture - Technical architecture and API integration
- Deployment - Deploy to Azure Static Web Apps
- iOS 16+ or iPadOS 16+ (for PWA support)
- Node.js 18+ (for development)
- Azure subscription with VM permissions
- Azure Bastion (recommended for private IP VMs)
- All authentication uses Azure AD OAuth2
- No passwords stored locally
- Refresh tokens secured in iOS Keychain (via PWA)
- Azure RBAC controls VM access
- All API calls use HTTPS
MIT License - see LICENSE for details.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: https://rysweet.github.io/azlin