Learn how to set up and use DevPort across all platforms.
DevPort Desktop Client is a cross-platform desktop app that lets you connect to remote machines via SSH with code editing, terminal, Git, debugging, Docker management, and more — all in one app.
| Platform | Format |
|---|---|
| macOS | .dmg (Apple Silicon + Intel universal) |
| Windows | .exe (NSIS installer) |
| Linux | .AppImage / .deb |
Download the latest version from GitHub Releases.
When a new version is released, an update banner appears at the top of the app. Click it to automatically download and restart.
When you launch the app, you'll see the Welcome screen. You can connect to remote machines in 4 ways.
Connection profiles are automatically saved — reconnect with one click from the sidebar.
If a DevPort Agent is running on the same network, it will automatically appear in the Nearby Devices section. Click to connect instantly.
Enter the 6-digit code (e.g., A3K-M7P) generated by the remote Agent in the Remote Connect section. If direct SSH is not possible (NAT/firewall), a WebSocket Relay will automatically bridge the connection. A Relay badge will appear in the UI.
After connecting, the screen is divided into 4 areas:
Monaco Editor-based (same engine as VS Code) code editor:
Browse the remote file system from the sidebar.
| Action | How |
|---|---|
| Open file | Click |
| Expand/collapse folder | Click |
| Create file/folder | Right-click > New File / New Folder |
| Rename | Right-click > Rename |
| Delete | Right-click > Delete |
| Upload | Right-click > Upload or drag & drop |
| Download | Right-click > Download |
Large directories are handled with virtual scrolling for smooth performance.
Use the Terminal tab in the bottom panel.
Manage Git visually from the Git tab in the bottom panel. It auto-detects the repository for the currently open file.
| Tab | Function |
|---|---|
| Changes | Changed file list, Stage/Unstage, Diff view, Commit |
| Commits | Commit history graph |
| Branches | Create/switch/delete branches, Merge/Rebase |
| Stashes | Save/apply/delete stashes |
| Blame | Per-line commit information for the current file |
When conflicts occur, a side-by-side Diff viewer opens:
Provides IDE-level code editing via Language Server Protocol:
The language server must be installed on the remote server:
| Language | Language Server | Install Command |
|---|---|---|
| JavaScript/TypeScript | typescript-language-server | npm i -g typescript-language-server typescript |
| Python | python-lsp-server | pip install python-lsp-server |
| Rust | rust-analyzer | rustup component add rust-analyzer |
| Go | gopls | go install golang.org/x/tools/gopls@latest |
Debug remote applications from the Debug tab. (DAP: Debug Adapter Protocol)
| Language | Debugger | Required Package |
|---|---|---|
| Node.js | Built-in Inspector | Node.js 12+ |
| Python | debugpy | pip install debugpy |
| Go | delve | go install github.com/go-delve/delve/cmd/dlv@latest |
Managed from the Ports tab in the bottom panel. Forward remote ports to localhost for browser access (e.g., remote web server on port 3000 accessible at localhost:3000).
Forwarded ports can also be previewed in the built-in Web Preview panel.
Manage Docker containers on the remote machine from the Docker tab:
Create real-time collaboration sessions from the Collab tab:
Features: Terminal sharing, real-time co-editing (CRDT-based auto conflict resolution, cursor sharing), chat messages, participant presence.
Open with menu or Cmd/Ctrl+,
| Shortcut | Action |
|---|---|
| Cmd/Ctrl+P | File search |
| Cmd/Ctrl+Shift+P | File content search |
| Cmd/Ctrl+, | Open settings |
| Cmd/Ctrl+S | Save file |
| Cmd/Ctrl+G | Open Git panel |
| Cmd/Ctrl+B | Toggle sidebar |
| Cmd/Ctrl+T | New terminal |
| F12 | Go to definition |
ssh user@host -p portchmod 600 ~/.ssh/id_rsalocaleexport LANG=ko_KR.UTF-8 or export LANG=en_US.UTF-8For persistent issues, please report at GitHub Issues.
DevPort Agent is a lightweight app installed on the machine that will receive remote connections. Running the Agent allows DevPort Client to connect to that machine.
Agent comes in two forms:
| Type | Use Case |
|---|---|
| Desktop Agent (Electron) | Personal PC, GUI environment |
| CLI Agent (Node.js) | Server, container, headless environment |
SSH must be enabled for the Agent to work.
# Ubuntu/Debian
sudo apt install openssh-server
sudo systemctl enable --now ssh
# Verify
sudo systemctl status ssh
Start-Service sshd
Set-Service -Name sshd -StartupType Automatic
Download from GitHub Releases:
| Platform | File |
|---|---|
| macOS | .dmg |
| Windows | .exe |
| Linux | .AppImage / .deb |
After installation, launch the app. It will appear in the system tray.
Simply run the Agent. It will automatically appear in Nearby Devices on any Client on the same network, broadcasting device name, OS, and SSH port via mDNS (_devport._tcp).
Share the 6-digit code shown on the Agent screen (e.g., A3K-M7P). The code auto-refreshes every 5 minutes; use the Refresh button for manual refresh.
Codes exclude confusable characters (0, O, 1, I). If direct SSH is impossible (NAT/firewall), the Signal Server automatically relays via WebSocket.
Registered devices send heartbeats every 30 seconds to maintain online status.
A terminal-based agent with no GUI. Ideal for servers, cloud instances, and containers.
npm install -g @devport/agent-cli
# Foreground (for log viewing)
devport-agent start
# Background daemon
devport-agent start --daemon
# Specify SSH port (default 22)
devport-agent start --port 2222 --daemon
# Check status
devport-agent status
# Stop
devport-agent stop
# Login (opens browser)
devport-agent login
# Logout
devport-agent logout
For automatic start on reboot:
# /etc/systemd/system/devport-agent.service
[Unit]
Description=DevPort Agent
After=network.target
[Service]
Type=simple
User=ubuntu
ExecStart=/usr/bin/devport-agent start
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now devport-agent
| Feature | Desktop Agent | CLI Agent |
|---|---|---|
| UI | System tray + window | Terminal output |
| Start | Launch app (auto-start available) | devport-agent start |
| Background | Runs in tray | --daemon flag |
| Best for | Personal PC, interactive use | Server, CI/CD, automation |
| Size | ~150-200MB | ~5-10MB |
# Check if already running
devport-agent status
# Kill existing process and restart
devport-agent stop
devport-agent start
For persistent issues, please report at GitHub Issues.
DevPort iOS app is a native SwiftUI app that lets you connect to remote machines via SSH on iPad and iPhone, with code editing, terminal, Git, debugging, and more.
Launch the app to see the connection screen.
If a DevPort Agent is running on the same Wi-Fi, it will automatically appear. Tap to connect.
Enter the Agent's 6-digit code for remote connection. If direct connection is not possible, WebSocket Relay handles it automatically.
Enable biometric auth in Settings > Security:
Tab-based navigation with full-screen panels.
CodeMirror 6-based editor with automatic syntax highlighting based on file extension.
Browse the remote file system from the sidebar.
Use the Terminal tab in the bottom panel.
Manage Git with touch from the Git tab.
| Tab | Function |
|---|---|
| Status | Current branch, ahead/behind, changed file list |
| Changes | Stage/Unstage, Diff view, Commit |
| Commits | Commit history graph (author, date) |
| Branches | Switch/create/delete branches, remote tracking |
| Stashes | Save/apply/delete stashes |
| Blame | Per-line commit info for current file |
Code editing features via Language Server Protocol:
The language server must be installed on the remote server (see Client Guide for installation commands).
Debug remote apps from the Debug tab (DAP):
Managed from the Ports tab. Forward remote ports for access from iPad browser.
Manage remote Docker containers from the Docker tab:
Real-time collaboration from the Collab tab:
| Action | Shortcut |
|---|---|
| Save file | Cmd+S |
| New connection | Cmd+N |
| Disconnect | Cmd+W |
| Toggle sidebar | Cmd+, |
| File name search | Cmd+P |
| File content search | Shift+F |
| New terminal | Cmd+T |
| Shortcut help | Cmd+/ |
| Feature | Desktop Client | iOS App |
|---|---|---|
| Framework | Electron + React | SwiftUI (native) |
| Editor | Monaco Editor | CodeMirror 6 |
| Terminal | xterm.js + node-pty | xterm.js + Rust UniFFI PTY |
| Platform | Windows/Mac/Linux | iOS 16+ / iPadOS 16+ |
| Input | Keyboard/Mouse | Touch + External Keyboard |
| Auth | Password/Key + Touch ID (Mac) | Password/Key + Face ID/Touch ID |
| Distribution | GitHub Releases | App Store |
ls -la filenameFor persistent issues, please report at GitHub Issues.