Skip to content

robertpopa22/mRemoteNG

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7,669 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

mRemoteNG — Community Edition

This fork is alive. We love mRemoteNG and we're committed to keeping it moving forward. This Community Edition ships regular releases with security patches, bug fixes, and long-requested features — backed by proper CI, automated tests, and builds for x64, x86, and ARM64.

Full transparency: this project is built by humans and AI working together. We believe that's the future of open source.

— Robert & contributors (human + AI)

Latest Stable Nightly CI Nightly SonarCloud CodeQL License Total Downloads Stars


Downloads

Channel Version Branch Description
Stable v1.81.0 release/1.81 Frozen release. 6,123 tests, 0 analyzer warnings. Recommended.
Nightly v1.82.0-beta.1 main Auto-built on every push. Latest features, fully tested.
Legacy v1.76.20 Last .NET Framework 4.x release.

Download matrix

Channel Version Variant x64 x86 ARM64
Stable v1.81.0 Framework-dependent (~21 MB) Download Download Download
Stable v1.81.0 Self-contained (~108-116 MB) Download Download Download
Nightly v1.82.0-beta.1 Framework-dependent (~21 MB) Download Download Download
Nightly v1.82.0-beta.1 Self-contained (~108-116 MB) Download Download Download

Framework-dependent requires .NET Desktop Runtime 10.0. Self-contained includes the .NET runtime — no prerequisites.


Features

16 protocols supported: RDP, VNC, SSH, Telnet, HTTP/HTTPS, rlogin, Raw Socket, PowerShell Remoting, AnyDesk, VMRC (VMware), MSRA (Remote Assistance), OpenSSH (native Windows), Winbox (MikroTik), WSL, Terminal, Serial (COM port).

Security: PBKDF2 600K iterations, HTTPS-only vaults, SSH key wipe, AnyDesk command injection prevention, LDAP sanitization, 4 CodeQL alerts fixed.

Enterprise: Self-contained builds (zero prerequisites), ADMX/ADML Group Policy templates, connection audit logging, JSON export, protocol/tag filtering.

Quality: 6,123 automated tests (0 failures), 0 analyzer warnings, SonarCloud Quality Gate passed (A reliability, A security, A maintainability, 80.7% coverage, 1.6% duplication), 4-level code quality pipeline (Roslynator + Meziantou + SonarCloud + CodeQL), x64/x86/ARM64.

For detailed usage, refer to the Documentation.


How We Build This — AI-Assisted Development

This project uses an AI orchestrator (Python, ~6,900 LOC) coordinating multiple AI agents to resolve a backlog of 843 upstream issues. The system evolved through four architectural generations — from manual prompting to a self-healing supervisor with autonomous agents.

Key results:

  • 702/843 issues addressed (83.3%), 1,365+ commits, 7 regressions (1.2%)
  • Cost: ~$320 total, stabilized at $1.49/commit (down from $4.02 on day 1)
  • Best session: Codex Spark resolved 89/104 issues (86%) autonomously in a single run
  • Quality: 5,247 analyzer warnings → 0, SonarCloud Quality Gate passed (80.7% coverage)
  • 4 upstream PRs backported: URL injection fix, AD Protected Users, VNC Caps Lock, RDP resize

The complete research documentation is in scientific-paper/:

Document What's inside
PAPER.md Full research paper — hypothesis, architecture, results, discussion
METHODOLOGY.md Formal methodology, instruments, metrics, baseline
RELATED_WORK.md Comparison with SWE-bench, Devin, Aider, AutoCodeRover, MetaGPT
COST_ANALYSIS.md Detailed cost breakdown and learning curve
FAILURE_CATALOG.md Post-mortems: 31-hour disaster, 7 regressions, Codex repo wipe
EVIDENCE.md Verifiable data trail (git history, CI artifacts, metrics)

What's Next

6.1. Issue Triage — Complete (843/843)

All 843 upstream issues have been triaged and classified:

Status Count %
released 702 83.3%
wontfix 116 13.8%
duplicate 25 3.0%

Post-triage verification (2026-03-02): All 195 testing-status issues were resolved: 179 bulk-verified via commit hash validation, 3 manually verified, 13 reclassified during wontfix correction. Wontfix repass found 38% imprecision in AI triage (47/123 were implementable); corrected to 116 with individual justifications.

Status definitions:

  • released — fix committed, build/test verified, included in a release
  • wontfix — classified as out-of-scope (upstream limitation, requires hardware, or not reproducible)
  • duplicate — merged with another issue tracking the same root cause

6.2. Code Quality — Four Levels Operational, Zero Warnings

5,247 analyzer warnings → 0 across 100+ files in a single session using parallel AI agents (Claude Opus + Sonnet).

Phase What was done Count fixed
Autofix CA1507 nameof, CA1822 static, CA1805 defaults, CA1510 ThrowIfNull, CA2263 generics, CA1825 Array.Empty ~1,300
String comparisons MA0006 string.Equals, CA1309/CA1310 StringComparison, CA1304 IFormatProvider, MA0074 overloads ~400
Collection safety MA0002 StringComparer on Dictionary/HashSet, MA0015/MA0016 enum comparison ~350
Misc fixes CA1806, CA2201, CA1069, CA1305, CA1872, CA1850, CA1869, CA2249, RCS1075 ~200
Suppressed 46 architectural/legacy rules demoted in .editorconfig (CA1711, CA5351, MA0062, etc.) ~3,000

SonarCloud bugs fixed (beta.6): S2259 (null reference ×6), S2583 (dead branch), S4275 (getter/setter mismatch ×2), S1751 (no-op loop ×2), S3903 (missing namespace ×2), S3456 (redundant ToCharArray ×3), S2674 (unchecked Read), MA0037 (stray semicolon ×4). All ObjectListView issues (25) dismissed as won't fix — vendored dependency outside our control.

SonarCloud on fork: Quality Gate PASSED — Coverage 80.7% on new code (threshold 80%), Reliability A, Security A, Maintainability A, Duplication 1.6%, Hotspots 100% reviewed. Achieved via 160 targeted tests + sonar.coverage.exclusions for untestable Protocol/UI/COM code. The fork's SonarCloud is useful for internal monitoring but has no effect on upstream PR checks (see Key Insight #10).

TreatWarningsAsErrors enforced for compiler rules (CS0168, CS0219, CS0162, CS0164). Next: extend to analyzer rules once stable.

6.3. Manual Testing Protocol

Beta.5 proved that 7/585 AI-introduced regressions passed all 6,123 automated tests at the time. The failure rate (~1.2%) sounds low, but one regression (PuTTY root save) would silently destroy all user connections.

Protocol: Manual testing session at every beta release, focused on UX flows that cannot be unit tested:

  • Tree navigation: click, double-click, drag-drop, context menu — no phantom tabs
  • Tab management: switch, close, reorder — no focus stealing, no hangs
  • Save/load round-trip: confCons.xml survives save → close → reopen → save
  • COM lifecycle: connect → disconnect → reconnect → close — no RCW crashes
  • Settings persistence: change settings → restart → verify persistence (especially Portable mode)

6.4. Remaining Unsolved Problems — What Still Doesn't Work

These are active problems with no known solution or workaround:

# Problem Status Why it's hard
1 Fork SonarCloud coverage Resolved Coverage reached 80.7% (threshold 80%) via targeted tests (SqlMigrationHelper, ExternalProcessProtocolBase, RDP serializer, MiscTools, StartupArguments, SqlVersion32To33Upgrader — 160 new tests) plus sonar.coverage.exclusions for genuinely untestable code (Protocol implementations, UI, COM interop, App initialization). Quality Gate now fully green: A/A/A, 80.7% coverage, 1.6% duplication, 100% hotspots reviewed
2 1 test failing in CI Intermittent 2,961 passed, 1 failed in SonarCloud CI run (runner environment differs from local). continue-on-error: true masks it. The failing test needs investigation under CI-specific conditions (no display, different temp paths, potentially different .NET SDK patch version)
3 481 code smells on upstream PR Cosmetic SonarCloud reports 481 code smells in the PR diff. Most are pre-existing patterns (long methods, high complexity, parameter counts) carried forward from the legacy codebase. Not blocking Quality Gate but visible. Fixing all would risk introducing regressions in stable code for cosmetic improvement
4 MSBuild output path mismatch with dotnet test Workaround MSBuild outputs to bin/x64/Release/ (with platform subfolder), dotnet test --no-build with csproj expects bin/Release/ (no platform). This means coverage cannot be collected via the standard dotnet test csproj --collect approach. The dotnet-coverage tool workaround functions but adds a tool dependency and doesn't produce OpenCover format natively
5 NUnit parallelization impossible Architectural Shared mutable singletons (DefaultConnectionInheritance.Instance, Runtime.EncryptionKey, Runtime.ConnectionsService) make NUnit fixture-level parallelism cause race conditions. Multi-process isolation (9 groups with sliding-window concurrency) works but is slower. Fixing the singletons requires DI throughout the entire application — a multi-month refactoring effort
6 Large PR review is inherently slow Expected PR #3189 (beta.6) passed Quality Gate but is a massive diff (761 files, 64K insertions). Reviewing this responsibly takes time — the upstream maintainers built and maintained mRemoteNG for years, and careful review of such a large contribution is entirely reasonable. Strategy: smaller, focused PRs in future releases to make review more manageable

6.5. Supervised Continuous AI Improvement (Gen 5 Concept)

The Gen 5 concept: Opus as permanent supervisor, Spark as executor.

The orchestrator monitors new issues (from upstream sync or user reports), triages autonomously, implements with Spark/Sonnet, and presents completed work for human approval. The rules from §5.9 are injected into every agent prompt — hard-won knowledge that prevents the same mistakes.

Target state: Autonomous maintenance with human intervention only at PR review. The orchestrator handles the "what" and "how," humans verify the "should we."

6.6. Upstream Convergence

PR #3189 (beta.6) passed SonarCloud Quality Gate on 2026-03-01 after resolving 6 security vulnerabilities (S2068 ×3, S8264 ×2, S8233 ×1), 50 security hotspots reviewed as SAFE, and all reliability/maintainability conditions met. PR #3188 (beta.5) remains open as a predecessor.

Upstream has 830+ open issues (843 total triaged by our orchestrator). This fork has addressed 702 of them (83.3%). The potential impact of merging even a fraction of these fixes is significant. PR #3189 is a large diff and we understand it takes time to review responsibly — the upstream team built this project and their careful stewardship is what makes it worth contributing to.

Additionally, 4 upstream copilot draft PRs (#3177, #3176, #3154, #3171) have been reviewed and their fixes backported to our fork's main branch, ahead of upstream merge.

6.7. The Bigger Picture

This project demonstrates a reproducible model: orchestrator + supervisor + multi-model AI + human oversight applied to a legacy codebase with a large backlog.

The model is not specific to mRemoteNG. Any project with hundreds of open issues, a test suite, and a build system could benefit from the same approach. The orchestrator code is ~6,900 lines of Python — not trivial, but not a research project either.

The economics make it viable: ~$1.50/commit, 24/7 operation, no burnout, no context switching. This is complementary to human developers, not a replacement — humans set direction, review output, and handle the 30% that AI cannot.

Note: This section has not yet undergone peer review. Projections and priorities are subject to revision.


Release History

Version Date Highlights
v1.81.0-beta.6 2026-03-01 SonarCloud Quality Gate pass on upstream PR #3189 — 6 security vulnerabilities fixed, 50 hotspots reviewed, 5,247→0 analyzer warnings, 4-level code quality (Roslynator + Meziantou + SonarCloud + CodeQL), coverage collection via dotnet-coverage, workflow permissions hardened (S8264/S8233), upstream sync with v1.78.2-dev
v1.81.0-beta.5 2026-02-27 7 manual-testing regressions fixed, AV false positive hardening (SendInput, DefaultDllImportSearchPaths, VirusTotal in CI), PortableSettingsInitializer for .NET 10, 5,963 tests
v1.81.0-beta.4 2026-02-25 AV hardening, test suite expansion 2,916 → 5,963 via TestCaseSource parametrization
v1.81.0-beta.3 2026-02-24 585 issues addressed (70% of 838), 744 commits, 7 new protocols, 81s→ms deserialization fix, orchestrator v2 (Claude-only, self-healing supervisor)
v1.81.0-beta.2 2026-02-15 2,554 nullable warnings fixed (100% clean, 242 files), testable architecture via DI
v1.80.2 2026-02-14 AlwaysShowPanelTabs initialization fix
v1.80.1 2026-02-13 Security patch — AnyDesk command injection, Process.Start hardening, .NET 10.0.3
v1.80.0 2026-02-10 Self-contained builds, 6 security hardening items, external tool tokens, JSON export, live theme switching, 830-issue triage complete
v1.79.0 2026-02-08 26 bug fixes, 81 pre-existing test failures fixed, LDAP sanitizer, .NET 10 with x64/x86/ARM64

Full details: CHANGELOG.md | All releases


Build from Source

# Requires Visual Studio BuildTools (VS2026 or VS2022) with .NET SDK
# Full build (~15s on 48-thread Threadripper):
pwsh -NoProfile -ExecutionPolicy Bypass -File build.ps1

# Fast incremental (~9s, skips restore):
pwsh -NoProfile -ExecutionPolicy Bypass -File build.ps1 -NoRestore

# Self-contained (embeds .NET runtime, ~108-116MB output):
pwsh -NoProfile -ExecutionPolicy Bypass -File build.ps1 -SelfContained

Note: dotnet build does not work — the project has COM references (MSTSCLib for RDP). build.ps1 uses full MSBuild via VS BuildTools and auto-detects the newest VS installation.

Code Quality

Level Tool Scope Status
1 Roslynator + Meziantou Analyzers Every local build Active
2 SonarCloud Push to main — quality gate SonarCloud
3 CodeQL Push to main + weekly — security scanning CodeQL
4 .NET Analyzers AnalysisLevel=latest-recommended Active

0 analyzer warnings in main project. TreatWarningsAsErrors enforced for compiler rules (CS0168, CS0219, CS0162, CS0164). 46 noisy/architectural rules suppressed in .editorconfig for legacy WinForms code. Next: extend to analyzer rules once stable.


Testing

# Recommended (bash runner, 9 groups, max 2 concurrent, ~80s):
bash run-tests-core.sh

# PowerShell wrapper (builds first):
pwsh -NoProfile -ExecutionPolicy Bypass -File run-tests.ps1 -Headless

# Skip build (use existing binaries):
pwsh -NoProfile -ExecutionPolicy Bypass -File run-tests.ps1 -Headless -NoBuild

6,123 tests, 9 groups with sliding-window concurrency (max 2) + 2 isolated, 0 failures.

Multi-process parallelism is required because the production code uses shared mutable singletons — NUnit fixture-level parallelism causes race conditions. Each dotnet test process gets isolated static state.

Group Namespace Tests
1 Connection 1,083
2 Config.Xml 124
3 Config.Other 744
4 UI 374
5 Tools 391
6 Security 166
7 Tree + Container + Credential 178
8 Remaining 3,040
9 Integration 21
Isolated FrmOptions (GDI handle leak) 2

Upstream Relationship

This fork is based on mRemoteNG/mRemoteNG v1.78.2-dev. We submit fixes back upstream:

  • v1.79.0: PRs #3105#3130 (26 individual PRs)
  • v1.80.0: #3133 (consolidated status)
  • v1.81.0-beta.5: #3188
  • v1.81.0-beta.6: #3189 — SonarCloud Quality Gate passed

License

GPL-2.0

Support the Project

If you find this fork useful, please consider giving it a star — it helps others discover the project and motivates continued development.

Star this repo

Contributing

Submit code via pull request. See the Wiki for development environment setup.

About

mRemoteNG is the next generation of mRemote, open source, tabbed, multi-protocol, remote connections manager.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • C# 96.3%
  • Python 2.8%
  • PowerShell 0.8%
  • Shell 0.1%
  • Gherkin 0.0%
  • XSLT 0.0%