Skip to content

WSL remote: a maintained open-source extension (n2ns.wsl-remote) — whitelist request, and an offer to take over the role of open-remote-wsl #3074

Open

Description

@bugstan

Context

What we did

We wrote a new extension from scratch rather than patching a 31 KB bundle: WSL Remote, id n2ns.wsl-remote, MIT, TypeScript with tests and CI. Repository: https://github.com/n2ns/wsl-remote (Open VSX publication under the n2ns namespace follows once the id question below is settled, so early users do not have to reinstall).

Feature parity with open-remote-wsl (same commands, Remote Explorer view with recent folders, status bar entries, label formatter, download URL setting), plus the points its open issues and PRs ask for:

  • server-env-setup hook: ~/.vscodium-server/server-env-setup is sourced before the server starts, exactly like Microsoft's ~/.vscode-server/server-env-setup. open-remote-wsl starts the server from a non-login bash -c and sources nothing, so there was no way to put a variable into the remote extension host's environment on VSCodium.
  • No shell interpolation: wsl.exe is always spawned with an argument array; everything the Linux-side script needs arrives through environment variables (WSLENV); distribution names are validated (Add Windows build configuration (#8) #29 / Remove "VS" from name? #28 there).
  • Safe server installation: mkdir lock across windows, published .sha256 verified, tar -tzf check, extraction into a temporary directory and atomic move, corrupt downloads removed with a clear message (Rename macOS app to VSCodium.app #11, Rename app to VSCodium #12, If vscode folder exists, fetch updates not invoke clone #19 there).
  • Server start: --start-server with a connection token file; the launcher runs in its own process group and the whole group is stopped when the window closes (open-remote-wsl's kill of the launcher alone leaves node server-main.js and the pty host behind); the usual <data dir>/.<commit>.pid is still written for tools that rely on it.
  • localhostForwarding=false / NAT without forwarding: falls back to the distribution address with a local port relay (Undo telemetry before build #27 there).
  • codium <dir> from inside WSL: scripts/wslCode.sh implements the launcher contract your Windows patch already expects, so VSCODE_WSL_EXTENSION_ID=n2ns.wsl-remote codium . works today (Setup RPM/Deb packages repositories #5, PR Better oss icon #25 there).
  • Alpine: detected, libstdc++ checked, vscodium-reh-alpine-* downloaded (Latest Release Missing OSX #3 there; not yet tested on a real Alpine install).
  • Proposed API without a product.json entry: when resolvers is not enabled for the id, the extension offers to add itself to enable-proposed-api in argv.json (JSONC edit, backup kept, restart prompt). A whitelist entry removes that extra step; it is not a prerequisite.
  • CI runs scripts/server-setup.sh against the latest VSCodium release every week (download, verify, start, stop), so a changed REH layout or URL shows up before users hit it.

Verified so far on Windows 11 / WSL 2.6.3 (mirrored networking) / Ubuntu 26.04 / VSCodium 1.135.06055 with real workloads (plan-swap, Codex, Claude Code extensions in the remote host). Not yet covered: Alpine and NixOS on real installs, Windows 10.

What we are asking

  1. Add n2ns.wsl-remote to extensionEnabledApiProposals in dev/update_api.sh, with the same proposals as jeanp413.open-remote-wsl: ["resolvers", "contribRemoteHelp", "contribViewsRemote"].
  2. Once it is on Open VSX, list it in docs/extensions-compatibility.md next to (or instead of) Open Remote - WSL.
  3. If you would prefer the extension to live under the VSCodium organization, we are open to transferring the repository and the Open VSX namespace; we would keep maintaining it either way.

Happy to answer questions here or in the repository. cc @daiyam

Activity

  1. bugstan commented on Oct 18, 2026

    @bugstan
    Author

    Update: the extension is now on Open VSX, so early users do not need to wait on the id question.

    The id stays n2ns.wsl-remote unless you would rather have it under the VSCodium organization; in that case we would publish the next version under the new id and deprecate this one on Open VSX. Requests 1–3 above are unchanged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions