Model or dataset
gnh1201/welsonjs avatar
gnh1201/welsonjs

WelsonJS: Desktop Apps on the Windows Script Host Engine

WelsonJS - Build apps with the Windows built-in JavaScript engine

510 stars35 forksJavaScriptGPL-3.0

At a glance

What is it?
WelsonJS builds Windows desktop applications on the ECMAScript engine that already ships with the operating system. The README claims support back to Windows XP SP3, and that reach is both the reason to look at it and the reason to be careful.
Who is it for?
WelsonJS is for teams that must ship a Windows desktop tool onto machines where installing a modern runtime is not an option, and for automation work that already lives in WSH, mshta or MSHTML. It is not for cross-platform products, and not for anyone who needs a stable versioned API surface: version numbers run to four segments and releases arrive weeks apart.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 3 days ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The gap WelsonJS fills: a desktop UI with no runtime to install

Most JavaScript desktop tooling assumes you can put a runtime on the machine. WelsonJS starts from the opposite assumption. The README describes it as a framework that operates "in extreme conditions where conventional solutions may fail", and the system requirements list Windows XP SP3 or later, with Windows 11 24H2 named as the current target. That span is the product. A script written for WelsonJS is meant to run on the ECMAScript engine Windows already provides, so deployment does not begin with an installer for Node or a bundled browser engine. The intended audience follows from that: engineers maintaining line-of-business tools on locked-down or aging Windows fleets, and people doing desktop automation who cannot assume a modern runtime is present. The README also lists legacy system integration as a use case, which is consistent with the XP-era floor. The README names JavaScript, TypeScript, CoffeeScript, ReScript and HTML/CSS as source languages, so the pitch is not only about the engine but about writing in a language you prefer and still targeting it.

What the engine choice actually buys you, and what it costs

WelsonJS is named as Windows plus an Electron-like experience plus JavaScript. That comparison is useful precisely because it points at the difference. Electron ships a Chromium and a Node runtime with every app, which is why an Electron build is measured in tens or hundreds of megabytes. WelsonJS ships nothing of the sort: it borrows what is already on the machine. The repository topics make the mechanism concrete. They include mshta, mshtml, wsh and lolbins, which points at the Windows Script Host, the HTML Application host and the MSHTML rendering engine as the components doing the work. The README's own framing agrees: it calls the result standalone and self-contained, suitable for embedded systems and isolated environments, and says it adheres to the ECMAScript standard while keeping execution lightweight. The cost is that you inherit whatever that engine supports on each target version. A machine on an older Windows build will have an older script engine, and syntax or built-ins from newer ECMAScript editions may simply not parse. The README does not publish a per-version compatibility table, so that mapping has to be established by testing on your own fleet. This is the central trade: near-zero deployment footprint in exchange for a language surface you do not control.

Getting it running: the launcher and the PowerShell bootstrap

The README gives two installation paths. The first is a download of the WelsonJS Launcher from catswords.blob.core.windows.net, distributed as welsonjs_launcher_latest.zip. The second is a one-line PowerShell command: irm https://catswords.blob.core.windows.net/welsonjs/bootstrap.ps1 | iex. That second form is a pipe-to-invoke-expression pattern, which downloads and executes the script in the same step. It is convenient and it is also the kind of command that security review will flag, since nothing is inspected before it runs. If you are deploying into a managed environment, fetch bootstrap.ps1 first and read it, then run it. The README also mentions a Microsoft Azure Marketplace listing, described as available again soon, which is not a usable channel today. Beyond these entry points, the README as supplied does not document the project layout, the module names, or the configuration keys. The repository topics suggest subsystems for Chrome, Office, MCP, SCADA and RPA, and the README links to an MCP server wiki page, but the README text itself does not give the API surface. Treat the wiki and the linked SlideShare presentation as required reading before you commit, not the README alone.

Version cadence and the maintenance bill

The recent releases are 0.2.7.57 in December 2025, then 0.2.7.60 in August 2026 and 0.2.7.61 later that same month. Two things stand out. First, the version scheme carries four segments, which usually signals builds rather than a curated API contract. Second, the gap between 0.2.7.57 and 0.2.7.60 is roughly eight months, followed by two releases about a week apart. That pattern suggests development driven by need or by upstream changes rather than a steady release train. For an automation script pinned to a specific Windows image, this is manageable. For a product that other teams build on, the absence of a long-lived stable line is a real planning problem. You should assume that upgrading means re-testing on every Windows version you support, because the engine under the framework is not something the project controls. AppVeyor status and a FOSSA badge appear in the README, so continuous integration and licence scanning are configured, but neither tells you anything about the compatibility matrix you actually need.

The GPL-3.0 line and the MS-RL fallback

The README states that the default licence is GPL 3.0, and then adds a sentence worth reading twice: if the GPL 3.0 licence is not compatible with Microsoft products, it is subject to the MS-RL licence. That is an unusual clause, and its scope is not defined in the material available. It does not say who decides when the fallback applies, whether it applies to the whole project or to specific files, or how a downstream user is meant to determine which licence governs their use. GPL-3.0 is a copyleft licence, so distributing a WelsonJS-based application triggers obligations that a permissive licence would not. If your product is proprietary, or if you ship to customers who require a commercial licence grant, this is the first thing to resolve. The MS-RL reference adds ambiguity rather than removing it. This is not legal advice; the point is that the licensing text as written does not let an engineer answer the question alone, and the answer determines whether the project is usable at all for a closed-source product.

Where WelsonJS is the wrong tool

The clearest failure mode is cross-platform work. WelsonJS is Windows-only by construction. If any part of your audience runs macOS or Linux, this is not a candidate, and the effort spent making the Windows path work will not transfer. The second case is anything that depends on current ECMAScript behaviour. Because the framework runs on the built-in engine, you are limited by the oldest Windows version you must support, not the newest. A team that can target Windows 11 only has far more room than one that still has XP SP3 machines in the field, and the README's stated floor of XP SP3 is a promise about reach, not about features. The third case is a product that needs a stable, documented API. The README supplied here does not enumerate modules or configuration keys, so a team that needs to read a reference and write code against it will be working from the wiki, the presentation and the source. Finally, the pipe-to-iex bootstrap is a poor fit for environments where every executed script must be reviewed and signed first. None of these are defects in the project; they are boundaries of the design.

How this differs from Electron and from plain WSH

Electron and WelsonJS both aim at desktop applications written in JavaScript, and the difference is entirely in what gets shipped. Electron bundles a Chromium and a Node runtime, which gives you a predictable engine version across every machine and a large install footprint. WelsonJS bundles neither and inherits the engine on the host, which gives you a tiny footprint and an unpredictable engine version. If your constraint is disk space, install privileges or an air-gapped machine, the WelsonJS approach is the one that fits; if your constraint is that the app must behave identically everywhere, Electron's bundling is the feature you are paying for. The comparison with plain Windows Script Host is subtler. WSH alone gives you a scripting host with limited UI. WelsonJS adds an Electron-like application layer on top of the same underlying components, plus the multi-language front end and the integrations suggested by the repository topics. The honest way to describe it is a framework that makes the built-in engine usable for application-shaped work, rather than a new runtime.

Who should adopt it, and what to check first

Adopt WelsonJS if you have a Windows fleet you cannot easily install software on, a task that looks like a desktop tool or an automation job, and a team comfortable working from source and wiki rather than a complete API reference. The XP SP3 floor and the mshta, mshtml, wsh and lolbins topics suggest the project is aimed squarely at that situation, and the launcher plus bootstrap.ps1 give you a way to try it without a build step. Do not adopt it for cross-platform products, for closed-source distribution you have not cleared against GPL-3.0 and the MS-RL clause, or for anything that needs a documented stable interface today. The verification order is short and concrete. Run the bootstrap on the oldest Windows version you must support, not the newest, and confirm the engine executes the syntax you plan to write. Check the wiki page for the MCP server if that integration is why you are here, since the README only links to it. Read the licence files in the repository rather than the README sentence, because the README does not say how the MS-RL fallback is scoped. If all three hold, the deployment story is genuinely unusual: a desktop application with no runtime to install.

Editorial conclusion

WelsonJS is for teams that must ship a Windows desktop tool onto machines where installing a modern runtime is not an option, and for automation work that already lives in WSH, mshta or MSHTML. It is not for cross-platform products, and not for anyone who needs a stable versioned API surface: version numbers run to four segments and releases arrive weeks apart. Before adopting it, verify three things on a target machine: that welsonjs_launcher_latest.zip or the bootstrap.ps1 one-liner completes, that the ECMAScript engine on that Windows build executes the syntax you intend to write, and that your distribution model is compatible with GPL-3.0 given the README's stated fallback to MS-RL for Microsoft products.

Official sources

  1. gnh1201/welsonjs on GitHub
  2. License: GPL-3.0
  3. Project website
  4. README
  5. Releases
Community notes

Community notes