- Overview
- Get started
- Concepts
- Using UiPath CLI
- How-to guides
- CI/CD recipes
- Command reference
- Overview
- Exit codes
- Global options
- uip codedagent
- uip coder
- uip context-grounding
- uip docsai
- uip function
- uip guardrails
- uip llm-configuration
- uip llm-gateway
- uip model-hub
- add-test-data-entity
- add-test-data-queue
- add-test-data-variation
- analyze
- build
- create-project
- diff
- find-activities
- get-analyzer-rules
- get-default-activity-xaml
- get-errors
- get-manual-test-cases
- get-manual-test-steps
- get-library-object-repository
- get-object-repository
- get-versions
- get-workflow-example
- indicate-application
- indicate-element
- inspect-package
- install-data-fabric-entities
- install-or-update-packages
- list-data-fabric-entities
- list-instances
- list-workflow-examples
- pack
- publish
- remote
- restore
- run, debug & execution
- run-file
- search-templates
- start-studio
- stop-execution
- tm
- uia
- uip tasks
- uip traces
- uip traces feedback
- Migration
- Reference & support
Tools architecture in UiPath CLI, covering how installable npm packages extend the host with new top-level commands.
UiPath CLI is a small host wrapped around a set of installable tools. Each tool is an ordinary npm package that registers one top-level command (and its subcommands) with the host. This is the single most important concept for understanding why uip works the way it does — what installs automatically, what doesn't, how versions are kept in sync, and why uip --help shows different commands on different machines.
Host and tools
The host (@uipath/cli, the uip executable) owns only a narrow set of concerns:
- Authentication (
uip login,uip logout,uip login status,uip login tenant …). - Session and credential management.
- Tool lifecycle (
uip tools list / search / install / update / uninstall). - Skills for coding agents (
uip skills install / update / uninstall). - The Model Context Protocol bridge (
uip mcp). - Shell completion installation (
uip completion). - Global options (
--output,--output-filter,--log-level,--log-file) and the JSON output envelope.
Everything that touches a UiPath surface — Orchestrator, Solutions, Agents, Flows, Maestro, RPA packaging, Test Manager, Integration Service, Data Fabric, Insights, Traces, DocsAI, API Workflow, Vertical Solutions, Coded Agents, and Coded Apps — lives in a separate npm package that the host loads on demand.
Why the split:
- Independent release cadences — the Orchestrator tool can ship without re-releasing the host, and vice versa.
- Smaller install footprint — a user who only runs test pipelines does not need the Flow or Maestro tools on disk.
- Stable contract — tools talk to the host through a versioned programmatic interface (command registration, output envelope, context, telemetry), not through shared internals.
- Faster startup — tool code is loaded lazily. The host does the minimum to parse argv and identify the relevant tool, then requires that tool's bundle once.
The auto-install whitelist
A set of UiPath-owned tools is on an auto-install whitelist. The host knows them by their command alias and maps the alias to an npm package:
| Alias | Package | Long name |
|---|---|---|
or | @uipath/orchestrator-tool | Orchestrator (jobs, folders, processes, packages, machines, users, roles, licenses, assets, queues, storage buckets, libraries, triggers, webhooks) |
solution | @uipath/solution-tool | Solution |
rpa | @uipath/rpa-tool | RPA (Studio packaging, analyzer, restore) |
agent | @uipath/agent-tool | Agent |
codedagent | @uipath/codedagent-tool | Coded Agent |
codedapp | @uipath/codedapp-tool | Coded App |
maestro | @uipath/maestro-tool | Maestro |
tm | @uipath/test-manager-tool | Test Manager |
is | @uipath/integrationservice-tool | Integration Service |
vss | @uipath/vertical-solutions-tool | Vertical Solutions |
api-workflow | @uipath/api-workflow-tool | API Workflow |
df | @uipath/data-fabric-tool | Data Fabric |
insights | @uipath/insights-tool | Insights |
traces | @uipath/traces-tool | Traces |
docsai | @uipath/docsai-tool | DocsAI |
rpa-legacy | @uipath/rpa-legacy-tool | RPA Legacy — Windows-only wrapper around uipcli.exe for the Studio commands not yet ported to the cross-platform rpa tool (debug, validate, find-activities, find-package, type-definition, package). See uip rpa-legacy. |
eval | @uipath/eval-tool | Runtime evaluation of deployed packages against an Orchestrator process — evaluators, eval sets, evaluations, schedules. Standalone package, not a sub-command of or. |
platform | @uipath/platform-tool | Platform — tenant licensing, user bundles, group rules, consumables |
admin | @uipath/admin-tool | Admin — users, groups, robot accounts, external apps, SMTP, authorization, IP restriction, organizations, tenants, VPN gateways, resource catalog, audit |
gov | @uipath/gov-tool | Governance — AOps policies, access policies, compliance packs |
agenthub | @uipath/agenthub-tool | AgentHub — MCP server registrations, tools, remote A2A agents |
ah | @uipath/automation-hub-tool | Automation Hub — ideas, pipeline, taxonomy, users |
aops | @uipath/aops-tool | StudioAdmin AOps — connections, repos, projects, solutions, pipelines, executions |
coder | @uipath/coder-tool | Coder — AI coding agent (Preview build only) |
context-grounding | @uipath/context-grounding-tool | Context Grounding — Python bridge |
conversational | @uipath/conversational-tool | Conversational — chat, agents, conversation history, trunks |
function | @uipath/function-tool | Functions — build, serve, publish JS/TS and Python Functions |
guardrails | @uipath/guardrails-tool | Guardrails — BYO guardrail configurations, AI Trust Layer |
ixp | @uipath/ixp-tool | IXP — Intelligent Document Processing (projects, taxonomy, documents, deployments) |
llm-configuration | @uipath/llmgw-tool | LLM Configuration — BYO LLM connections, AI Trust Layer. Note the package name (llmgw-tool) does not match the alias. |
llm-gateway | @uipath/llm-gateway-tool | LLM Gateway — list available models. A separate package from llm-configuration above, despite the similar name. |
model-hub | @uipath/model-hub-tool | Model Hub — LLM Gateway routing configuration |
pm | @uipath/pm-tool | Process Mining — apps, transformations, data ingestion |
tasks | @uipath/tasks-tool | Action Center tasks — catalogs, comments, labels, metadata, data |
The host treats everything else as not-a-tool. This table matches the current TOOLS_WHITELIST exactly — every entry has a reference page on this site. @uipath/flow-tool and @uipath/case-tool are deliberately absent: they are not independently whitelisted, but dependencies that @uipath/maestro-tool imports directly to register its flow and case branches (see the note on About UiPath CLI).
What installs automatically, and what doesn't
Nothing is preinstalled. A fresh npm install -g @uipath/cli puts only the host on disk.
Two ways a tool is installed on your machine:
-
Auto-install on first use. The first time you invoke a command whose prefix matches a whitelist entry — for example
uip or folders listbefore the Orchestrator tool is installed — the host downloads and installs@uipath/orchestrator-toolfrom npm, then runs your command. Subsequent invocations use the installed tool directly, so the second run is fast. -
Explicit install. Run
uip tools install <alias>(or the full package name). Same end state; faster at runtime because no auto-install step is needed. See uip tools reference.
Use explicit install in CI runners and for offline environments so that build times are deterministic and the first command in a job does not pay the one-time download cost. See the install guide's auto-install section for the full tradeoff.
CI=true does not disable auto-install — that variable is not consulted anywhere in the auto-install path. The real opt-out is UIPATH_CLI_DISABLE_AUTOINSTALL=true, which turns off implicit tool installs entirely, including the daily per-tool freshness check (see Version resolution below). Without it, the pragmatic workaround is still to pre-install the tools you know you'll use — auto-install is a no-op when the tool is already present.
Third-party tools are not supported in UiPath CLI 1.x. The host validates against the whitelist at install time, so uip tools install my-company/some-tool fails with a ValidationError. A public extension mechanism may appear in a later version; for now, uip only loads the tools in the table above.
Where tools live on disk
Tools install into an @uipath/ folder under the npm prefix that owns the CLI's entry script:
- If you installed
@uipath/cliglobally (npm install -g @uipath/cli), tools install globally next to it — at$(npm root -g)/@uipath/<tool-name>/. - If you installed the CLI into a local project (
npm install @uipath/cliinside a package), tools install locally next to it — at that project'snode_modules/@uipath/<tool-name>/.
In other words, tools follow the CLI: global CLI, global tools; local CLI, local tools. This is handled automatically — you do not need to pass any scope flag to uip tools install.
Run uip tools list to see which tools are installed and what version. Run npm root -g to find the global install path on your machine.
Version resolution — tools track the host
By default, each tool version is pinned to the CLI's major.minor line. When you run uip tools install or with CLI 1.0.x, the host resolves the latest @uipath/orchestrator-tool whose version begins with 1.0. and installs that. When you run uip tools update, every installed tool is bumped to the latest version still within the CLI's major.minor line.
The practical consequences:
- Upgrading the CLI to a new MINOR version is a two-step operation. After
npm install -g @uipath/cli@1.1.0, runuip tools updateto bring every installed tool to the 1.1.x line. - Pinning the CLI effectively pins all tools.
npm install -g @uipath/cli@1.0.3and thenuip tools updateproduces a deterministic set of tool versions on any machine. - Host and tools ship compatible protocol changes together. A tool built against 1.1.x may call internal contract that 1.0.x doesn't know about — allowing mixed CLI+tool versions would risk loading a tool the host cannot understand.
You can override the default and install a specific tool version explicitly:
uip tools install orchestrator-tool@1.2.3
uip tools update --name @uipath/orchestrator-tool --version 1.2.5
uip tools install orchestrator-tool@1.2.3
uip tools update --name @uipath/orchestrator-tool --version 1.2.5
Preview builds are not selected with an npm dist-tag like @beta on the install command — that syntax doesn't exist. Instead, the CLI-wide release channel is a config setting, core.updateChannel, managed with uip config:
uip config set updateChannel preview # opt into preview tool builds
uip tools install orchestrator-tool # now resolves the preview line
uip config set updateChannel stable # switch back
uip config set updateChannel preview # opt into preview tool builds
uip tools install orchestrator-tool # now resolves the preview line
uip config set updateChannel stable # switch back
updateChannel is one of stable (default) or preview; a third, unadvertised dev channel exists for CLI builds published from main. Preview commands within an otherwise-stable tool are labeled independently; see Versioning and stability.
The CLI also keeps itself and its tools fresh automatically. Once a day, the first eligible uip command checks for a newer CLI version on the configured channel and re-executes itself on it if one exists (never crossing a new MAJOR version unattended); separately, each installed tool is refreshed to the latest version on the CLI's own line the first time you use it each day. Both checks fail closed rather than silently skip if they can't complete. Disable both with UIPATH_CLI_DISABLE_VERSION_SYNC=true. To freeze the version line yourself instead of tracking "latest," pin it with uip config set version <major.minor[.patch]> — see uip config for the exact version/updateChannel contract.
To verify which tool versions are on a machine after a deploy, uip tools list --output json prints the name, version, and command prefix of each installed tool. Diff this against a known-good snapshot to catch drift.
How the host loads tools
When uip <alias> … runs:
- The host reads argv, strips global flags (
--output,--log-level, etc.), and identifies the first non-flag token as a potential tool alias. - If the alias matches an installed tool, the host loads that tool on demand and asks it to register its subcommands.
- If the alias is on the whitelist but the tool is not installed, the host runs auto-install (see above) and then goes to step 2.
- If the alias is not on the whitelist and not a recognized host command, the host fails with "unknown command" and prints usage.
That is the entire loading model. There is no plugin manifest, no registry config file, no user-editable list. The whitelist built into the host package is the source of truth.
What to read next
- uip tools reference — full syntax and examples for every
uip toolssubcommand. - Installing UiPath CLI — install the host; tools follow from there.
- Controlling tool auto-install —
UIPATH_CLI_DISABLE_AUTOINSTALLand the pre-install workaround for CI. - Managing tools and skills — day-to-day workflows (upgrade, pin versions, inspect drift).
- Skills — a parallel system for teaching coding agents how to use
uip. Skills are not tools, anduip skillsis a separate command group. - Versioning and stability — how host and tool versions are coordinated under semver.