RemotePocket lets you control mobile devices from a web browser. The current version supports Android and includes a Python server, a web console and an Android app. Use it on devices you own or have permission to manage.
- Python 3.12 for the server.
- Android Studio, JDK 17 and Android SDK 35 for the mobile app.
- An Android 11 or newer device or emulator for screen capture. The app also installs on Android 8–10, but screenshots are unavailable.
The web console is served by the backend. It does not need a separate build or web server.
From the repository folder, on macOS or Linux:
cd Server
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade 'pip>=26.2'
python -m pip install --require-hashes -r requirements.lock
python -m pip install --no-deps -e .
cp .env.example .envCopy .env.example only on the first setup. Keep your existing .env on later runs.
Generate a signing key once:
python -c "import secrets; print(secrets.token_urlsafe(48))"Save the result as MYDESK_SECRET_KEY in .env, then start the server:
python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000The key is required even in development. Empty or short keys and the old development placeholder prevent startup. Keep the generated key across restarts; replace the old placeholder if upgrading an existing installation.
Open the console on the computer running the server. Enter a username and a strong password, then use the button to create the first owner account. Email is optional. On later visits, log in with the same account.
Usernames must be 3–30 letters, numbers or underscores. Account passwords need at least 8 characters, uppercase and lowercase letters, a number and a symbol. Common, weak or breached passwords are rejected. The server needs internet access for the password breach check.
This setup uses a local SQLite database. Docker, PostgreSQL and Redis are not needed for the default development setup. 0.0.0.0 makes the server reachable from your local network; use 127.0.0.1 if you only need access from the computer itself.
For Windows commands, configuration and HTTPS deployment, see the server guide.
- Open the
Androidfolder in Android Studio. - Set the Gradle JDK to 17 and install Android SDK Platform 35 in the SDK Manager.
- Connect an Android device with USB debugging enabled, or start an Android 11 or newer emulator.
- Select the
apprun configuration and click Run to install and open the debug app.
You can also build and install it from a terminal on macOS or Linux:
cd Android
./gradlew :app:installDebugOn Windows, use .\gradlew.bat :app:installDebug. Open MyDesk Agent on the device after installation. See the Android guide for SDK setup and APK builds.
- In the web console, create a pairing code.
- In the Android app, enter the server URL, a device name, the pairing code and a device password of at least 8 characters.
- Pair the device, then open accessibility settings from the app and enable MyDesk Remote Control.
- Return to the console and wait for the device to appear online.
- Enter the device password on its card and open a remote session.
Use the right server URL in the app:
| Device | Server URL |
|---|---|
| Android Studio emulator | http://10.0.2.2:8000 |
| Phone on the same local network | http://<computer-lan-ip>:8000 |
| HTTPS deployment | https://<your-domain> |
localhost on the phone refers to the phone itself. For a physical device, use the computer's local IP address and allow port 8000 through its firewall. HTTP works only in debug builds; release builds require HTTPS with a trusted certificate.
Pairing codes are single-use and expire after 10 minutes by default. Keep the device password: it is separate from your account password and is needed to open remote sessions.
The console supports taps, swipes, text input and the Back, Home and Recent apps buttons. Keep the device unlocked. You can close a session from the console or pause control from the Android app.
Open the console over HTTPS or on localhost: device session authentication uses browser Web Crypto to answer a one-time challenge without sending the device password over WebSocket. Plain HTTP at a LAN IP cannot open device sessions.
- Server setup and operation
- Android setup and use
- Monitoring alerts
- Development Redis relay
- Security policy
- Static website
Run the backend with one worker and one instance. Live device connections and remote sessions are managed by that process.
RemotePocket is free software, licensed under the GNU General Public License, version 3 or, at your option, any later version (GPL-3.0-or-later). It is distributed without any warranty. See LICENSE for the full terms. Third-party components retain their own licenses and notices.