https://user-images.githubusercontent.com/your-github-id/videos/demo.mp4
Or watch below:
Linux-Link is a next-generation mobile remote control panel for your Linux machine. Secure, real-time, and feature-rich β combining terminal, file explorer, system monitor, voice commands, and GUI access in one app.
- π Secure JWT login & encrypted token storage
- π₯οΈ Terminal: Run commands, get real-time output, command history & autosuggest
- π System Monitor: Live CPU, RAM, disk, uptime stats
- π File Explorer: Browse, upload, download (coming soon)
- ποΈ Voice Commands: Control Linux with your voice (coming soon)
- π‘οΈ Audit logging, allowlist, sandboxed backend
- π± Modern Android UI (Jetpack Compose)
- πͺ Logout & automatic token expiry handling
git clone https://github.com/serrvarshan-xenoz/linux-link.git
cd linux-link/backend-api
pip install -r requirements.txt
uvicorn main:app --host 0.0.0.0 --port 8000Or with Docker Compose:
cd ..
docker-compose up --build- Open
/android-client/in Android Studio - Set your backend URL in the API service class
- Build & run on your device or emulator
For Backend:
- Python 3.10+
- pip (Python package manager)
- Docker & docker-compose (recommended)
- Linux system (Ubuntu, Arch, etc.)
For Android App:
- Android Studio (latest version)
- Android SDK (API level 24+)
- Java/Kotlin development environment
-
Clone the Repository
git clone https://github.com/serrvarshan-xenoz/linux-link.git cd linux-link/backend-api -
Create Virtual Environment (Recommended)
python -m venv venv source venv/bin/activate # On Linux/Mac # or # venv\Scripts\activate # On Windows
-
Install Dependencies
pip install -r requirements.txt
-
Set Environment Variables
export JWT_SECRET="$(python -c 'import secrets; print(secrets.token_urlsafe(32))')" export SAFE_MODE="true"
-
Run the Development Server
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
-
Clone and Navigate
git clone https://github.com/serrvarshan-xenoz/linux-link.git cd linux-link -
Update Environment Variables Edit
docker-compose.ymland change theJWT_SECRET:environment: - JWT_SECRET=${JWT_SECRET} - SAFE_MODE=true
-
Build and Run
docker-compose up --build
-
Open Project in Android Studio
- Launch Android Studio
- Select
File > Open - Navigate to
/android-client/directory - Click "Open"
-
Configure Backend URL
- Open
app/src/main/java/com/linuxlink/data/api/ApiService.kt - Update the
BASE_URLconstant:
private const val BASE_URL = "http://YOUR_BACKEND_IP:8000/" // Example: "http://192.168.1.100:8000/"
- Open
-
Sync Project
- Let Android Studio sync the project dependencies
- Wait for Gradle build to complete
-
Connect Device or Setup Emulator
- Physical Device: Enable USB debugging and connect via USB
- Emulator: Create an AVD with API level 24+ in AVD Manager
-
Build and Run
- Click the "Run" button (green play icon)
- Select your target device
- App will install and launch automatically
For Local Development:
- Ensure both devices are on the same network (WiFi/LAN)
- Find your backend server's IP:
ip addr showorifconfig - Use that IP in the Android app's
BASE_URL
For Testing:
- Backend URL format:
http://[IP_ADDRESS]:8000/ - Example:
http://192.168.1.100:8000/ - Test backend accessibility:
curl http://[IP]:8000/health
Common Issues:
| Problem | Solution |
|---|---|
| CORS errors | Ensure backend allows your app's origin |
| JWT token errors | Verify JWT_SECRET matches between backend and app |
| Network connection failed | Check devices are on same network, firewall settings |
| Permission denied (backend) | Run backend with appropriate user permissions |
| Android build errors | Clean project, invalidate caches, restart Android Studio |
| Dependencies not found | Run pip install -r requirements.txt again |
Debug Steps:
- Check backend logs:
docker-compose logsor terminal output - Verify API endpoints: Visit
http://[IP]:8000/docsfor Swagger UI - Check Android logcat for detailed error messages
- Ensure firewall allows port 8000
Testing Checklist:
- Backend starts without errors
- API documentation accessible at
/docs - Android app connects and logs in successfully
- JWT authentication working
- Terminal commands execute safely
- System monitoring displays real-time data
- Dangerous commands are blocked (test with
rm -rf /tmp/test) - Audit log captures all activities
- App handles network disconnections gracefully
Development Tips:
- Use
--reloadflag with uvicorn for hot-reloading during development - Check
audit.logfor debugging authentication and command execution - Use Android Studio's logcat for debugging mobile app issues
- Test with both safe and restricted commands to verify security
- File Explorer: Full-featured file management (list, upload, download, delete, preview)
- Voice Commands: Android STT integration, natural language command parsing
- Remote GUI: VNC/Waypipe/noVNC integration for full graphical access
- Task Automation: Macros, routines, and scheduled command execution
- Customizable Presets: User-defined quick command buttons
- Dark Mode & Theming: UI customization and power-saving mode
- Settings Screen: Backend URL, refresh rates, security options
- Push Notifications: System alerts, job completions, and critical events
- Multi-Server Support: Manage multiple Linux machines from one app
- Plugin/Extension System: Community-driven feature expansion
- Team/Collaboration Features: Shared command history, audit logs, multi-user access
- Open Source Community: Contribution guidelines, issue templates, and more
Pull requests and issues are welcome! See CONTRIBUTING.md for guidelines.
MIT β see LICENSE
Linux-Link is in active development. Star the repo and follow for updates!