# uip solution

> `uip solution` builds, publishes, and deploys **solutions** — bundles of UiPath projects (RPA workflows, test cases, libraries, agents, Maestro flows, and apps) shipped and versioned as a single artifact. A solution is defined by a `.uipx` manifest at the root of a solution directory; every project listed in that manifest travels together through pack, publish, and deploy.

`uip solution` builds, publishes, and deploys **solutions** — bundles of UiPath projects (RPA workflows, test cases, libraries, agents, Maestro flows, and apps) shipped and versioned as a single artifact. A solution is defined by a `.uipx` manifest at the root of a solution directory; every project listed in that manifest travels together through pack, publish, and deploy.

Most of your time in this tool is spent on three steps: scaffold or edit a solution locally (`new`, `project`), package it into a `.zip` (`pack`), and deploy the packaged version to Orchestrator (`publish` + `deploy run`). See [Your first pipeline](./first-pipeline.md) for the end-to-end walkthrough.

## Verb taxonomy

| Verb family | Operates on | Purpose |
|---|---|---|
| [`new`](./uip-solution-new.md) | Local filesystem | Scaffold an empty `.uipx` solution directory. |
| [`project`](./uip-solution-project.md) | Local `.uipx` | Add, import, or remove projects inside the solution manifest. |
| [`resource`](./uip-solution-resource.md) (via `uip solution resource …`) | Local solution | List and refresh shared resource declarations (queues, assets, buckets, processes, connections) inside a solution. Do not confuse with `uip resource`, the Orchestrator resource tool. |
| [`pack`](./uip-solution-pack.md) | Local solution | Produce a deployable `.zip` package from a solution directory or `.uis` file. |
| [`publish`](./uip-solution-publish.md) | Tenant feed | Upload a packed `.zip` to the UiPath solution feed. |
| [`upload`](./uip-solution-upload.md) | Studio Web | Upload a solution for browser-based editing in Studio Web. |
| [`delete`](./uip-solution-deploy.md#uip-solution-delete) | Studio Web | Delete a Studio Web solution by ID. |
| [`packages`](./uip-solution-packages.md) | Tenant feed | List and delete published solution packages. |
| [`deploy`](./uip-solution-deploy.md) | Orchestrator | Run a deployment, check status, activate, uninstall, and edit deploy configuration files. |

`uip solution` is provided by the `@uipath/solution-tool` plugin. If it is not yet installed, `uip tools install solution` adds it. See [Tools (plugins)](./concepts-tools.md).

## Synopsis

```
uip solution new <solutionName>
uip solution project add <projectPath> [solutionFile]
uip solution project import --source <path> [--solutionFile <path>]
uip solution project remove <projectPath> [solutionFile]
uip solution resource list [solutionPath] [--kind <kind>] [--search <term>] [--source <all|local|remote>]
uip solution resource refresh [solutionPath]

uip solution pack <solutionPath> <outputPath> [--name <name>] [--version <version>]
uip solution publish <packagePath> [--tenant <tenant-name>]
uip solution upload <solutionPath>
uip solution delete <solution-id>

uip solution packages list [--take <n>] [--order-by <column>] [--order-direction <dir>]
uip solution packages delete <packageName> <packageVersion>

uip solution deploy run --name <n> --package-name <n> --package-version <v> --folder-name <n> [--folder-path <path>] [--config-file <path>]
uip solution deploy status <pipeline-deployment-id>
uip solution deploy activate <deployment-name>
uip solution deploy list [--folder-path <path>] [--take <n>]
uip solution deploy uninstall <deployment-name>
uip solution deploy config get <package-name> [--package-version <v>] [-d <path>]
uip solution deploy config set <file> [--all] <args...>
uip solution deploy config link <file> <resource> --name <n> [--folder-path <path>]
uip solution deploy config unlink <file> <resource>
```

Every subcommand honours the [global options](./global-options.md) (`--output`, `--output-filter`, `--log-level`, `--log-file`) and returns the [standard exit codes](./exit-codes.md). Default output is **JSON**.

## End-to-end flow

```
┌──────────┐   ┌────────────┐   ┌──────────┐   ┌──────────────┐   ┌──────────────────┐
│ solution │   │ solution   │   │ solution │   │ solution     │   │ solution deploy  │
│ new      │ → │ project    │ → │ pack     │ → │ publish      │ → │ run              │
│          │   │ add/import │   │          │   │ (tenant feed)│   │ (Orchestrator)   │
└──────────┘   └────────────┘   └──────────┘   └──────────────┘   └──────────────────┘
```

1. **Scaffold.** `uip solution new my-solution` creates a directory with an empty `.uipx` manifest.
2. **Populate.** `uip solution project add ./my-solution/my-project ./my-solution/my-solution.uipx` registers a project subfolder, or `uip solution project import --source ./external --solutionFile ./my-solution/my-solution.uipx` copies an external project in.
3. **Pack.** `uip solution pack ./my-solution ./dist --version 1.0.0` produces `./dist/my-solution.1.0.0.zip`.
4. **Publish.** `uip solution publish ./dist/my-solution.1.0.0.zip` uploads the `.zip` to the tenant solution feed.
5. **Deploy.** `uip solution deploy run --name my-deployment --package-name my-solution --package-version 1.0.0 --folder-name MySolution --folder-path Shared` creates an Orchestrator folder, provisions resources (queues, assets, processes), and activates the solution.

For interactive authoring, substitute step 3 with `uip solution upload ./my-solution` to open the solution in [UiPath Studio Web](https://docs.uipath.com/studio-web) instead of packing it for deployment.

Each step of this flow is documented on the page linked in the [verb taxonomy](#verb-taxonomy) table above. The full worked example lives in [Your first pipeline](./first-pipeline.md).

## Authentication

All commands that talk to Orchestrator — `publish`, `upload`, `delete`, `packages list`, `packages delete`, and every `deploy …` subcommand — require an active session. Run `uip login` once; pass `-t, --tenant <tenant-name>` on any subcommand to target a specific tenant within your authenticated organization. See [Authentication](./authentication.md).

Local commands (`new`, `project add/import/remove`, `pack`, `resource list/refresh`) work offline against files on disk.

## See also

- [Your first pipeline](./first-pipeline.md) — hands-on walkthrough of pack → publish → deploy run.
- [Tools (plugins)](./concepts-tools.md) — how the solution tool is distributed and versioned.
- [Authentication](./authentication.md) and [Configuration](./configuration.md) — session setup and per-tenant defaults.
- [Global options](./global-options.md) and [Exit codes](./exit-codes.md) — contracts shared by every verb.
- [`uip resource`](./uip-resource.md) — Orchestrator resource CRUD (assets, buckets, queues, libraries, triggers, webhooks). Not to be confused with `uip solution resource`, which inspects local solution resource declarations.
