Skip to content

Repository files navigation

🦊 NetFox

A fast, native WinUI 3 SSH & SFTP client for Windows — with an interactive terminal, dual-pane file transfer, and a beautiful Mica UI.

.NET 8 WinUI 3 Windows 10/11 Platform License PRs Welcome

NetFox screenshot


📥 Download & run — no install needed

The quickest way to try NetFox:

  1. Grab NetFox-vX.Y.Z-win-x64.zip from the latest release
  2. Right-click → Extract All…
  3. 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.


✨ Features

  • 🖥️ 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.

🏗️ Architecture

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.

🧰 Technology stack

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)

📋 Prerequisites

  • 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.

🔨 Build & run

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 Release

Or open NetFox.sln in Visual Studio 2022, pick x64, and press F5.

⌨️ Controls & shortcuts

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

🔒 Privacy

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.

🗺️ Roadmap

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.

🤝 Contributing

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\logs are gold.
  • 💡 Suggest a feature or tell us which roadmap item matters most to you.
  • 📖 Improve the README, docs, or screenshots.

Ready to write code?

  1. Fork the repo and create a branch: git checkout -b feature/my-feature
  2. Set up the dev environment — see Prerequisites — and confirm the app builds and runs on your machine: dotnet build NetFox.csproj -p:Platform=x64
  3. Make your change. House style: nullable reference types are enabled, UI lives in Views/, logic in small focused classes under Services/, Win32 interop in Helpers/.
  4. Verify the build is clean (0 errors, ideally 0 warnings) and exercise the feature against a real SSH server if you touched connection or transfer paths.
  5. 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.

📄 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.

About

A fast, native WinUI 3 SSH & SFTP client for Windows - interactive xterm.js terminal, dual-pane SFTP file transfer, tabbed sessions, Mica UI. Portable and unpackaged: download, extract, run.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages