Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

license GitHub Sponsors English 中文

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.

How it works

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-nodejs embeds 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.

Features

  • 🖥️ 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-pty can not be built for iOS yet)
  • ❌ Serial port — not available (native serialport can 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.

Install

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:

  1. Build the app locally (see Dev below) and run it in the iOS Simulator, or deploy to a device from Xcode.
  2. Open electerm, wait a moment for the engine to start, and connect to your hosts.

Continuous builds produce an unsigned .app as a CI artifact on every push to dev/main. A signed IPA requires adding your Apple signing certificate and provisioning profile to the repository secrets.

Upgrade

Rebuild from the latest source and reinstall via Xcode / your distribution channel.

Known issues

  • Local terminal and serial port are disabled on iOS (see note above).

Project layout

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.

Dev

# 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 ios

The unsigned app is built into Xcode's DerivedData; open build/ios/ios/App.xcworkspace to run it.

Sponsor this project

github sponsor

https://github.com/sponsors/electerm

kofi

https://ko-fi.com/zhaoxudong

wechat donate

wechat donate

TRON TRN20

[TRN20 donate]

Address: TXk3pQNmQu1vihH76RaEFnK9wg13x4LLCZ

Contact author

zxdong@gmail.com

License

MIT

About

electerm for IOS

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages