Initial: DroidFleet Visor — Android Cloud Hypervisor
This commit is contained in:
91
README.md
91
README.md
@@ -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)
|
||||
|
||||
@@ -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
12
vite.config.ts
Normal 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'
|
||||
}
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user