UiPath Documentation
uipath-cli
latest
false
UiPath CLI user guide

uip maestro flow init

Syntax and options for `uip maestro flow init`, which scaffolds a new Flow project with a minimal manifest and starter `.flow` file.

uip maestro flow init scaffolds a new Flow project directory with a minimal manifest and a starter .flow file containing a single manual-trigger node.

Synopsis​

uip maestro flow init <name> [--force] [--skip-solution-registration] [--automate] [--sdk-source [file]]
uip maestro flow init <name> [--force] [--skip-solution-registration] [--automate] [--sdk-source [file]]

Honors global options. Exit codes follow the standard contract.

Arguments​

  • <name> (required) — project folder name. Allowed characters: letters, numbers, underscores (_), and hyphens (-).

Options​

  • --force — initialize even if the target directory exists and is non-empty. Existing files are not cleared — files are written alongside; this is useful for reinitializing inside a pre-created folder.
  • --skip-solution-registration — do not auto-register this project in the surrounding solution (see Behavior below).
  • --automate — create a Maestro Automate project. The project and the commands that operate on it are the same as for a standard Flow project; only the runtime profile written into operate.json differs.
  • --sdk-source [file] — also write the builder-SDK source for the new project: decompile the starter .flow file into <project>/.flow-sdk/<name>.flow.ts, or into [file] (relative to the current directory), creating its folder. The result is the same as running uip maestro flow decompile <name>.flow -o <file> --no-pipeline after init. Requires @uipath/maestro-builder-sdk 6.11.1 or later, installed in the project or globally. If [file] already exists, the command fails unless you pass --force.

Behavior​

The command writes these files into <name>/:

  • project.uiproj — { "Name": "<name>", "ProjectType": "Flow" }
  • operate.json — the project's runtime settings, including the runtime profile that --automate selects
  • <name>.flow — seed Flow JSON containing:
    • One core.trigger.manual start node wired to a generated entryPointId
    • The matching node definition in definitions[]
    • Empty edges, bindings, variables
    • Canvas layout.nodes.start position

Solution auto-registration. Unless --skip-solution-registration is passed:

  • If the current directory is already inside a solution, <name>/ is created there and registered as a project in that solution's .uipx manifest.
  • If the current directory is not inside a solution, a parent solution named <name>Solution is scaffolded automatically — the Flow project ends up nested at <name>Solution/<name>/, not at <name>/ in the current directory as a literal reading of the synopsis might suggest.

If <name> already exists and is non-empty and --force is not set, the command fails with an error prompting the user to pass --force.

With --sdk-source, the command checks for @uipath/maestro-builder-sdk before it creates anything. If the project is created but writing the SDK source fails, the error names the uip maestro flow decompile command that writes the source for the existing project.

Examples​

# Create a new project in ./invoice-flow
uip maestro flow init invoice-flow

# Reinitialize into an existing non-empty folder (e.g. a Git repo)
uip maestro flow init invoice-flow --force

# Create a Maestro Automate project
uip maestro flow init my-automate --automate

# Create a project inside an existing solution and write its builder-SDK source
cd MySolution && uip maestro flow init my-flow --sdk-source
# Create a new project in ./invoice-flow
uip maestro flow init invoice-flow

# Reinitialize into an existing non-empty folder (e.g. a Git repo)
uip maestro flow init invoice-flow --force

# Create a Maestro Automate project
uip maestro flow init my-automate --automate

# Create a project inside an existing solution and write its builder-SDK source
cd MySolution && uip maestro flow init my-flow --sdk-source

Data shape (--output json)​

{
  "Code": "FlowInit",
  "Data": {
    "Status": "Created successfully",
    "Path": "/workspace/my-flow-projectSolution/my-flow-project",
    "SolutionRegistration": {
      "Status": "Registered",
      "Message": "Project registered in parent solution.",
      "Solution": "/workspace/my-flow-projectSolution/my-flow-projectSolution.uipx",
      "Project": "my-flow-project/project.uiproj",
      "ProjectId": "00000000-0000-0000-0000-000000000000",
      "Instructions": "The project is listed in the parent solution manifest.
Packing or uploading the solution will sync solution resources automatically."
    },
    "AutoCreatedSolution": {
      "Name": "my-flow-projectSolution",
      "Path": "/workspace/my-flow-projectSolution",
      "SolutionFile": "/workspace/my-flow-projectSolution/my-flow-projectSolution.uipx"
    },
    "ProjectArtifacts": { "Created": true },
    "NextSteps": "The project is listed in the parent solution manifest.
Packing or uploading the solution will sync solution resources automatically."
  }
}
{
  "Code": "FlowInit",
  "Data": {
    "Status": "Created successfully",
    "Path": "/workspace/my-flow-projectSolution/my-flow-project",
    "SolutionRegistration": {
      "Status": "Registered",
      "Message": "Project registered in parent solution.",
      "Solution": "/workspace/my-flow-projectSolution/my-flow-projectSolution.uipx",
      "Project": "my-flow-project/project.uiproj",
      "ProjectId": "00000000-0000-0000-0000-000000000000",
      "Instructions": "The project is listed in the parent solution manifest.
Packing or uploading the solution will sync solution resources automatically."
    },
    "AutoCreatedSolution": {
      "Name": "my-flow-projectSolution",
      "Path": "/workspace/my-flow-projectSolution",
      "SolutionFile": "/workspace/my-flow-projectSolution/my-flow-projectSolution.uipx"
    },
    "ProjectArtifacts": { "Created": true },
    "NextSteps": "The project is listed in the parent solution manifest.
Packing or uploading the solution will sync solution resources automatically."
  }
}

AutoCreatedSolution is present only when a parent solution was scaffolded automatically (i.e. the command wasn't run inside an existing solution). SolutionRegistration is always present; with --skip-solution-registration, its Status is OptedOut. SdkSource (the path of the written builder-SDK source) is present only with --sdk-source.

On failure, Code is absent and the response carries Result: "Failure", Message, and Instructions.

See also​

Was this page helpful?

Connect

Need help? Support(opens in new window)

Want to learn? UiPath Academy(opens in new window)

Have questions? UiPath Forum(opens in new window)

Stay updated