# Buy & install
URL: https://lsd.tools/docs/pkg-store-install
Updated: 2026-07-21

> Browse the marketplace from the desktop Store filter or the web store. Free and owned packages install in one click; paid packages check out in your browser, then Open in LSD installs the exact build you bought. The Package Manager shows each package's owned and installed state.

Getting a package from the marketplace is three steps: **browse**, **buy in the browser**, then
**Open in LSD** to install. Free packages skip the middle step.

## Browse

Two front doors to the same catalog:

- The desktop **Package Manager → Store** filter, which fetches the catalog and marks what you own.
- The **web store** in your browser.

Each listing shows the package, its versions, its plans, and its dependencies.

## Buy in the browser

Payment happens on the web store page — not inside the app. On a paid package the Package Manager's
**Buy** button opens that store page in your browser, where you pick a plan, choose a **seat
quantity**, and check out. See [Plans & licensing](/docs/pkg-plans-licensing).

Free (and already-owned) packages need no checkout — they **Install** directly from the Package
Manager.

## Open in LSD → install

After a purchase, the store page offers **Open in LSD** — a deep link that hands the desktop app the
exact package and build you bought:

```
# → lsd://store/lsd-widgets?action=install&version=1.0.0
```

Preview channels use their registered scheme (for example `lsd-alpha://…`), so the website must
be configured for the same desktop channel.

LSD fetches authenticated metadata for that exact version, including a digest-bound,
dependency-first list of every exact build and examples archive needed for the install. It verifies
all downloads, then rechecks the graph immediately before changing anything; an entitled older
version therefore remains reproducible after a newer release supersedes it. LSD asks you to confirm
the package, version, and target first. If a project is active, the app installs and enables the
package there. If no project is open (or you are in Hub), it installs the package and opens Hub
Examples filtered to that package, with its declared default example selected.

Every published Store version must include at least one runnable `project`, `script`, or `notebook`
example and exactly one default. The example index and archive digest are bound into the signed
package, so Hub never has to guess which files are examples and never runs an edited cache copy as
publisher-authored content. Data examples may accompany the package, but do not satisfy the
runnable-example requirement.

From then on, activating the package issues its
[signed lease](/docs/pkg-plans-licensing) so it runs — offline within the lease window for sealed
and source deliveries.

## Owned and installed states

The Package Manager distinguishes two states, and a package can be in one without the other:

- **Owned** — you hold an entitlement (bought, or free). Shown against the store catalog.
- **Installed** — the code is present on this machine, ready to enable in a project.

So a package you bought on one machine shows as **owned** on another before you install it there; a
free package can be installed and owned at once. Enabling an installed package in a project is the
usual [Package Manager](/docs/pkg-manager) switch.

## Related

**Learn** — [The Package Manager](/docs/pkg-manager) · [Plans & licensing](/docs/pkg-plans-licensing) · [Collaboration & seats](/docs/pkg-collab-seats)

**API** — [PackageManager](/docs/api-package-manager) · [lsd_package.json](/docs/api-manifest)

**Examples** — [A complete package](/docs/ex-full-package)

## FAQ
### Why does buying open my browser?

Checkout and payment happen on the secure web store page, not inside the app. Once the purchase completes, an "Open in LSD" deep link hands the exact build back to the desktop app to install.

### What is the difference between owned and installed?

Owned means you have an entitlement to the package (you bought it or it is free). Installed means the code is on this machine and ready to activate. A package can be owned but not yet installed on a given device.
