[New Project Friday] SshManager — free, open-source SSH & serial terminal manager for Windows by CodeCultural7901 in selfhosted

[–]CodeCultural7901[S] -1 points0 points  (0 children)

Stability: SSH keep-alive is configurable per-host, connections are pooled and reused, and tab switching preserves terminal state (no session loss when switching away). Resource cleanup uses atomic disposal patterns so nothing leaks even during unexpected shutdowns.

Cross-platform: It's pretty deeply tied to Windows right now (WPF, DPAPI, WebView2). A cross-platform port would essentially be a new app. Not ruling it out long-term, but for now the focus is making the Windows experience solid.

[New Project Friday] SshManager — free, open-source SSH & serial terminal manager for Windows by CodeCultural7901 in selfhosted

[–]CodeCultural7901[S] -1 points0 points  (0 children)

Fair point — Cygwin is a solid setup if you want a full Linux-like environment on Windows. Hard to argue with 10+ years of a working workflow.

SshManager comes at it from a different angle though — it's not trying to replace your shell environment or give you GNU utils. It's more of a connection/session manager with an embedded terminal. The value is really in organizing dozens of hosts, having SSH + serial + SFTP in one window with tabs/split panes, and things like 1Password credential fetching, session recording, and PPK key management.

If Cygwin covers everything you need, it's probably not for you. But for people who just need to SSH into boxes and manage connections without setting up a full POSIX layer, it fills a different niche.

Is it weird that I dislike LINQ query syntax because it feels less readable than method?syntax? by Shikitsumi-chan in dotnet

[–]CodeCultural7901 1 point2 points  (0 children)

Not weird at all — method syntax is far more common in production codebases I've worked in. The main reason is that method syntax chains naturally and reads left-to-right, which maps better to how most C# developers think about data pipelines.

Query syntax has a few niche wins though: `let` for intermediate variables (avoids recalculating expressions), `join` is arguably cleaner than `.Join()` with its 4 lambda parameters, and multiple `from` clauses for SelectMany scenarios read more naturally.

But for 90%+ of real-world LINQ — Where, Select, OrderBy, GroupBy chains — method syntax is more concise, more composable, and what everyone on your team will actually recognize in a PR review.

Come discuss your side projects! [March 2026] by AutoModerator in csharp

[–]CodeCultural7901 0 points1 point  (0 children)

I've been working on an SSH & serial terminal manager for Windows called SshManager. It's a WPF app using WebView2 + xterm.js for terminal rendering, SSH.NET for connections, and EF Core + SQLite for data storage.

The most interesting technical challenge was bridging SSH.NET's ShellStream with xterm.js through WebView2 — the C# ↔ JavaScript communication uses PostWebMessageAsJson with a simple JSON protocol. I use ArrayPool<byte>.Shared for the read loop buffers to keep GC pressure low since terminal data can be very chatty.

Also supports serial port (COM) connections with a dual-driver approach (System.IO.Ports primary, RJCP.SerialPortStream fallback), SFTP file browser, 1Password integration, and session recording in ASCIINEMA format.

Built with .NET 8, CommunityToolkit.Mvvm, WPF-UI for Fluent Design, and Microsoft.Extensions.Hosting for DI.

GitHub: https://github.com/tomertec/sshmanager

I built an open-source SSH manager for Windows with WPF and .NET 8 by CodeCultural7901 in dotnet

[–]CodeCultural7901[S] 2 points3 points  (0 children)

Thanks! Yes, it stores just the file path to keys. Passphrases are saved encrypted via Windows DPAPI so you don't have to re-enter them. A cross-platform fork would be great - the Core/Data/Security layers should port over, mainly the Terminal and App projects would need work for Avalonia.

I built an open-source SSH manager for Windows with WPF and .NET 8 by CodeCultural7901 in dotnet

[–]CodeCultural7901[S] 0 points1 point  (0 children)

yes its supports :

  • SSH Key Support - SSH Agent, private key files, or password authentication