Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Leuchtturm UpdaterNew to Visual Studio Code? Get it now.
Leuchtturm Updater

Leuchtturm Updater

Arne Maximilian Richter

| (0) | Free
Keeps privately distributed VS Code extensions up to date from file shares, npm registries, Jenkins or custom scripts.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Leuchtturm Updater

Keeps VS Code extensions that are not on the Marketplace up to date. Leuchtturm checks the sources you configure, tells you when a newer version is available and installs it when you click Update. It never installs anything on its own.

It uses only public VS Code APIs and does not touch VS Code's marketplace configuration.

The Leuchtturm view: updates, extensions available to install, and a problem

Quick start

  1. Open the Leuchtturm view and click + (Add Source…).

  2. Paste the link where you download the extension today: a Jenkins job or its Last Successful Artifacts page, a web page that lists .vsix files, or a single .vsix link. A folder or network share works too (Choose Folder…), and so does an npm package name.

  3. Leuchtturm shows the extensions and versions it found there. Check the list, keep or change the name, and click Save. No regex, no JSON.

    Adding a source from a Jenkins link

  4. Run Leuchtturm: Check for Updates. Every installed extension that the share offers is now tracked. When a newer version shows up, Leuchtturm notifies you; Show Updates lets you pick what to install.

Sources are stored in your user settings (leuchtturm.sources), which you can also edit by hand; Manage Sources opens a detailed form for each one. A leuchtturm.sources entry in a workspace's .vscode/settings.json is ignored, so a cloned repository cannot add download locations.

The .vsix file names need a version, as vsce package names them: corp.linter-1.4.1.vsix.

Servers that need a login: Leuchtturm handles no passwords or tokens. Use a script source: a small program (from your company, or adapted from the examples) that signs in and downloads, which Leuchtturm runs. npm registries work with whatever login npm itself has.

Commands

Command What it does
Leuchtturm: Check for Updates Checks all sources now.
Leuchtturm: Add Source… Paste a link (Jenkins, web page, folder, npm name); Leuchtturm sets up the source.
Leuchtturm: Manage Sources A detailed form per source, with validation and Test.
Leuchtturm: Update Extension… Pick from the available updates and install them.
Leuchtturm: Install Specific Version… Install any offered version, including downgrades (with confirmation).
Leuchtturm: Reset Skipped Versions Forget versions skipped from a notification.
Leuchtturm: Show Log Opens the "Leuchtturm Updater" output channel.

Settings

Setting Default
leuchtturm.enabled true Master switch.
leuchtturm.checkInterval 60 Minutes between checks; 0 disables periodic checks (minimum 5).
leuchtturm.checkOnStartup true Check about 10 s after startup.
leuchtturm.notify true Notify about new updates. There is intentionally no auto-install.
leuchtturm.includePrerelease false Consider semver prereleases.
leuchtturm.sources {} Named sources (user settings only).
leuchtturm.extensions [] What to track: "id", "source:id" or { "id", "source", "pin", "enabled" }. Empty = every installed extension a source offers.
leuchtturm.trackAllFromSources false Also list extensions that are offered but not installed.
leuchtturm.http.timeout 30 Default timeout in seconds (also used for listing file sources).

Source types

  • file: folder or network share with .vsix files.
  • http: Jenkins, web server listings, Artifactory, GitLab/Gitea packages, or any page that lists versions (no login); regex or JSONPath matching, generated for you by Add Source.
  • npm: any npm registry (Nexus, Artifactory, Verdaccio, …) with packages that wrap a .vsix; runs your npm with your npm configuration; publishing guide.
  • script: your own program (Python examples included) speaking a small JSON protocol, also the way to servers that need a login; off unless enabled in user settings, approved once per program.

All settings and variables: docs/configuration.md. Safeguards and the relation to the VS Code / Marketplace terms: docs/security.md.

Remote development

Leuchtturm runs on the local machine (extensionKind: ["ui"]), where file shares and internal servers are usually reachable. In Dev Containers, Remote-SSH and WSL windows:

  • Your local user settings apply: the same sources and script approvals as in local windows. Nothing needs to be configured inside the container.
  • Checks and downloads run locally. Installs go through VS Code's own install command, which puts each extension where it runs: most extensions on the remote side, UI extensions locally.
  • VS Code only tells Leuchtturm about the extensions installed locally. For the ones on the remote side, Leuchtturm needs a small helper there. The sidebar shows Extensions installed in the dev container are not visible yet; click it once to install the helper (it ships with Leuchtturm; Leuchtturm: Install Helper in Remote does the same). A rebuilt container needs it again. Without the helper, remote-side extensions show up as Not installed.

This is tested automatically in a real Dev Containers window (npm run test:remote, needs Docker). Remote-SSH and WSL use the same mechanism but are not tested automatically.

Development

npm install
npm run build             # bundle into dist/extension.js
npm test                  # unit tests (vitest)
npm run test:integration  # end-to-end in a downloaded VS Code
npm run test:remote       # the same demo in a Dev Containers window (needs Docker)
npm run test:ui           # clicks through the source editor with Playwright
npm run test:jenkins      # against a real Jenkins in Docker (pipeline builds new versions)
npm run lint              # eslint + prettier + tsc
npm run sandbox           # open a demo VS Code window (isolated profile, demo share)
npm run sandbox -- --dev-container  # the same, inside a dev container (needs Docker)
npm run full-sandbox      # the sandbox plus a real Jenkins in Docker; "Build Now" makes a new version
npm run screenshots       # re-render docs/images/*.png from the demo scenario
npm run package           # build the .vsix and check its README images

npm run sandbox rebuilds .sandbox/ from scratch, with a fake share holding demo extensions at several versions and an old version pre-installed. It then opens a separate VS Code window running the development build. TRY-ME.md in that window lists what to try. The same scenario drives the integration tests (src/test/scenario.ts).

License

MIT

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft