AndroArch is a modular, high-fidelity cyberpunk OS ecosystem designed for "Hacker Nomads". It turns your phone into a portable sub-OS client while your laptop/tablet acts as the primary Neural Node.
AndroArch is divided into three distinct modules:
- 🛰️ The Server (Neural Node):
- Node.js backend.
- Handles P2P message routing (Neural Link).
- Proxies "Goolag" searches and YouTube streams.
- Monitors system vitals (CPU, RAM).
- 📱 The Client (Mobile Sub-OS):
- React + Tailwind + Framer Motion.
- High-fidelity mobile UI with Arch Linux aesthetics.
- Features: Messenger, MusicPlayer, Camera, Goolag Web, Youtube (TubeArch), Weather, and Terminal.
- 🖥️ The Admin (Command Center):
- Dedicated monitoring dashboard.
- Real-time node statistics and global emergency broadcasts.
AndroArch requires the Server, Client, and Admin to be running simultaneously.
Run this in the root directory to install all dependencies for all modules:
- Linux:
chmod +x scripts/linux/setup.sh && ./scripts/linux/setup.sh - Windows: You must manually run
npm installinside the/server,/client, and/adminfolders.
Double-click the dev.cmd file at the root. It will open three terminal windows automatically:
- Node Server (Port 3000)
- OS Client (Port 5173 - Exposed to network)
- Admin Panel (Port 5174)
chmod +x scripts/linux/launcher.sh
./scripts/linux/launcher.shTo use your phone as the primary interface, follow these steps:
Both the PC and the Phone MUST be on the same local network.
- Recommended: Turn on your phone's Mobile Hotspot and connect your laptop to it.
By default, Windows blocks incoming connections.
- Go to
scripts/win/ - Right-click
fix_connectivity.batand select "Run as Administrator". - This opens ports 3000, 5173, and 5174.
If you don't know your PC's IP address:
- Run
scripts/win/check_ip.bat. - It will display a list of IPs. Look for the one that looks like
10.141.12.xor192.168.x.x.
Open your phone's browser and type the URL shown by the script, for example:
http://10.141.12.4:5173
- Frontend: React 19, Vite, TailwindCSS v3, Framer Motion, Lucide Icons.
- Backend: Node.js, Express, Socket.io, Systeminformation.
- APIs: Open-Meteo (Weather), DuckDuckGo (Goolag Proxy), ytsr/ytdl (YouTube Proxy).
AndroArch can run on Android using Termux, turning your phone into a portable sub-node.
- Termux must be installed from F-Droid, not Google Play.
- Android devices have limited CPU/RAM compared to PCs.
- Running Server + Client + Admin simultaneously may cause lag.
- The Admin panel is optional and can be disabled to improve performance.
- Android device
- Termux (F-Droid version)
- Node.js (installed via Termux)
- Git
pkg update && pkg upgrade pkg install git nodejs iproute2
Clone the repository:
git clone https://github.com/softpython2884/AndroArch.git cd AndroArch
Install dependencies:
npm install cd server && npm install cd ../client && npm install cd ../admin && npm install cd ..
If you encounter missing dependencies (e.g. lucide-react):
cd admin npm install lucide-react cd ..
AndroArch includes a dedicated Termux launcher to run multiple services simultaneously.
- 📁 Location:
scripts/termux/launcher.sh
Make the script executable:
chmod +x scripts/termux/launcher.sh- 🔥 Full Mode (Server + Client + Admin):
./scripts/termux/launcher.sh no-admin
./scripts/termux/launcher.sh
Run the launcher and look for the "Local IP" line:
./scripts/termux/launcher.shExample output:
📡 Local IP: [IP_ADDRESS]
Open your phone's browser (Chrome, Firefox, etc.) and enter:
http://[IP_ADDRESS]
If the connection fails:
- Ensure Termux is installed from F-Droid
- Check that your phone and PC are on the same Wi-Fi network
- Some Android versions block background services - try running in Performance Mode (no-admin)
- Disable battery optimization for Termux
./scripts/termux/launcher.sh no-adminEdit client/src/App.jsx and change:
const QUALITY_OPTIONS = [
{ label: "4K", value: 2160 },
{ label: "2K", value: 1440 },
{ label: "1080p", value: 1080 },
{ label: "720p", value: 720 },
{ label: "480p", value: 480 },
{ label: "360p", value: 360 },
{ label: "240p", value: 240 },
{ label: "144p", value: 144 }
];To:
const QUALITY_OPTIONS = [
{ label: "720p", value: 720 },
{ label: "480p", value: 480 },
{ label: "360p", value: 360 },
{ label: "240p", value: 240 },
{ label: "144p", value: 144 }
];Edit client/src/App.jsx and change:
<AnimatePresence>to:
<>