# lsd_package.json
URL: https://lsd.tools/docs/api-manifest
Updated: 2026-07-17

> A folder becomes an LSD package when it holds an lsd_package.json (manifest v1, flat format). It declares the package name, version, dependencies, and where the Tool object lives. Sealed marketplace packages add signing and licensing fields. Installed packages live under ~/.lsd/packages/.

`lsd_package.json` is the manifest that turns a folder into an LSD package. It is manifest **v1** — a
flat JSON object at the package root. This page lists every field, the version-spec grammar, and the
sealed-marketplace additions.

## Usage

```json
{
    "_schema_version": 1,
    "name": "mim",
    "display_name": "Mining",
    "version": "1.2.0",
    "description": "Mining pipeline steps.",
    "min_lsd": "1.0",
    "dependencies": { "lsd-spatial": ">=1.0.0" },
    "tool": "tool"
}
```

## Where to start

- Concept: [Package anatomy](/docs/pkg-anatomy)
- Develop: [Develop a package](/docs/pkg-develop)
- Dependencies: [Dependencies](/docs/pkg-dependencies)

## Fields

| Field | Type | Required | Meaning |
|---|---|---|---|
| `_schema_version` | int | yes | Manifest format version — `1`. |
| `name` | string | yes | The package's unique id (import/dist-style name). |
| `display_name` | string | no | Human name shown in the Package Manager. |
| `version` | string | yes | The package version, `X.Y.Z`. |
| `description` | string | no | One-line summary. |
| `author` | string | no | Author name. |
| `publisher` | string | no | Publishing org (used by the store). |
| `keywords` | string[] | no | Search keywords. |
| `min_lsd` | string | no | Minimum LSD API/product version required. |
| `dependencies` | object | no | `{ name: version-spec }` of other packages needed. |
| `code` | string | no | The import-package subdirectory; defaults to the package root. |
| `tool` | string | no | Where the `Tool` object lives: `"tool"` or `"pkg.mod:tool"`. |

## Version-spec grammar

Values in `dependencies` (and `min_lsd`) use a small grammar:

| Spec | Matches |
|---|---|
| `*` | any version |
| `X.Y.Z` | exactly that version |
| `>=X.Y.Z` | that version or newer |
| `>X.Y.Z` | strictly newer |

```json
"dependencies": { "lsd-spatial": ">=1.0.0", "lsd-data": "*" }
```

## Sealed & paid fields

Packages published through the marketplace add signing and licensing fields:

| Field | Type | Meaning |
|---|---|---|
| `sealed` | bool | The package is sealed (signed, tamper-checked). |
| `paid` | object | The plan: pricing / delivery (per-seat, subscription, source, or server-exec). |
| `key_id` | string | Identifies the signing key used to seal it. |

See [Plans & licensing](/docs/pkg-plans-licensing) and [Publish to the store](/docs/pkg-publish).

## File locations

| Path | What |
|---|---|
| `~/.lsd/packages/` | Installed packages. |
| `~/.lsd/packages/installed.json` | The record of what is installed. |

## Related

**Learn** — [Package anatomy](/docs/pkg-anatomy) · [Dependencies](/docs/pkg-dependencies) · [Publish to the store](/docs/pkg-publish)

**API** — [PackageManager](/docs/api-package-manager) · [CLI commands](/docs/api-cli) · [Tool](/docs/api-tool)

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