---
title: pulumi package add | CLI commands
url: /docs/iac/cli/commands/pulumi_package_add/
---

Add a package to your Pulumi project, plugin, or current directory.

## Synopsis

Add a package to your Pulumi project, plugin, or current directory.

This command locally generates an SDK in the selected Pulumi language and
prints instructions on how to use it. The SDK is based on a Pulumi package
schema extracted from a given resource plugin or provided directly.

When run inside a Pulumi project or plugin, the package is also recorded in
Pulumi.yaml or PulumiPlugin.yaml. To run outside one (e.g. for a
single-language component library or with the Automation API), pass
'--language LANG' to select the SDK language explicitly.

The  argument can be specified in one of the following ways:

- When  is specified as a PLUGIN[@VERSION] reference, Pulumi attempts to
  resolve a resource plugin first, installing it on-demand, similarly to:

pulumi plugin install resource PLUGIN [VERSION]

- When  is specified as a local path, Pulumi executes the provider
  binary to extract its package schema:

pulumi package add ./my-provider

- When  is a path to a local file with a '.json', '.yml' or '.yaml'
  extension, Pulumi package schema is read from it directly:

pulumi package add ./my/schema.json

- When  is a reference to a Git repo, Pulumi clones the repo and
  executes the source. Optionally a version can be specified.  It can either
  be a tag (in semver format), or a Git commit hash.  By default the latest
  tag (by semver version), or if not available the latest commit on the
  default branch is used. Paths can be disambiguated from the repo name by
  appending '.git' to the repo URL, followed by the path to the package:

pulumi package add example.org/org/repo.git/path[@<version>]

For parameterized providers, parameters may be specified as additional
arguments. The exact format of parameters is provider-specific; consult the
provider's documentation for more information. If the parameters include flags
that begin with dashes, you may need to use '--' to separate the provider name
from the parameters, as in:

  pulumi package add  -- --provider-parameter-flag value

```
pulumi package add  [flags] [--] [provider-parameter]...
```

## Options

```
  -h, --help              help for add
      --language string   Run outside a Pulumi project or plugin: [nodejs|python|go|dotnet|java]
```

## Options inherited from parent commands

```
      --color string                 Colorize output. Choices are: always, never, raw, auto (default "auto")
  -C, --cwd string                   Run pulumi as if it had been started in another directory
      --disable-integrity-checking   Disable integrity checking of checkpoint files
  -e, --emoji                        Enable emojis in the output
  -Q, --fully-qualify-stack-names    Show fully-qualified stack names
      --logflow                      Flow log settings to child processes (like plugins)
      --logtostderr                  Log to stderr instead of to files
      --memprofilerate int           Enable more precise (and expensive) memory allocation profiles by setting runtime.MemProfileRate
      --non-interactive              Disable interactive mode for all commands
      --otel-traces string           Export OpenTelemetry traces to the specified endpoint. Use file:// for local JSON files, grpc:// for remote collectors
      --profiling string             Emit CPU and memory profiles and an execution trace to '[filename].[pid].{cpu,mem,trace}', respectively
      --tracing file:                Emit tracing to the specified endpoint. Use the file: scheme to write tracing data to a local file
  -v, --verbose int                  Enable verbose logging (e.g., v=3); anything >3 is very verbose
```

## SEE ALSO

* [pulumi package](/docs/iac/cli/commands/pulumi_package/)	 - Work with Pulumi packages


