# uip maestro flow publish

> Syntax and options for `uip maestro flow publish`, which packs a Flow project and uploads the resulting `.nupkg` directly to Orchestrator packages.

`uip maestro flow publish` packs a Flow project directory and uploads the resulting `.nupkg` to Orchestrator packages in one step — a shortcut for `uip maestro flow pack` followed by a manual upload.

## Synopsis

```
uip maestro flow publish <project-path> [output-path] [-n <name>] [-v <version>] [--feed-id <id> | --folder-key <key> | --folder-path <path>]
```

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

## Arguments

- `<project-path>` *(required)* — path to the Flow project directory (must contain `project.uiproj` and at least one `.flow` file).
- `[output-path]` *(optional)* — directory where the generated `.nupkg` is written before upload. Defaults to a temp directory (`<os-tmpdir>/flow-publish-<timestamp>`).

## Options

| Option | Default | Description |
|---|---|---|
| `-n, --name <name>` | project folder name | Package name. |
| `-v, --version <version>` | `1.0.0` | Package version. |
| `--feed-id <feedId>` | tenant feed | Target feed ID. Mutually exclusive with `--folder-key`/`--folder-path`. |
| `--folder-key <key>` | — | Orchestrator folder key (GUID) whose folder-hierarchy feed to publish into — the CLI resolves the feed ID automatically. Mutually exclusive with `--feed-id`/`--folder-path`. |
| `--folder-path <path>` | — | Orchestrator folder path, e.g. `Shared/Sub` — resolved to a feed ID the same way as `--folder-key`. Mutually exclusive with `--feed-id`/`--folder-key`. |

## Examples

```bash
# Pack and publish to the tenant feed
uip maestro flow publish ./my-flow-project --version 1.2.0

# Publish into a specific folder's feed
uip maestro flow publish ./my-flow-project --folder-key c3d4e5f6-… --version 1.2.0
```

## Data shape (--output json)

```json
{
  "Code": "FlowPublish",
  "Data": {
    "Package": "my-flow-project@1.2.0",
    "PackagePath": "/tmp/flow-publish-1710000000000/my-flow-project.flow.Flow.1.2.0.nupkg",
    "Upload": [
      { "key": "my-flow-project.flow.Flow.1.2.0.nupkg", "status": "Created" }
    ]
  }
}
```

`Upload[].status` is `"Created"` the first time a given package version is uploaded, or the feed's own conflict status on a repeat upload of the same name/version.

## See also

- [`uip maestro flow pack`](./uip-maestro-flow-pack.md) — pack only, without uploading
- [`uip maestro flow init`](./uip-maestro-flow-init.md) — scaffold the project first
- [`uip maestro flow process`](./uip-maestro-flow-process.md) — run the published process
- [Flow overview](./uip-maestro-flow.md)
