A fast, native WinUI 3 SSH & SFTP client for Windows — with an interactive terminal, dual-pane file transfer, and a beautiful Mica UI.
The quickest way to try NetFox:
- Grab
NetFox-vX.Y.Z-win-x64.zipfrom the latest release - Right-click → Extract All…
- Double-click
NetFox.exe— that's it. Portable, no installer, no admin rights, and no .NET download required (the runtime is bundled).
First launch? Windows SmartScreen may show "Windows protected your PC" because the app isn't code-signed — click More info → Run anyway. The embedded terminal uses the WebView2 Runtime, which comes pre-installed on Windows 11 and with Edge on Windows 10.
- 🖥️ Interactive SSH terminal — a real xterm.js terminal rendered in WebView2, bridged over an SSH pty. Full color, resize handling, and adjustable font size.
- 📁 Dual-pane SFTP file transfer — browse local and remote directories side by side, upload and download multiple files through a sequential transfer queue with progress, cancel, and "open containing folder" support.
- 🗂️ Connection manager — save connection profiles (name, host, port, username), search them from the dashboard, and open each session in its own tab.
- ✏️ Remote file editing — open a remote text file in an editor tab; saving uploads the change back to the server.
- 🔐 Secure credential storage — passwords are persisted in the Windows Credential Locker, never in plain text. SSH host keys are pinned (SHA-256 fingerprints) with a first-use trust prompt.
- 🔖 Bookmarks — pin frequently used local and remote paths for one-click navigation.
- 🌗 Light & dark theme — sleek Mica-backed UI with a one-click theme toggle; the choice is remembered.
- 🫥 System tray integration — close to tray, tray icon with context menu, and optional run-at-startup (launches minimized to the tray).
- 🪟 Single instance — launching a second instance restores and focuses the existing window.
NetFox/
├── App.xaml(.cs) # Application entry, single-instance mutex, global exception logging
├── MainWindow.xaml(.cs) # TabView shell, tray icon, window subclassing, restore message
├── Views/
│ ├── DashboardView # Site manager, quick connect, app settings
│ ├── ConnectionSessionView # Terminal + dual-pane transfer workspace per connection
│ └── FileEditorView # Remote text-file editor tab
├── Services/
│ ├── SshTerminalService # SSH.NET shell stream (pty) lifecycle
│ ├── SftpRemoteFileSystem # SFTP listing, transfer, mkdir/rename/delete
│ ├── TransferQueueService # Sequential background transfer queue
│ ├── SiteManagerService # Saved connection profiles (sites.json)
│ ├── CredentialStoreService # Windows Credential Locker password storage
│ ├── SshHostKeyStore # Host-key pinning (SHA-256)
│ ├── LocalBookmarkService # Local/remote path bookmarks
│ ├── AppStorage # Unpackaged-safe settings store (%LOCALAPPDATA%\NetFox)
│ ├── AppLogger # JSON-lines session logger
│ ├── ThemeService # Light/dark theme persistence
│ └── StartupManager # Run-at-startup via HKCU Run key
├── Models/ # ConnectionProfile, file & transfer items
├── Helpers/ # Win32 interop (subclassing, window messages), commands
└── Assets/Terminal/ # Bundled xterm.js terminal page (loaded into WebView2)
The terminal is a vendored xterm.js page served to WebView2 through a virtual host mapping
(https://terminal.local), with keystrokes and output streamed over the WebMessage bridge to an SSH.NET shell stream.
| Layer | Technology |
|---|---|
| UI framework | WinUI 3 (Windows App SDK), Mica backdrop |
| Runtime | .NET 8 (net8.0-windows10.0.19041.0) |
| SSH / SFTP | SSH.NET |
| Terminal emulator | xterm.js in WebView2 |
| Tray icon | H.NotifyIcon.WinUI |
| Secrets | Windows Credential Locker (PasswordVault) |
- Windows 10 version 1809 (build 17763) or later — Windows 11 recommended
- .NET 8 SDK with the Windows 10 SDK (19041) workload
- WebView2 Runtime (pre-installed on Windows 11)
- Visual Studio 2022 with the WinUI application development workload (optional, for the IDE experience)
Unpackaged app: NetFox runs as a plain
.exe— no MSIX package, no developer mode, no signing certificate required. The Windows App SDK runtime is deployed self-contained with the build.
Clone the repository, then from the project folder:
# Restore + build (x64)
dotnet build NetFox.csproj -p:Platform=x64
# Run
dotnet run --project NetFox.csproj -p:Platform=x64
# Other platforms
dotnet build NetFox.csproj -p:Platform=x86
dotnet build NetFox.csproj -p:Platform=ARM64
# Self-contained publish (x64)
dotnet publish NetFox.csproj -p:Platform=x64 -c ReleaseOr open NetFox.sln in Visual Studio 2022, pick x64, and press F5.
| Context | Input | Action |
|---|---|---|
| Terminal | Any keystroke | Passed through to the remote shell (full pty) |
| Terminal toolbar | Ctrl+C button | Send interrupt (SIGINT) to the remote shell |
| Terminal toolbar | − / + | Decrease / increase terminal font size |
| Terminal toolbar | Clear | Clear the terminal scrollback |
| Local / Remote path box | Enter | Navigate to the typed path and refresh the listing |
| Remote file list | Right-click → Edit | Open the remote text file in an editor tab |
| Remote file list | Right-click → Upload / Download | Queue a transfer |
| Local file list | Right-click → Refresh / Upload | Refresh listing / upload selected |
| Window close | ✕ | Minimize to tray (when Close to tray is on) |
| Dashboard settings | Start with Windows | Toggle auto-start (launches hidden to tray) |
| Dashboard header | 🌓 toggle | Switch light / dark theme |
NetFox is fully local. It has no telemetry, no analytics, and no network calls beyond the SSH/SFTP servers you connect to
(and favicon lookups for connection tab icons). All settings, bookmarks, host keys, and logs live under
%LOCALAPPDATA%\NetFox; passwords stay in the Windows Credential Locker.
NetFox is under active development. Here's what's on the radar, roughly in priority order:
- SSH key-file & SSH-agent authentication — today the app supports username/password; keys and agents are the top request
- Drag & drop — drag files between Explorer and the local/remote panes
- Recursive directory transfer — upload/download whole folder trees with progress
- Parallel transfers — configurable number of concurrent transfers with per-file retry
- Remote search — filter remote listings and search across directories
- Site import — migrate saved connections from FileZilla, WinSCP, and PuTTY
- Synchronized browsing — mirror local/remote directory navigation
- Settings export/import — portable-mode friendly configuration
- Localization — the UI is currently English-only
Want something on this list sooner? Open an issue (or a PR 😉) and say so — the roadmap is flexible.
Contributions are very welcome — code, bug reports, documentation, and feature ideas all count. This is a young, small codebase (one project, no build ceremony), so it's an easy codebase to get into.
Not a coder? You can still help:
- 🐛 Open a bug report with the app version, your Windows version, and steps to reproduce — session logs under
%LOCALAPPDATA%\NetFox\logsare gold. - 💡 Suggest a feature or tell us which roadmap item matters most to you.
- 📖 Improve the README, docs, or screenshots.
Ready to write code?
- Fork the repo and create a branch:
git checkout -b feature/my-feature - Set up the dev environment — see Prerequisites — and confirm the app builds and runs on your machine:
dotnet build NetFox.csproj -p:Platform=x64 - Make your change. House style: nullable reference types are enabled, UI lives in
Views/, logic in small focused classes underServices/, Win32 interop inHelpers/. - Verify the build is clean (
0 errors, ideally0 warnings) and exercise the feature against a real SSH server if you touched connection or transfer paths. - Open a pull request with a short description of what changed and why. If it fixes an issue, reference it (
Fixes #123).
Good first contributions: the roadmap's site import and localization items are self-contained; drag & drop is a nice WinUI 3 exercise.
By contributing, you agree that your contributions will be licensed under the MIT License.
Released under the MIT License.
Third-party components: SSH.NET (MIT), xterm.js (MIT, vendored in Assets/Terminal/), H.NotifyIcon (MIT), Microsoft WebView2 — their licenses apply.
