Open-sourced ssh/sftp/telnet/RDP/VNC/Spice/ftp client for iOS, built on top of the electerm-web codebase with Capacitor and an on-device Node.js runtime.
Note on local terminal & serial port: electerm for iOS currently does not support the local terminal or serial port. These features rely on native libraries (
node-pty,serialport) that can not be built for iOS at the moment. There is potential to add them in the future once the native dependencies are ported. SSH, SFTP, Telnet, FTP, RDP, VNC and Spice all work because they are network protocols implemented in pure JS / WASM.
- electerm.org: Homepage, downloads, videos, etc
- electerm-web: Web app version running in browser(including mobile device)
- electerm-web-docker: Docker image for electerm-web
- electerm online: Public free online electerm app
- electerm demo: Online demo of electerm
- electerm AI: Free AI for electerm users
- electerm theme: Create/share theme site with live preview and AI creation
- electerm deb repo: Debian repo of electerm
- electerm rpm repo: RPM repo of electerm
- electerm Harmony: electerm for HarmonyOS (available on Huawei AppGallery)
WebView (frontend) ── http://127.0.0.1:5577 ──► Node.js backend (on device)
loads index.html serves UI + SSH/SFTP/...
(local "loading" page) API/WebSocket on same origin
- Capacitor provides the native iOS shell + WebView.
@capawesome/capacitor-nodejsembeds a Node.js runtime and auto-starts the electerm backend when the app launches.- The electerm frontend (React) is rendered in a WebView; the electerm backend (the Node.js server that talks SSH/SFTP/Telnet/FTP/RDP/VNC/Spice) runs directly on the device.
- 🖥️ SSH / SSH tunnel (proxy) / SFTP / FTP / FTPS
- 🐚 Telnet
- 🖥️ Remote desktop: RDP / VNC / Spice
- 🔁 Zmodem (rz/sz), trzsz file transfer
- 🌐 Multi-language, themes, bookmarks, sync
- ❌ Local terminal — not available (native
node-ptycan not be built for iOS yet) - ❌ Serial port — not available (native
serialportcan not be built for iOS yet)
Local terminal and serial port may be added in the future once the required native libraries are ported to iOS.
electerm for iOS is built with Capacitor and an on-device Node.js runtime. A signed build is required to install on a physical device (via Xcode or a distribution certificate). For development:
- Build the app locally (see Dev below) and run it in the iOS Simulator, or deploy to a device from Xcode.
- Open electerm, wait a moment for the engine to start, and connect to your hosts.
Continuous builds produce an unsigned
.appas a CI artifact on every push todev/main. A signed IPA requires adding your Apple signing certificate and provisioning profile to the repository secrets.
Rebuild from the latest source and reinstall via Xcode / your distribution channel.
- Local terminal and serial port are disabled on iOS (see note above).
src/ electerm-web source (frontend + Node.js backend)
build/vite/ web build configuration
build/ios/ iOS build scripts, Capacitor project, native assets
build.mjs builds www/ (frontend + bundled backend)
capacitor.config.ts
ios/ native project (generated by `cap add ios`)
.github/workflows/ CI that builds the iOS app on macOS
See build/ios/README.md for how to build and test locally.
# needs Node.js 24.x and Xcode 16+ (with the iOS SDK + command-line tools)
npm config set legacy-peer-deps true
npm i
npm --prefix build/ios install
# build the web frontend + Node.js backend bundle into build/ios/www
npm run build:ios
# create the native project + sync assets/plugins (first time only)
cd build/ios
npx cap add ios
npx cap sync ios
# open in Xcode and run on a simulator / device
npx cap open iosThe unsigned app is built into Xcode's DerivedData; open
build/ios/ios/App.xcworkspace to run it.
github sponsor
https://github.com/sponsors/electerm
kofi
wechat donate
TRON TRN20
Address: TXk3pQNmQu1vihH76RaEFnK9wg13x4LLCZ
MIT

