# uip maestro flow debug

> Syntax and options for `uip maestro flow debug`, which uploads a local Flow project to Studio Web and runs a server-side debug session with streamed status updates.

`uip maestro flow debug` uploads a local Flow project to **Studio Web** and runs a server-side debug session, streaming per-element status updates back to the console and returning a final status.

## Synopsis

```
uip maestro flow debug <project-path>
               [--folder-id <id>]
               [--poll-interval <ms>]
               [-i, --inputs <json>]
               [--login-validity <minutes>]
```

Requires `uip login`. Honors [global options](./global-options.md). Exit codes follow the [standard contract](./exit-codes.md).

## Arguments

- `<project-path>` *(required)* — path to the Flow project directory. Must contain a `project.uiproj`.

## Options

| Option | Default | Description |
|---|---|---|
| `--folder-id <id>` | auto-detected | Orchestrator folder (`OrganizationUnitId`). If omitted, the folder on the current login session is used. Parsed as an integer. |
| `--poll-interval <ms>` | `2000` | Polling interval in milliseconds while waiting for Studio Web to advance the session. |
| `-i, --inputs <json>` | — | Input arguments as a JSON string, or `@path/to/file.json` to read from a file. Also read from stdin if neither is provided (via [`uip maestro flow process run`](./uip-maestro-flow-process.md#uip-maestro-flow-process-run), not here — `debug` accepts JSON string or `@file` only). |
| `--login-validity <minutes>` | `10` | Minimum minutes before token expiration to trigger an automatic refresh. |

## Behavior

1. Validates login and pulls the organization, tenant, base URL, organization name, and auth token from the session.
2. Uploads the project to Studio Web under the target folder.
3. Polls for a final status, emitting per-element status lines like:
   ```
   Status: InProgress (2/5 elements completed)
     v Node_1 [Completed]
     > Node_2 [InProgress]
     - Node_3 [NotStarted]
   ```
4. On incidents during the run, emits a warning line.
5. Exits `0` if `finalStatus` is `Completed` or `Successful`; `1` otherwise.

## Examples

```bash
# Debug a local project, auto-detect folder, default poll interval
uip maestro flow debug ./invoice-flow

# Debug against a specific folder with inline JSON inputs
uip maestro flow debug ./invoice-flow --folder-id 2553016 \
  --inputs '{"amount":100,"customer":"Acme"}'

# Debug with inputs from a file
uip maestro flow debug ./invoice-flow --inputs @inputs.json

# Slower polling for long-running flows
uip maestro flow debug ./invoice-flow --poll-interval 5000
```

## Data shape (--output json)

```json
{
  "Code": "FlowDebug",
  "Data": {
    "jobKey": "b2c3d4e5-0000-0000-0000-000000000001",
    "instanceId": "c3d4e5f6-0000-0000-0000-000000000001",
    "runId": "d4e5f6a7-0000-0000-0000-000000000001",
    "finalStatus": "Completed",
    "solutionId": "e5f6a7b8-0000-0000-0000-000000000001",
    "studioWebUrl": "https://cloud.uipath.com/org/tenant/studio_/debug/e5f6a7b8",
    "elementExecutions": [
      { "elementId": "Node_1", "status": "Completed" }
    ],
    "variables": {}
  }
}
```

Open `studioWebUrl` in a browser to inspect the session interactively.

## See also

- [`uip maestro flow validate`](./uip-maestro-flow-validate.md) — static check before running
- [`uip maestro flow process run`](./uip-maestro-flow-process.md#uip-maestro-flow-process-run) — run a *published* process
- [`uip maestro flow job traces`](./uip-maestro-flow-job.md#uip-maestro-flow-job-traces) — stream traces for an already-started job
- [Authentication](./authentication.md)
- [Flow overview](./uip-maestro-flow.md)
