Portable & Installed Environments
DevsFTP operates as a local-first application designed for secure, offline configuration containment. It supports two run environments:
Installed Mode
By running the standard Windows setup wizard, DevsFTP is installed in your local system directories. User configurations, session data, caches, and logs are contained globally in the user app profile:
%APPDATA%\DevsFTP\
Portable Mode
If the directory containing the DevsFTP executable contains a sub-folder named .devs_userData, Portable Mode activates automatically. This redirects all file write paths locally into that folder. This enables storing profiles, SSH keys, local cache files, and automation schedules on portable external USB storage drives with zero system footprint.
Master Password Vault Cryptography
Your credentials never leave your machine. To protect connection profile passwords, keys, and cloud credentials from local extraction, DevsFTP implements a hardware-offline encryption vault.
- Key Derivation Function: Uses PBKDF2 with 800,000 iterations via SHA-256 to hash your Master Password and generate a secure 32-byte key.
- Encryption Cipher: All profile configurations inside `profiles.json` are encrypted using **AES-256-GCM** with a cryptographically secure random 12-byte initialization vector (IV) generated per write.
- Verifier String: Verifies password authenticity using the test token
"DEVFTP_MASTER_VERIFIER".
- Default Mode: If a Master Password is not configured, DevsFTP generates a unique, random 32-byte encryption key stored in a local protected sidecar file named
.master_key (restricting permissions to 0o600).
Connection Profiles & Protocols
Manage and coordinate all remote developer directories. The Profile Manager UI lets you quickly group, duplicate, delete, and configure profiles within a single unified console.
Supported Protocol Specs
| Protocol |
Default Port |
Supported Authentication Methods |
| SFTP (SSH) |
22 |
Passwords, SSH Private Keys (.pem, .ppk, id_rsa) |
| FTP / FTPS |
21 |
Passwords (Implicit or Explicit SSL/TLS wrappers) |
| WebDAV |
80 / 443 |
HTTP / HTTPS authentication paths and user password tokens |
| Amazon S3 |
- |
AWS Access Key ID and Secret Access Key credentials |
SSH Configuration Importing
Instead of typing profiles manually, developers can instantly import connection environments from local OpenSSH settings directories. The client reads and parses system config rules:
~/.ssh/config
The parser automatically translates your SSH hosts, hostname mappings, custom port declarations, user credentials, identity key paths, and forwarding configurations into separate secure profiles inside DevsFTP.
Dynamic Workspace Identity Accents
Prevent expensive environment configuration errors. Connection profiles let you bind a visual accent color to your tab session workspace. The DevsFTP header border, panel borders, selected lists, and button states dynamically update to highlight whether you are on production, staging, or dev.
The engine resolves HSL variables dynamically. For example, selecting a color like #EF4444 (Red) for a Production profile instantly styles headers and buttons to remind you that edits are live.
The Transfer Queue & Resume Engine
All file transfers are orchestrated in the background using a multi-protocol queuing controller that guarantees data integrity across unstable network connections.
- Interruption Auto-Recovery: If the application crashes or exits, active uploads and downloads are marked as
"Waiting to Resume" inside `transfer_queue.json` on restart.
- Byte Offset Resume: When resuming a partial file transfer, the engine performs a byte-level sync check and appends data starting at the exact offset of the existing file rather than redownloading from scratch.
- Smart Conflict Engine: Compares size and timestamp changes (with a 2-second filesystem clock difference tolerance) to notify you of newer files, mismatched file sizes, or identical files before overwriting.
External Editor Watcher (Save-to-Upload)
Work directly with the code editors you already use. Double-clicking any remote file downloads it to a secure local staging cache and initiates an editor watch pipeline.
Under the Hood
- Staging Path: Files are downloaded inside the local user directory:
devsftp_edit_cache/
- Metadata Sidecars: Generates a companion
[filename].meta.json sidecar containing remote properties (mtime, path, original SHA-256 hash).
- Code Editor Prioritization: Evaluates whether your system contains Visual Studio Code, Notepad++, or Sublime Text executables. Web files (.html, .htm, .phtml, .svg, .xml) are force-routed to these code editors to prevent local execution in web browsers.
- Live Watcher: Uses the
chokidar file system watcher to track changes. When you save your changes inside the editor, DevsFTP instantly detects the modification and prompts you to auto-upload to the active remote workspace.
Directory Compare & Ignore Patterns
Instantly verify differences between your local project workspace and the remote server directory. Running a comparison launches a dedicated, split-view modal presenting matching files side-by-side in vertical alignment, styled with the application's native dark-mode and theme accent colors.
Sync & Status Controls
The comparison tags files with status markers and handles synchronization dynamically:
- Local Only / Local Newer: File exists only locally or was modified more recently on your computer (Green status).
- Remote Only / Remote Newer: File exists only on the remote server or has more recent remote modifications (Blue status).
- Size Mismatch: File exists in both paths but has different byte sizes (Yellow status).
- Directional Sync: Click the inline push arrows (
➔ to upload local-to-remote, or 🠔 to download remote-to-local) in the middle action pane to sync individual items instantly.
- Bulk Operations: Toggle select checkboxes on the far-left column and click ⚡ Sync Checked Files to queue and run batch transfers.
Smart Ignore Rules
Save comparison resources and prevent uploading configuration files. DevsFTP processes filters defined inside devsftp_exclusion_prefs.json (ignoring files like `.git`, `node_modules`, `.env`, and `*.log`). If enabled, the engine also respects all active workspace .gitignore rules.
Embedded SSH Terminal Console
Execute remote administrative operations immediately without opening an external SSH window. DevsFTP features an embedded terminal console powered by Xterm.js with auto-fitting addons.
The terminal logs into the remote server by securely reusing the credentials configured inside the active connection profile. The console accent matches the profile's identity theme color.
SSH Tunneling & Port Forwarding
Build secure network routing paths between your local system and remote network servers. DevsFTP supports three port forwarding formats:
- Local Forwarding: Redirects connections from a local port to a remote server target through the secure SSH transport layer (useful for accessing remote private databases).
- Remote Forwarding: Routes incoming connections from a remote server port to your local machine port (ideal for exposing local developer servers to external testers).
- Dynamic Forwarding: Creates a local SOCKS5 proxy server that routes web browser or system traffic dynamically through the remote SSH client.
Background Sync Automation
Automate file transfer processes. The Scheduled Job Runner daemon runs in the background of the main process to execute sync, backup, and upload jobs securely.
Automated Scheduling Modes
Scheduled jobs support SFTP, FTP/FTPS, and WebDAV endpoints and can be configured with four execution frequencies:
- On App Startup: Fires immediately as the DevsFTP application loads.
- Interval Timer: Repeats continuously every N minutes (e.g. every 15 minutes).
- Daily Schedule: Executes once a day at a specified clock hour and minute (e.g. 02:00 AM).
- One-Time Execution: Executes once at a target calendar date and time timestamp.
Application Keyboard Shortcuts
Execute layout management, workspace navigations, and caching actions instantly using system-mapped keystroke commands:
| Operation category |
Keystroke Command |
Description of Action |
| System Tools |
Ctrl + Shift + Del |
Clears all temporary files in the editor staging cache directory. |
| System Tools |
Ctrl + Shift + E |
Exports all connection profiles as an encrypted JSON backup file. |
| System Tools |
Ctrl + Shift + I |
Imports connection profiles from an exported JSON config. |
| File Navigation |
Ctrl + A |
Selects all directories and files in the active Explorer pane. |
| File Navigation |
↑ / ↓ Arrow Keys |
Navigates directory lists up and down. |
| File Navigation |
Shift + ↑ / ↓ |
Selects a range of multiple files simultaneously. |
| File Navigation |
Enter |
Opens the selected directory or downloads and launches the file. |
| Modals |
Esc |
Cancels and closes the active modal window or dialog prompt. |
Protocol Log Console Drawer
Monitor active connection transactions in real-time. The bottom log drawer prints all raw directory query commands and transfer responses. This helps check authentication requests or track payload issues.
Use the toolbar controls to clear log buffers or copy the active logs to your clipboard for external debugging.
Troubleshooting & Known Hosts Reset
Resetting SSH host signatures
DevsFTP verifies SSH host key signatures against trusted keys saved inside known_hosts.json. If your server is rebuilt or re-keyed, a key verification warning will block connection attempts to prevent MITM attacks. If the change is legitimate, you can clear host entries inside your known hosts list or delete the database file to reset fingerprints.
Profiles Corruption Protection
If a read error occurs when loading your connection profiles, DevsFTP instantly creates a timestamped backup copy (e.g. profiles.json.corrupt-[timestamp]) and blocks automated saves to prevent overwriting or deleting your credentials.
Bookmarks & Directory Shortcuts
Save frequently accessed remote and local directory paths to your Bookmarks panel for instant one-click navigation across active sessions.
Remote-to-Remote Server Transfers
Transfer files directly between two remote servers (SFTP ➔ S3, FTP ➔ WebDAV, or SFTP ➔ SFTP) without staging data to your local hard drive. Initiate transfers directly from the top menu or context menu options.