Sandbox — LSD is in active testing. All systems operational·payments are test-mode (no real charges).
Overview Use Cases News Docs Tool Store Support Community Get LSD
All docs
Docs/ Packages/ The Package Manager
Packages

The Package Manager

The desktop Package Manager: filter In Project, Installed and Store, freeze packages per project, pick variants, and add from a URL.

TL;DRThe desktop Package Manager lists packages filtered by In Project, Installed, or Store. The enable switch is a project-scoped freeze — a disabled package's nodes serve cached output and stop recomputing, without losing data. It also picks contribution variants, sets default packages, and adds packages from a URL.

The desktop Package Manager is where you turn packages on and off, install new ones, and pick between contribution variants — all scoped to the current project.

Filters: In Project, Installed, Store#

The list is filtered by three tabs:

  • In Project — packages active in the project you have open.
  • Installed — everything available on this machine (pip entry-point packages, folders you added by reference, and the installed record).
  • Store — the marketplace catalog, fetched on demand, showing what you own and what to buy.

The enable switch is a project-scoped freeze#

Toggling a package off does not uninstall it and does not lose data. It freezes the package's nodes for this project: each disabled step serves its cached output and stops recomputing. Nothing downstream recalculates through it.

text
# → disabled package's steps: STEP_SKIPPED (reason=package-disabled), cache intact

Toggle it back on and the real steps are restored (frozen placeholders swap back to the live classes) and recompute as normal. Because disabling only freezes nodes, it is safe to flip while you compare results.

Disabling also gates the palette: a disabled package's node types stop appearing in the add-step menu, and its views unmount.

Variants#

When two packages provide a step under the same node identity, the Package Manager shows a Contribution variants section on the detail pane. Pick which provider is active (replace mode), or keep several available side by side (coexist mode). For example, with lsd-mim and lsd-mim-openpit both active, the openpit pit_shell step is offered as a variant of mim.solid. Selecting one calls engine.set_variant(identity, mode=, provider=) and refreshes the pipeline. See Node variants.

Default packages#

Which packages activate on launch is configurable:

bash
LSD_DEFAULT_PACKAGES=lsd-gis,lsd-mim # comma-separated, wins first

Otherwise the active profile's default_packages (in ~/.lsd/profiles.json) applies. With neither set, a bare launch defaults to all available packages on (opt out with LSD_DESKTOP_NO_AUTOLOAD=1). A project that explicitly declares its packages is always respected.

Add from a URL or GitHub#

Beyond Add local… (register a folder by reference) and installing a .zip / .lsdpkg, the Add from URL… action installs straight from the web:

Python
pm.install_url("https://github.com/acme/lsd-widgets") # a GitHub repo
pm.install_url("https://example.com/lsd-widgets.zip") # a direct archive

A GitHub repository URL is resolved to its archive and unpacked; a direct .zip or .lsdpkg downloads and installs. Paid store packages are the exception — Buy opens the web store page in your browser for checkout. See Buy & install.

LearnDevelop a package · Node variants

APIPackageManager · lsd_package.json

ExamplesA complete package

Frequently asked questions

Does disabling a package delete anything?

No. Disabling is a project-scoped freeze — the package's steps keep their cached output and simply stop recomputing. Re-enable and the nodes recompute as normal. Only hand-installed packages have a remove action.

How do I choose which packages load by default?

Set LSD_DEFAULT_PACKAGES (a comma-separated list) or a profile's default_packages in ~/.lsd/profiles.json. With neither set, a bare launch defaults to all available packages on.

By LSD Team · Last updated Jul 18, 2026 Ask on Discord View as Markdown