> For the complete documentation index, see [llms.txt](https://docs.pipekit.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.pipekit.io/reference/cli/commands.md).

# Commands

Every command listed here is also doable via the [REST API](/reference/rest-api.md), the [Python SDK](/reference/python-sdk.md), and the UI. For the MCP Server (LLM client integration), see [AI > Setup](/ai/setup.md).

## Log in

```bash
pipekit login
```

You'll be prompted to pick either username/password or SSO, depending on how your account was created. After login, the CLI stores your access token at `~/.pipekit/token` (override via `PIPEKIT_CONFIG_DIR`).

For non-interactive login (CI, containers), see [Advanced > Non-interactive login](/reference/cli/advanced.md#non-interactive-login).

## Submit a workflow

```bash
pipekit submit --cluster-name=<cluster> --namespace=<ns> path/to/workflow.yaml
```

If no Pipe with the workflow's `generateName` exists on the cluster, Pipekit creates one. Subsequent submissions of the same workflow add new Runs to the existing Pipe. For the Pipe / Run model, see [Concepts > Workflow vs Pipe vs Run](/concepts/workflow-vs-pipe-vs-run.md).

| Flag             | Shorthand | Type                    | Description                                                  |
| ---------------- | --------- | ----------------------- | ------------------------------------------------------------ |
| `--namespace`    | `-n`      | string                  | Name of the namespace to submit the workflow to.             |
| `--cluster-name` | `-c`      | string                  | Name of the cluster to submit the workflow to. **Required.** |
| `--open-ui`      |           | bool                    | Open the UI for the submitted workflow.                      |
| `--parameter`    | `-p`      | stringArray (key=value) | Pass input parameter(s).                                     |
| `--wait`         | `-w`      | bool                    | Wait for the submitted workflow to complete.                 |
| `--pipe-name`    | `-d`      | string                  | Name of the Pipe to submit the workflow to.                  |
| `--json`         |           | bool                    | Output the run details in JSON format.                       |

## Get information about a Run

```bash
pipekit get run --run-uuid=<uuid>
```

You can also look up a Run by `(cluster, namespace, workflow-name)`:

```bash
pipekit get run --cluster-name=clusterA --namespace=default --workflow-name=workflowA
```

If multiple Runs match, the latest one is returned.

| Flag              | Shorthand | Type   | Description                                             |
| ----------------- | --------- | ------ | ------------------------------------------------------- |
| `--run-uuid`      | `-r`      | string | Run UUID of the workflow you want to get.               |
| `--cluster-name`  | `-c`      | string | Name of the cluster where the workflow is located.      |
| `--namespace`     | `-n`      | string | Kubernetes namespace where the workflow is/was running. |
| `--workflow-name` | `-w`      | string | Name of the workflow.                                   |

## List clusters, Pipes, and Runs

### List clusters

```bash
pipekit list clusters
```

### List Pipes

```bash
pipekit list pipes --cluster-name=<cluster>
```

| Flag             | Shorthand | Type   | Description                                     |
| ---------------- | --------- | ------ | ----------------------------------------------- |
| `--all`          | `-A`      | bool   | Get all Pipes, both enabled and disabled.       |
| `--cluster-name` | `-c`      | string | Name of the cluster to list from. **Required.** |
| `--enabled`      |           | bool   | Enabled/disabled switch (default true).         |

### List Runs

```bash
pipekit list runs --cluster-name=<cluster>
```

| Flag             | Shorthand | Type        | Description                                         |
| ---------------- | --------- | ----------- | --------------------------------------------------- |
| `--cluster-name` | `-c`      | string      | Name of the cluster to list from.                   |
| `--all`          | `-A`      | bool        | Get all Runs, regardless of status.                 |
| `--statuses`     | `-s`      | stringArray | Get Runs with a given status (defaults to running). |

## Run actions: stop, terminate, restart

```bash
# Stop a running workflow (exit handlers complete)
pipekit stop --run-uuid=<uuid>

# Terminate a running workflow immediately (no exit handlers)
pipekit terminate --run-uuid=<uuid>

# Resubmit a workflow with the same parameters
pipekit restart --run-uuid=<uuid>
```

`stop` and `terminate` take the same flag:

| Flag         | Shorthand | Type   | Description                                                                |
| ------------ | --------- | ------ | -------------------------------------------------------------------------- |
| `--run-uuid` | `-r`      | string | Run UUID of the running workflow you want to stop/terminate. **Required.** |

`restart` takes:

| Flag         | Shorthand | Type   | Description                                            |
| ------------ | --------- | ------ | ------------------------------------------------------ |
| `--run-uuid` | `-r`      | string | Run UUID of the run you want to restart. **Required.** |
| `--open-ui`  |           | bool   | Open the UI of the resubmitted workflow.               |
| `--wait`     | `-w`      | bool   | Wait for the workflow to complete.                     |

## View pod logs

```bash
pipekit logs --run-uuid=<uuid> --follow
```

Filter by pod and container name; follow the stream to tail logs as they're produced.

| Flag          | Shorthand | Type   | Description                                |
| ------------- | --------- | ------ | ------------------------------------------ |
| `--run-uuid`  | `-r`      | string | UUID of the Run. **Required.**             |
| `--container` | `-c`      | string | Name of the container to filter logs by.   |
| `--pod`       | `-p`      | string | Name of the pod to filter logs by.         |
| `--node-id`   | `-n`      | string | ID of the workflow node to filter logs by. |
| `--follow`    | `-f`      | bool   | Follow log stream until the Run finishes.  |

## Update a cluster

```bash
pipekit update cluster <cluster-name> --status=active
pipekit update cluster <cluster-name> --name=production --description="Production cluster"
```

Requires admin permissions.

| Argument/Flag   | Type   | Description                                               |
| --------------- | ------ | --------------------------------------------------------- |
| `cluster-name`  | string | Name of the cluster to update. **Required (positional).** |
| `--name`        | string | New name for the cluster.                                 |
| `--description` | string | New description for the cluster.                          |
| `--status`      | string | New status for the cluster (`active` or `inactive`).      |

## Import from Workflow Archive

Admins can import archived workflows from an [Argo Workflow Archive](https://argo-workflows.readthedocs.io/en/stable/workflow-archive/) into Pipekit:

```bash
pipekit import workflows --cluster-name=<cluster>
```

{% hint style="warning" %}
The import of [Workflow Archive Logs](https://argo-workflows.readthedocs.io/en/stable/configure-archive-logs/) is not supported.
{% endhint %}

| Flag                  | Shorthand | Type    | Description                                                                           |
| --------------------- | --------- | ------- | ------------------------------------------------------------------------------------- |
| `--cluster-name`      | `-c`      | string  | Name of the cluster to assign workflows to. **Required.**                             |
| `--argoServerURI`     |           | string  | Argo Server URI (defaults to `localhost:2746`).                                       |
| `--argoAuthToken`     |           | string  | Argo Server authentication token.                                                     |
| `--batchSize`         |           | integer | Number of workflows to fetch from the Workflow Archive per API call (defaults to 10). |
| `--argoServerSubPath` |           | string  | Sub-path used when connecting to Argo Server.                                         |
| `--insecure`          | `-k`      | bool    | Skip TLS verification (defaults to false).                                            |
| `--useSSL`            |           | bool    | Use SSL when connecting to Argo Server (defaults to true).                            |

## What's next

* [Cron Workflows](/reference/cli/cron-workflows.md): CronWorkflow lifecycle commands.
* [Using with Hera](/reference/cli/using-with-hera.md): token generation for Hera-authored workflows.
* [Advanced](/reference/cli/advanced.md): Docker container usage, non-interactive login, token storage, log-level flags.
