A multi-platform SSH client with an integrated terminal and file explorer. Tether is built on Electron, React, and xterm.js, giving you a native desktop experience for managing remote servers.
- SSH connections — connect to remote hosts with password or key-based authentication, with support for native SSH config files (
~/.ssh/config) - Integrated terminal — full xterm.js terminal with search, clickable web links, and automatic resizing
- File explorer — browse, upload, download, and edit remote files over SFTP without leaving the app
- Session tabs — manage multiple simultaneous SSH sessions in a tabbed interface
- Split pane — view the terminal and file explorer side-by-side in a resizable split layout
- Copy/paste support — native clipboard integration in the terminal
- Multi-platform — packaged for Windows (NSIS + Portable installer) and macOS (DMG)
- Node.js 18+
- npm 9+
Install dependencies, then build the app:
npm install
npm run buildTo run in development mode with hot-reload:
npm run devTo produce distributable packages for your current platform:
npm run distPlatform-specific builds:
npm run dist:win # Windows (NSIS + Portable installer)
npm run dist:mac # macOS (DMG)Built artifacts are written to the dist/ directory.
Run the unit test suite:
npm testRun tests in watch mode during development:
npm run test:watchGenerate a coverage report:
npm run test:coverageRun end-to-end tests (requires a built app):
npm run test:e2eType-check without emitting output:
npm run typecheckEnsure your working directory is clean and on main, then run:
npm run releaseThe script walks you through the full release flow:
- Verifies the working directory is clean and you are on
main - Pulls the latest changes from origin
- Prompts for a new version number (
MAJOR.MINOR.PATCH) - Creates a
release/v<version>branch, bumpspackage.json, commits, and tags - Pushes the release branch to origin
- Pauses — open a PR from
release/v<version>→mainand merge it - Press Enter to resume — the script checks out
main, pulls, and pushes the tag
Pushing the tag triggers the Release pipeline, which builds platform artifacts and publishes the GitHub release automatically.