Initial: DroidFleet Visor — Android Cloud Hypervisor

This commit is contained in:
2026-08-11 04:36:15 +00:00
parent ea8a248cb8
commit fd53e41bf2
3 changed files with 91 additions and 14 deletions

View File

@@ -1,20 +1,85 @@
<div align="center">
<img width="1200" height="475" alt="GHBanner" src="https://ai.google.dev/static/site-assets/images/share-ais-513315318.png" />
</div>
# DroidFleet Visor 🤖
# Run and deploy your AI Studio app
Cloud virtualization platform for deploying, managing, and renting Android virtual devices with custom bootloaders, root access, and interactive ADB screen streaming.
This contains everything you need to run your app locally.
## Features
View your app in AI Studio: https://ai.studio/apps/4a310be8-e39a-4b78-b317-f2fffa484015
- **VM Fleet Management** — Deploy, start, stop, and monitor Android VMs
- **Custom Bootloaders** — Unlock bootloaders, root with Magisk, custom recovery, SELinux control
- **Screen Streaming** — Real-time VNC/ADB screen viewer with touch interaction
- **Proxy Management** — Per-VM proxy configuration with rotation support
- **App Automation** — Instagram, Gmail, Facebook app views with programmatic control
- **MCP API Studio** — REST API for external tool integration
- **ADB Console** — Direct ADB shell access from the browser
- **Device Profiles** — Pre-configured Pixel, Samsung, OnePlus device templates
## Run Locally
## Tech Stack
**Prerequisites:** Node.js
- **Frontend**: React 19 + TypeScript + TailwindCSS 4 + Vite
- **Backend**: Express + TypeScript
- **Icons**: Lucide React
- **Animations**: Motion (Framer Motion)
- **AI**: Google Generative AI integration
## Quick Start
1. Install dependencies:
`npm install`
2. Set the `GEMINI_API_KEY` in [.env.local](.env.local) to your Gemini API key
3. Run the app:
`npm run dev`
```bash
# Install dependencies
npm install
# Development (with HMR)
npm run dev
# Production build
npm run build
# Start production server
npm start
```
Server runs on `http://localhost:3000`.
## API Endpoints
| Method | Path | Description |
|--------|------|-------------|
| `GET` | `/api/vms` | List all Android VMs |
| `POST` | `/api/vms` | Deploy a new VM |
| `GET` | `/api/vms/:id` | Get VM details |
| `POST` | `/api/vms/:id/start` | Start a VM |
| `POST` | `/api/vms/:id/stop` | Stop a VM |
| `DELETE` | `/api/vms/:id` | Destroy a VM |
| `GET` | `/api/vms/:id/screen` | Screen stream (WebRTC) |
| `POST` | `/api/vms/:id/adb` | Execute ADB command |
| `GET` | `/api/subscription` | Get subscription status |
| `POST` | `/api/subscription` | Update subscription |
## Architecture
```
┌─────────────────────────────────────┐
│ React Frontend (Vite + Tailwind) │
│ HypervisorConsole · ScreenViewer │
│ ProxyManager · McpApi · ADB │
└──────────────┬──────────────────────┘
│ REST API
┌──────────────┴──────────────────────┐
│ Express Server (TypeScript) │
│ In-Memory VM Database │
│ Subscription Management │
└──────────────┬──────────────────────┘
┌──────────────┴──────────────────────┐
│ Android VMs (QEMU/KVM) │
│ Custom bootloaders · Root access │
│ ADB · VNC · WebRTC streaming │
└─────────────────────────────────────┘
```
## License
MIT
---
☕ [Buy me a coffee](https://buymeacoffee.com/r26xrthzttg)

View File

@@ -4,7 +4,7 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>DroidFleet Visor</title>
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🤖</text></svg>" />
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🤖</text></svg>" />
</head>
<body>
<div id="root"></div>

12
vite.config.ts Normal file
View File

@@ -0,0 +1,12 @@
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import tailwindcss from '@tailwindcss/vite'
export default defineConfig({
plugins: [react(), tailwindcss()],
server: {
proxy: {
'/api': 'http://localhost:3000'
}
}
})