Native iOS and Android wrappers for code-server.
- Configurable code-server URL with persistent cookies and website data
- Local HTTP server support
- Reload and server-address controls
- Supplemental keyboard for
Esc,Tab,Enter,Backspace, arrow keys,PageUp, andPageDown, plus a dedicatedCtrl+Cshortcut - Lockable
CtrlandShiftmodifiers for combinations entered with the on-screen keyboard, a hardware keyboard, or the supplemental keys - Native SwiftUI/
WKWebViewiOS app and native Java/AndroidWebViewapp - Safe-area handling with an optional immersive fullscreen toggle; pull down from the top edge to exit fullscreen
- Desktop-site mode and an IME-aware supplemental key bar on both platforms
- Persistent virtual-viewport zoom controls that automatically reload once to apply a full-width, non-cropped layout
- A force-keyboard button backed by native Android and iOS input capture, keeping focus on canvas-based web RDP clients while forwarding text and editing keys
- Cloudflare Access browser-RDP support that focuses IronRDP's Shadow DOM renderer and sends text, Backspace, Delete, and Enter through its key handler
- Desktop-style code-server gestures: hold and drag to select text, or hold and release to open the right-click context menu for copy and paste
- Saved project profiles with bold titles and up to ten hot WebView sessions retained for 30 minutes on both platforms
- Optional session keep-alive setting. Android uses a foreground service and persistent notification, partial wake lock, native WebView pulses, and an optional one-pixel overlay anchor. It can request overlay and unrestricted-battery permissions from Android system settings. iOS keeps the screen awake while the app is in the foreground. While enabled, hot sessions are exempt from the 30-minute expiry (up to ten sessions).
- GitHub Actions workflows that produce a TrollStore-ready IPA and an Android APK
CodeServerApp/
├── ios/ # SwiftUI and WKWebView application
├── android/ # Java and Android WebView application
├── branding/ # Shared source artwork
├── tools/ # Shared asset-generation utilities
└── .github/ # Independent IPA and APK workflows
The two applications are peers in one repository. They share branding and release history, but each has its own native project and build workflow.
- Open the repository's Actions tab.
- Select Build YourWorkspace IPA.
- Choose Run workflow.
- Download and extract the
YourWorkspace.ipaartifact. - Send
YourWorkspace.ipato the iPhone and open it with TrollStore.
The workflow builds without an Apple provisioning profile and applies an ad-hoc signature before packaging.
- Open the repository's Actions tab.
- Select Build YourWorkspace Android APK.
- Choose Run workflow.
- Download
YourWorkspace.apkand open it on the Android device. - Allow installation from the browser or file manager when Android asks.
The Android workflow produces a debug-signed APK that needs no Play Store or signing secrets. Android 8.0 (API 26) or newer is supported. Because hosted runners create development signing keys, uninstall an older workflow build first if Android reports an incompatible update signature.
- Open
ios/CodeServerApp.xcodeprojin Xcode. - Deployment target: iOS 15.0.
- Bundle identifier:
net.archcangyuan.CodeServerApp. - Open
android/in Android Studio for Android development. - Android application ID:
net.archcangyuan.codeserverapp.debug. - The initial server address is saved with
AppStorageon iOS andSharedPreferenceson Android.
The supplemental keys are dispatched to the currently focused DOM element as keyboard events. Ctrl and Shift stay locked until tapped again. While locked, native keyboard events are redispatched with the selected modifiers. code-server's editor and terminal normally handle these events, but browser-security restrictions can prevent synthetic events from performing privileged browser operations such as clipboard paste.
TrollStore only works on specific iOS versions. Check the current compatibility list in the official TrollStore repository.