# Robot Command Line Interface

> Robot Command Line Interface (UiRobot.exe) for starting automations, connecting to Orchestrator, and managing the Robot from a terminal.

The UiPath Robot Command Line Interface is a tool that allows you to interact with the Robot from a command line terminal. It uses the `UiRobot.exe` file to start automations, install processes, connect and disconnect the Robot from Orchestrator, and manage logs, tracing, the Robot session (PiP), proxy credentials, and the NuGet cache directly from the command line.

## How it works

To use the CLI, make sure of the following aspects:

* The Robot service is running
* You are in the directory in which the Robot is installed.

Then enter instructions or commands that refer to the `UiRobot.exe` program along with the necessary parameters, depending on what you want your automation to achieve.

`UiRobot.exe` is in the Robot installation folder: `%ProgramFiles%\UiPathPlatform\Robot\<version>` for a per-machine installation, or `%LocalAppData%\Programs\UiPathPlatform\Robot\<version>` for a per-user installation.

Command and option names aren't case-sensitive.

When the Robot runs in service mode, the `connect`, `disconnect`, and `flushlogs` commands require an elevated command prompt (run as administrator).

For example, to start a process from the command line, you would use the following command:

```
UiRobot.exe execute --file "C:\UiPath\Projects\YourProject\project.1.0.0.nupkg"
```

## Common UiRobot.exe commands

### Execute

Use this command to start the execution of a project file of the following types:

* NUPKG
* JSON (legacy projects only)
* XAML (legacy projects only)
  
:::note
With Robot version 2023.4 and onwards, UiPath refreshes the process list at the same time a process executes. If a process update is available at the job start, the job uses the older version of the process. Subsequent runs apply the updated process.
:::

The execute command uses the following arguments:

```
UiRobot.exe execute (--package-id <Package_ID> | --process-name <Process_Name> | --file <File_Path>) [--input <Input_Parameters>] [--folder <Orchestrator_Folder_Path>] [--entry <Entry_Point_Path>]
```

Use exactly one of `--package-id`, `--process-name`, and `--file`.

* `-p`, `--package-id <Package_ID>` - Starts the process with this package ID, from the Orchestrator feed or the local feed. The Robot uses the available version of the package.

  Examples:

  ```
  UiRobot.exe execute --package-id UiPathDemo
  ```

  ```
  UiRobot.exe execute -p UiPathDemo
  ```
* `-r`, `--process-name <Process_Name>` - Starts the process with this name, as defined in Orchestrator.

  Example:

  ```
  UiRobot.exe execute --process-name UiPathDemoProcess
  ```
* `-f`, `--file <File_Path>` - Starts the execution of a local project file. The target file can be NUPKG, or JSON or XAML for legacy projects only.

  Example:

  ```
  UiRobot.exe execute --file "C:\UiPath\Automation\project.1.0.0.nupkg"
  ```
* `--folder <Orchestrator_Folder_Path>` (optional) - The path of the Orchestrator folder from which to install and execute the target process, such as `Product/Development/QA`. Required when the process is deployed in more than one folder.

  Example:

  ```
  UiRobot.exe execute --package-id UiPathDemo --folder "Product/Development/QA"
  ```
* `-i`, `--input <Input_Parameters>` (optional) - Input arguments for the execution, in JSON format.

  Examples:

  ```
  UiRobot.exe execute --package-id UiPathDemo --input "{\"intArg\" : 3, \"strArg\" : \"hello\"}"
  ```

  ```
  UiRobot.exe execute --file "C:\UiPath\Automation\project.1.0.0.nupkg" --input "{\"intArg\" : 3, \"strArg\" : \"hello\"}"
  ```

  In PowerShell, enclose the JSON in single quotes: `--input '{\"intArg\" : 3, \"strArg\" : \"hello\"}'`.
* `--entry <Entry_Point_Path>` (optional) - Selects the entry point of the process. It applies to `.nupkg` files and `--package-id`. It is ignored when `--file` points to a `.xaml` or `.json` file, and you can't use it with `--process-name`.

  Example:

  ```
  UiRobot.exe execute --file "C:\UiPath\Project\project.1.0.3.nupkg" --entry "OtherEntryPoint.xaml"
  ```

  :::important
  * The following commands are not supported for Windows or cross-platform projects:
    ```
    UiRobot.exe execute --file "C:\UiPath\Automation\Main.xaml"
    ```
    ```
    UiRobot.exe execute --file "C:\UiPath\Automation\Project.json"
    ```
  * The `--process` argument of earlier versions still works as an alias of `--package-id`.
  :::

### Install process

Use this command to install a process. If the robot is connected to Orchestrator, it searches for the process in the Orchestrator feed. Without an Orchestrator connection, the robot uses the local feed.

The install process command uses the following arguments:

```
UiRobot.exe installprocess --process-name <process_name> [--folder <orchestrator_folder_path>]
```

* **`-p`, `--process-name <process_name>`** (mandatory) - The name of the process you want to install. The `-p` short form means process name here, but package ID in the `execute` command.
 
  Example:

  ```
  UiRobot.exe installprocess --process-name MyProcess
  ```
* **`--folder <orchestrator_folder_path>`** (optional) - The full path of the Orchestrator folder containing the process you want to install, such as `Product/Development/QA`. This argument applies only when the connection to Orchestrator is active. If only one folder contains the process for installation, skip this parameter. 
  
  Example:
  
  ```
  UiRobot.exe installprocess --process-name MyProcess --folder "Product/Development/QA"
  ```

### Connect

Use this command to connect your Robot to an Orchestrator instance. If your Robot is already connected to a different Orchestrator instance or with different credentials, the command returns the "Orchestrator already connected" message. Run `disconnect` first to switch. Running it again with the same URL and credentials succeeds and changes nothing.

The connect command uses the following arguments:

```
UiRobot.exe connect --url <Orchestrator_Server_URL> --clientId <Client_ID> --clientSecret <Client_Secret>
```

* `connect` - Establishes the connection to Orchestrator. Must be used together with the `--url`, `--clientId`, and `--clientSecret` arguments.

  Example:

  ```
  UiRobot.exe connect --url https://cloud.uipath.com/<Organization_Name>/<Tenant_Name>/orchestrator_ --clientId <Client_ID> --clientSecret <your-client-secret>
  ```

  The command also accepts `--url` with `--key <Machine_Key>` for a machine key connection. Robots connected with a machine key don't run agents, functions, or API workflows by default, and the command prints a message that calls machine key connections deprecated. For the differences, refer to [Connecting the Robot to Orchestrator](https://docs.uipath.com/robot/standalone/2026.10/admin-guide/connecting-robots-to-orchestrator-unattended).

### Disconnect

Use this command to disconnect the Robot from the current Orchestrator instance.

The disconnect command uses the following arguments:

```
UiRobot.exe disconnect [--force | --wait]
```

* **`disconnect`** - Disconnects the Robot from Orchestrator only when there are no running jobs on the robot machine. 
  
  Example:
  
  ```
  UiRobot.exe disconnect
  ```
* **`--force`** - Kills all running jobs on the machine and then disconnects the Robot from Orchestrator. 
  
  Example:
  
  ```
  UiRobot.exe disconnect --force
  ```
* **`--wait`** - Waits for running jobs to complete before disconnecting the Robot from Orchestrator. 
  
  Example:
  
  ```
  UiRobot.exe disconnect --wait
  ```

You can't use `--force` and `--wait` together. The `disconnectandsignout` command takes the same arguments, and also signs out the current user.

### Trace

Use this command to enable or disable low-level tracing of the UiPath drivers and the browser extension. Tracing of the Robot Executor and Service is always on, and the command prints a warning about it.

The trace command uses the following arguments:

```
UiRobot.exe trace --enableLowLevel | --disableLowLevel
```

* **`--enableLowLevel`** - Starts low-level tracing of the UiPath drivers and the browser extension. Requires administrator rights.
  
  Example:
  
  ```
  UiRobot.exe trace --enableLowLevel
  ```
* `--disableLowLevel` - Stops it and saves the trace as `UiPathTrace-<id>.etl` on the Desktop of the user who runs the command. Requires administrator rights. Without them, the command shows an error but still returns exit code `0`.

  Example:

  ```
  UiRobot.exe trace --disableLowLevel
  ```

### PiP

Use this command to enable or disable the Robot session or picture-in-picture capability on the machine. This setting modifies existing installations and applies to all users on the local machine. Requires administrator privileges.

The PiP command uses the following arguments:

```
UiRobot.exe pip --enable | --disable
```

* **`--enable`** - Enables the Robot session (PiP functionality) of the machine. 
  
  Example:
  
  ```
  UiRobot.exe pip --enable
  ```
* `--disable` - Disables the Robot session (PiP functionality) of the machine.

  Example:

  ```
  UiRobot.exe pip --disable
  ```

### Clean NuGet cache

Use this command to clean the NuGet caches: the global-packages cache (where restored `.nupkg` contents live) and the HTTP cache (NuGet feed response cache). Jobs should not be running during this operation. 

The clean NuGet cache command uses the following arguments:

```
UiRobot.exe cleannugetcache [--period <period_in_days>] [--timeout <timeout_in_minutes>] [--allow-unsafe]
```

* **`-p`, `--period <period_in_days>`** (optional, default `30`) - Deletes global-packages entries whose `.nupkg.metadata` file has not been accessed in the last X days. Stale or corrupt package folders (missing `.nupkg.metadata`) are removed regardless of this value, unless they are listed in `nugetclean.ignore`. The HTTP cache is wiped in full regardless of this value. Must be greater than `0`.

  Example:

  ```
  UiRobot.exe cleannugetcache --period 60
  ```
* **`-t`, `--timeout <timeout_in_minutes>`** (optional, default `10`) - Maximum time, in minutes, to wait for the cleanup. Press Ctrl+C to cancel the cleanup; the command then prints a partial summary.

  Example:

  ```
  UiRobot.exe cleannugetcache --timeout 20
  ```
* **`--allow-unsafe`** (optional, default `false`) - By default, the command refuses to run if the Robot packages folder (`PackagesInstallationFolder` in `UiPath.config`) differs from the default NuGet global-packages folder (a folder that may be shared with other users). Use this flag to force cleanup of the Robot packages folder. 

  :::important
  Cleaning a shared packages folder may break running jobs or apps belonging to other users sharing the folder.
  :::

  Example:

  ```
  UiRobot.exe cleannugetcache --period 30 --allow-unsafe
  ```

The command prints a summary of the cleanup, broken down by `global-packages` and `http-cache`, including how many entries were deleted out of the total that matched.

To protect package folders from the cleanup, list them in a `nugetclean.ignore` file in the global-packages folder. Write one package folder per line, as an absolute path or a path relative to the global-packages folder. A line with only a package ID keeps every version of that package. Blank lines and lines that start with `#` are ignored.

### Set proxy basic authentication credentials

Use this command to set proxy basic authentication credentials for the current user. The credentials are persisted locally and used by the Robot when communicating through a proxy that requires basic authentication.

The set proxy command uses the following arguments:

```
UiRobot.exe setproxy --username <user> --password <password> [--domain <domain>]
```

* **`--username <user>`** (mandatory) - The username for proxy basic authentication.
* **`--password <password>`** (mandatory) - The password for proxy basic authentication.

  Example:

  ```
  UiRobot.exe setproxy --username myuser --password <your-password>
  ```
* **`--domain <domain>`** (optional) - The domain for proxy basic authentication. Use this when the proxy requires domain-qualified credentials.

  Example:

  ```
  UiRobot.exe setproxy --username myuser --password <your-password> --domain MYDOMAIN
  ```

:::important
Running the command overwrites any previously stored proxy credentials.
:::

### Other arguments

The following arguments are purely informative and have no impact on your automation projects:

* `version` - Displays information about the Robot version. The `--version` form also works.
* `--help` - Displays the list of supported commands, as well as corresponding information and examples.
* `flushlogs [--timeout <timeout_in_seconds>]` - Sends all pending logs to Orchestrator. The default timeout is 30 seconds.

## Exit codes

`UiRobot.exe` returns the following exit codes:

| Exit code | Meaning |
|---|---|
| `0` | The command succeeded. For `execute`, the job completed successfully. |
| `1` | For `execute`, the job failed. For `cleannugetcache`, the cleanup didn't complete successfully. |
| `2` | For `execute`, the job suspended. The command prints the `resumeId` of the suspended job. |
| `-1` | The command was used incorrectly (invalid or missing arguments), or it failed with an error. |
