# uip rpa-legacy

> `uip rpa-legacy` is a Windows-only wrapper around the legacy `uipcli.exe` (the 2025.10 .NET CLI) for Studio-side commands that have not been ported to the cross-platform [`uip rpa`](./uip-rpa.md) tool. Use it for **debug**, **validate**, **find-activities**, **find-package**, **type-definition**, and the legacy **package** path. Cross-platform users — Linux, macOS, or Windows pipelines that do not need these features — should use [`uip rpa`](./uip-rpa.md) instead.

`uip rpa-legacy` is a Windows-only wrapper around the legacy `uipcli.exe` (the 2025.10 .NET CLI) for Studio-side commands that have not been ported to the cross-platform [`uip rpa`](./uip-rpa.md) tool. Use it for **debug**, **validate**, **find-activities**, **find-package**, **type-definition**, and the legacy **package** path. Cross-platform users — Linux, macOS, or Windows pipelines that do not need these features — should use [`uip rpa`](./uip-rpa.md) instead.

The tool is published as `@uipath/rpa-legacy-tool` on the GitHub npm registry. It bundles `uipcli.exe` under the hood and shells out to it for every verb. Output is shaped to fit the standard `uip` JSON envelope, so existing scripts that consume `uip` JSON keep working.

:::warning
**Windows-only**

Every `uip rpa-legacy` verb refuses to run on macOS or Linux with a `ConfigError`. The bundled `uipcli.exe` is a Windows-only binary; this is by design and will not change. For cross-platform pipelines, use [`uip rpa`](./uip-rpa.md).
:::

## Verbs

| Verb | Purpose |
|---|---|
| [`find-activities`](./uip-rpa-legacy-find-activities.md) | Search activities exposed by a project's dependencies. |
| [`type-definition`](./uip-rpa-legacy-type-definition.md) | Inspect a .NET type from project dependencies. |
| [`find-package`](./uip-rpa-legacy-find-package.md) | Search NuGet packages across configured feeds. |
| [`validate`](./uip-rpa-legacy-validate.md) | Validate a XAML file or project for compilation errors. |
| [`debug`](./uip-rpa-legacy-debug.md) | Execute a XAML workflow locally via UiRobot. |
| [`package`](./uip-rpa-legacy-package.md) | Pack an RPA project into a `.nupkg` using the legacy packager. |

## When to use this tool

| Need | Use |
|---|---|
| Pack a Studio project on Linux, macOS, or as part of a cross-platform pipeline | [`uip rpa pack`](./uip-rpa-pack.md) |
| Run the workflow analyzer on Linux/macOS | [`uip rpa analyze`](./uip-rpa-analyze.md) |
| Restore Studio dependencies on Linux/macOS | [`uip rpa restore`](./uip-rpa-restore.md) |
| Debug a XAML workflow locally via UiRobot | [`uip rpa-legacy debug`](./uip-rpa-legacy-debug.md) |
| Validate a XAML workflow / project for compile errors | [`uip rpa-legacy validate`](./uip-rpa-legacy-validate.md) |
| Inspect a .NET type from project dependencies | [`uip rpa-legacy type-definition`](./uip-rpa-legacy-type-definition.md) |
| Search activities in project dependencies | [`uip rpa-legacy find-activities`](./uip-rpa-legacy-find-activities.md) |
| Search NuGet packages across configured feeds | [`uip rpa-legacy find-package`](./uip-rpa-legacy-find-package.md) |
| Pack with the legacy `uipcli` packager directly | [`uip rpa-legacy package`](./uip-rpa-legacy-package.md) |

## Prerequisites

- **Windows.** Every verb verifies the host OS and exits with a `ConfigError` on non-Windows.
- **.NET runtime.** The bundled `uipcli.exe` requires .NET; `rpa-legacy` does not install .NET for you.
- **UiRobot installed locally** for [`debug`](./uip-rpa-legacy-debug.md) — the verb invokes the local UiRobot to execute the workflow.
- Tool installed: `uip tools install @uipath/rpa-legacy-tool`. Auto-install also runs on first invocation.

## Synopsis

```
uip rpa-legacy <verb> [options]
```

All verbs honor the [global options](./global-options.md) (`--output`, `--output-filter`, `--log-level`, `--log-file`) and the standard [exit codes](./exit-codes.md).

## Migration from legacy uipcli

If you previously called `uipcli debug`, `uipcli validate`, `uipcli package`, etc., the verbs map directly:

| Legacy invocation | uip equivalent |
|---|---|
| `uipcli debug <xaml> -i <json>` | `uip rpa-legacy debug <xaml> --input <json>` |
| `uipcli validate <path>` | `uip rpa-legacy validate <path>` |
| `uipcli package <project> -o <dir>` | `uip rpa-legacy package <project> -o <dir>` |
| `uipcli find-activities <project> --query <q>` | `uip rpa-legacy find-activities <project> --query <q>` |
| `uipcli find-package --query <q>` | `uip rpa-legacy find-package --query <q>` |
| `uipcli type-definition <project> --type <name>` | `uip rpa-legacy type-definition <project> --type <name>` |

Output is wrapped in the `uip` JSON envelope; pipelines that parse legacy text output need to adapt or pass `--output table` for human reading.

## See also

- [`uip rpa`](./uip-rpa.md) — the cross-platform replacement for verbs that have been ported.
- [Global options](./global-options.md)
- [Exit codes](./exit-codes.md)
