Screenshot Sync & AI Analysis Assistant — understand your life through phone screenshots and proactively organize information for you.
- 📱 Native Android App: Background service monitors screenshots and auto-syncs to server
- 🖥️ Web Dashboard: View synced photos, LLM analysis results, and statistics
- 🤖 AI Analysis: Multimodal LLM parses screenshot content, extracts intent, entities, and summaries
- 💬 Multi-LLM Support: Quick switch between MiMo, Qwen, OpenAI, Claude, GLM, Kimi, DeepSeek
- 🌐 Internationalization: Web and Android support Chinese/English
evatar/
├── android/ # Native Android app (Kotlin + Jetpack Compose)
├── backend/ # Python backend (FastAPI + SQLite)
└── frontend/ # Web dashboard (React + Vite + Tailwind CSS)
cd backend
python3.11 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python main.pyBackend runs at http://localhost:8421.
cd frontend
pnpm install
pnpm devFrontend runs at http://localhost:3000, proxying API to the backend.
cd android
./gradlew :app:assembleDebug
adb install app/build/outputs/apk/debug/app-debug.apk- Open the Android app, configure server URL (default:
http://localhost:8421) - Ensure server is connected (status card shows green)
- Tap "Start Sync"
- Screenshots are auto-uploaded and analyzed by the LLM
- View analysis results in the web dashboard
In the web dashboard's "LLM Config" page, you can:
- Quickly select preset providers (Xiaomi MiMo, Qwen DashScope, OpenAI, Claude, Zhipu GLM, Kimi, DeepSeek)
- Manually configure API URL, Key, and model name
- Set max context tokens and temperature
- Foreground Service: Persistent notification for background survival
- Overlay Bubble: Circular semi-transparent bubble showing sync status (green=idle, yellow=syncing, red=error)
- Battery Optimization: Guides users to remove the app from battery optimization
| Component | Technology |
|---|---|
| Android | Kotlin, Jetpack Compose, Room, OkHttp |
| Backend | Python, FastAPI, SQLAlchemy, SQLite, httpx |
| Frontend | React, TypeScript, Vite, Tailwind CSS, i18next |
| LLM | OpenAI-compatible API (multimodal) |
| Method | Path | Description |
|---|---|---|
| POST | /api/photos/upload |
Upload a photo |
| GET | /api/photos |
List photos |
| GET | /api/photos/{id} |
Photo detail + analysis |
| GET | /api/photos/{id}/image |
Original image |
| GET | /api/stats |
Statistics |
| GET | /api/config/llm |
Get LLM config |
| PUT | /api/config/llm |
Update LLM config |
| GET | /api/config/llm/presets |
List presets |
| POST | /api/config/llm/presets/{name}/apply |
Apply a preset |