A desktop remote IDE with SSH/SFTP connections, Monaco editor (VS Code engine), and integrated terminal — similar to Codeanywhere or VS Code Remote SSH, but as a standalone cross-platform Electron app.
Grab the latest Windows installer from the GitHub Releases page.
- SSH connections with secure credential storage (OS keychain via
safeStorage), a per-connection initial directory, and a connection context menu (edit, delete, quick actions) - Full file explorer over SFTP with lazy loading and context menus for new file/folder, rename, and delete
- Copy & paste files and folders in the explorer — recursive server-side copy over SFTP, with overwrite confirmation and paste-into-self protection
- Find in Folder — recursive content search across a remote directory tree, with incremental results and jump-to-file
- File properties modal — inspect size, permissions, owner/group, timestamps, and symlink target without downloading
- Monaco editor (VS Code engine) with syntax highlighting for 50+ languages
- Multi-tab editing with dirty state tracking, auto-save via
Ctrl+S, and persisted editor/panel layout across sessions - Integrated terminal (xterm.js) per SSH session, with copy/paste support and "Open in Terminal" from the file explorer
- VSCode extension support via OpenVSX registry browser
- File upload/download with byte-level progress, cancellation, and a 5 MB warning threshold
- Safe window close — in-progress downloads are confirmed and cleaned up before the app quits
- Unsaved-changes prompts and graceful disconnect handling
- About panel with app/version info
- Cross-platform: Windows, macOS, Linux
- Fork and clone the repository
- Create a feature branch:
git checkout -b feat/my-feature - Make changes and run
npm run typecheck && npm run test:unit - Open a pull request
Please read CLAUDE.md for architecture rules and conventions before contributing.
| Tool | Version |
|---|---|
| Node.js | >= 18.x |
| npm | >= 9.x |
| Git | any |
On Windows, Python and Visual Studio Build Tools are required to compile native modules (
ssh2). Run:npm install --global windows-build-tools(as Administrator) or install via the VS Installer.
# 1. Clone the repository
git clone https://github.com/minasvisual/remote-code-ide.git
cd remote-code-ide
# 2. Install dependencies
npm install# Start with hot-reload (Electron + Vite)
npm run dev
# Start with DevTools open
npm run dev:consoleThe app window opens automatically. Changes to renderer code reload instantly; changes to main process code restart Electron.
# Compile only (outputs to out/)
npm run build
# Windows installer (NSIS)
npm run dist:win
# macOS DMG
npm run dist:mac
# Linux AppImage
npm run dist:linuxDistributable packages are written to the release/ directory.
Pushing a v*.*.* tag triggers .github/workflows/release.yml, which builds the NSIS
installer on a windows-latest GitHub Actions runner and publishes it as a GitHub
Release — the release page gets a direct download link for the .exe automatically.
npm version patch # or minor / major — bumps package.json
git push origin main --follow-tagsTo build and publish from your own machine instead (requires the gh CLI,
gh auth login, and a clean working tree):
npm run release:patch # or release:minor / release:major / releaseSee scripts/release.js for what the local flow does.
npm run typecheckRuns tsc --noEmit on both the main and renderer processes.
# Unit tests (Vitest + React Testing Library)
npm run test:unit
# Unit tests with browser UI
npm run test:ui
# E2E tests (Playwright + Electron) — requires a build first
npm run test:e2e
# E2E with a real SSH server
E2E_SSH_HOST=<host> E2E_SSH_USER=<username> E2E_SSH_PASS=<password> npm run test:e2e
# Run everything
npm testsrc/
main/ Node.js/Electron process (SSH, SFTP, storage, IPC)
preload/ contextBridge — typed API surface exposed to renderer
renderer/ React 18 UI (Monaco editor, file explorer, terminal)
resources/
icons/ App icons (ico, png) for all platforms
tests/
e2e/ Playwright end-to-end tests
The codebase follows a strict Ports & Adapters (hexagonal) architecture:
Domain (entities + interfaces)
↑ Use Cases / Application
↑ Adapters (ssh2, electron-store, IPC)
↑ Infrastructure (Electron entry, IPC registration)
- Credentials are encrypted with the OS keychain (
electron.safeStorage) — never stored as plaintext contextIsolation: trueandnodeIntegration: falseare enforced- Renderer communicates with main only through a typed
window.apibridge
MIT © Ulisses Mantovani

