Skip to content

minasvisual/remote-code-ide

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Remote Code IDE (BETA)

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.

Remote Code IDE

Remote Code IDE

Download

Grab the latest Windows installer from the GitHub Releases page.

Features

  • 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

Contributing

  1. Fork and clone the repository
  2. Create a feature branch: git checkout -b feat/my-feature
  3. Make changes and run npm run typecheck && npm run test:unit
  4. Open a pull request

Please read CLAUDE.md for architecture rules and conventions before contributing.

Prerequisites

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.

Installation

# 1. Clone the repository
git clone https://github.com/minasvisual/remote-code-ide.git
cd remote-code-ide

# 2. Install dependencies
npm install

Running Locally

# Start with hot-reload (Electron + Vite)
npm run dev

# Start with DevTools open
npm run dev:console

The app window opens automatically. Changes to renderer code reload instantly; changes to main process code restart Electron.

Building for Production

# 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:linux

Distributable packages are written to the release/ directory.

Releasing (Windows .exe)

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-tags

To 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 / release

See scripts/release.js for what the local flow does.

Type Checking

npm run typecheck

Runs tsc --noEmit on both the main and renderer processes.

Testing

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

Project Structure

src/
  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)

Security

  • Credentials are encrypted with the OS keychain (electron.safeStorage) — never stored as plaintext
  • contextIsolation: true and nodeIntegration: false are enforced
  • Renderer communicates with main only through a typed window.api bridge

License

MIT © Ulisses Mantovani

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages