Skip to content

Mrteesoft/phone-server

Repository files navigation

# Phone Server Phone Server is now a local-first Android app intended to make the phone behave like a small self-managed server environment. The phone is the server. The user opens the app, grants local permissions if needed, and starts working directly on-device. There is no required registration, login, or external control plane in the target product. ## Current Build The active implementation lives in `app/` and currently includes: - a Jetpack Compose Android UI with Dashboard, Terminal, Projects, and Services tabs - a terminal-first default experience with a cleaner Termux-style terminal screen - local workspace creation inside app-private storage - a persistent shell session so `cd` changes survive between commands - local terminal history stored in app-private files - a foreground runtime service for long-running local work - managed service start, stop, restart, and output preview from the Services tab - a runtime abstraction layer for Android shell vs future Ubuntu userspace backends - Ubuntu 22.04 scaffold state and storage preparation inside the app - Ubuntu Base rootfs download, checksum verification, and extraction into app-private storage - no account, no device enrollment, and no required backend to use the app The older Spring Boot code under `src/main/java/com/phoneserver/controlplane` and the `pom.xml` file are legacy artifacts from the earlier backend-first prototype. They are no longer the primary direction. ## What It Should Feel Like The app is aiming for a Linux-style terminal experience on Android: - open the app and use the device directly - create local workspaces for repos or project files - run shell commands on the phone - keep long-running commands under app control - manage everything locally without depending on a remote server ## Current Limits The current Android build is functional, but it is not finished in the VPS sense: - the shell is persistent, but it is not PTY-backed yet - highly interactive terminal programs are still limited - workspace and history persistence are file-backed JSON stores, not Room yet - managed services are not restored automatically after process death or reboot - Ubuntu Base can now be staged locally, but the real `proot` + PTY session is still not implemented yet - Git clone/import flows and port-management UI are not implemented yet - the repository still contains the old backend prototype for reference ## Run The App The Android entry point is the `app/` module. 1. Open the repository in Android Studio. 2. If Android Studio detects multiple build systems, use the Gradle project defined by `settings.gradle.kts` at the repository root. 3. Run the `app` module on a device or emulator running Android 8.0 or newer. 4. On Android 13 and newer, allow notification permission so the foreground runtime service can stay active. 5. Use the Projects tab to create a workspace, the Terminal tab to run commands, and the Services tab to keep long-running commands under control. Note: - this repository now includes a Gradle 8.9 wrapper compatible with Android Gradle Plugin 8.7.3 - Android Studio can use its embedded JDK; you do not need a separate system-wide Gradle install for IDE builds - you still need to install Android SDK components from Android Studio: Platform-Tools, a recent SDK Platform, and matching Build-Tools ## Manual Test Flow Use this sequence on a device or emulator: 1. Launch the app and verify the dashboard says the app is local-only. 2. Create a workspace from the Projects tab. 3. Open that workspace in the Terminal tab and run `pwd`, `ls`, and `echo hello`. 4. Run `cd ..` and then `pwd` again to confirm directory changes persist. 5. Close and reopen the app, then confirm recent terminal history is still shown. 6. Start a managed service with `while true; do date; sleep 5; done`. 7. Confirm the Services tab shows live output preview. 8. Restart the managed service, then stop it. 9. Open the Services tab and press `Prepare Ubuntu`. 10. Press `Install Ubuntu` and keep the app open while the Ubuntu Base archive downloads and extracts. 11. Confirm the Services tab shows the Ubuntu phase moving through download, extraction, and ready states. 12. Confirm the app still blocks `Use Ubuntu` until a real `proot` launcher is bundled. ## Next Steps 1. Add a PTY-backed terminal implementation. 2. Bundle `proot` binaries for supported Android ABIs and wire them into the runtime manager. 3. Launch Ubuntu bash sessions through the new runtime abstraction against the staged rootfs. 4. Add Git clone/import flows and per-workspace run profiles inside the selected runtime. 5. Persist managed service definitions and restore them when Android allows. 6. Remove or archive the legacy Spring Boot prototype once it is no longer needed as reference. # phone-server # phone-server # phone-server # phone-server # phone-server # phone-server # phone-server

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors