## File: README.md

[](https://github.com/argoproj/argo-workflows/actions/workflows/snyk.yml?query=branch%3Amain)
[](https://bestpractices.coreinfrastructure.org/projects/3830)
[](https://api.securityscorecards.dev/projects/github.com/argoproj/argo-workflows)
[](https://app.fossa.com/projects/git%2Bgithub.com%2Fargoproj%2Fargo-workflows?ref=badge_shield)
[](https://argoproj.github.io/community/join-slack)
[](https://x.com/argoproj)
[](https://www.linkedin.com/company/argoproj/)
[](https://bsky.app/profile/argoproj.bsky.social)
[](https://github.com/argoproj/argo-workflows/releases/latest)
[](https://artifacthub.io/packages/helm/argo/argo-workflows)

## What is Argo Workflows?

Argo Workflows is an open source container-native workflow engine for orchestrating parallel jobs on Kubernetes.
Argo Workflows is implemented as a Kubernetes CRD (Custom Resource Definition).

* Define workflows where each step is a container.
* Model multi-step workflows as a sequence of tasks or capture the dependencies between tasks using a directed acyclic graph (DAG).
* Easily run compute intensive jobs for machine learning or data processing in a fraction of the time using Argo Workflows on Kubernetes.

Argo is a [Cloud Native Computing Foundation (CNCF)](https://cncf.io/) graduated project.

## Use Cases

* [Machine Learning pipelines](https://argo-workflows.readthedocs.io/en/latest/use-cases/machine-learning/)
* [Data and batch processing](https://argo-workflows.readthedocs.io/en/latest/use-cases/data-processing/)
* [Infrastructure automation](https://argo-workflows.readthedocs.io/en/latest/use-cases/infrastructure-automation/)
* [CI/CD](https://argo-workflows.readthedocs.io/en/latest/use-cases/ci-cd/)
* [Other use cases](https://argo-workflows.readthedocs.io/en/latest/use-cases/other/)

## Why Argo Workflows?

* Argo Workflows is the most popular workflow execution engine for Kubernetes.
* Light-weight, scalable, and easier to use.
    * Including for Python users through [the Hera Python SDK for Argo Workflows](https://hera.readthedocs.io/en/stable/).
* Designed from the ground up for containers without the overhead and limitations of legacy VM and server-based environments.
* Cloud agnostic and can run on any Kubernetes cluster.

[Read what people said in our latest survey](https://blog.argoproj.io/argo-workflows-events-2023-user-survey-results-82c53bc30543)

## Try Argo Workflows

You can try Argo Workflows via one of the following:

1. [Interactive Training Material](https://killercoda.com/argoproj/course/argo-workflows/)
1. [Access the demo environment](https://workflows.apps.argoproj.io/workflows/argo)



## Who uses Argo Workflows?

[About 200+ organizations are officially using Argo Workflows](USERS.md)

## Ecosystem

Just some of the projects that use or rely on Argo Workflows (complete list [here](https://github.com/akuity/awesome-argo#ecosystem-projects)):

* [Argo Events](https://github.com/argoproj/argo-events)
* [Hera](https://github.com/argoproj-labs/hera)
* [Katib](https://github.com/kubeflow/katib)
* [Kedro](https://kedro.readthedocs.io/en/stable/)
* [Kubeflow Pipelines](https://github.com/kubeflow/pipelines)
* [Netflix Metaflow](https://metaflow.org)
* [Piper](https://github.com/quickube/piper)
* [Seldon](https://github.com/SeldonIO/seldon-core)
* [SQLFlow](https://github.com/sql-machine-learning/sqlflow)

## Client Libraries

Check out our [Java, Golang, Python (Hera), and Typescript (Juno) clients](docs/client-libraries.md).

## Quickstart

* [Get started here](https://argo-workflows.readthedocs.io/en/latest/quick-start/)
* [Walk-through examples](https://argo-workflows.readthedocs.io/en/latest/walk-through/)

## Documentation

[View the docs](https://argo-workflows.readthedocs.io/en/latest/)

## Features

An incomplete list of features Argo Workflows provides:

* UI to visualize and manage Workflows
* Artifact support (S3, Artifactory, Alibaba Cloud OSS, Azure Blob Storage, HTTP, Git, GCS, raw, plugins)
* Workflow templating to store commonly used Workflows in the cluster
* Archiving Workflows after executing for later access
* Scheduled workflows using cron
* Server interface with REST API (HTTP and GRPC)
* DAG or Steps based declaration of workflows
* Step level input & outputs (artifacts/parameters)
* Loops
* Parameterization
* Conditionals
* Timeouts (step & workflow level)
* Retry (step & workflow level)
* Resubmit (memoized)
* Suspend & Resume
* Cancellation
* K8s resource orchestration
* Exit Hooks (notifications, cleanup)
* Garbage collection of completed workflow
* Scheduling (affinity/tolerations/node selectors)
* Volumes (ephemeral/existing)
* Parallelism limits
* Daemoned steps
* DinD (docker-in-docker)
* Script steps
* Event emission
* Prometheus metrics
* Multiple executors
* Multiple pod and workflow garbage collection strategies
* Automatically calculated resource usage per step
* Java, Golang, Python (Hera), and Typescript (Juno) SDKs
* Pod Disruption Budget support
* Single-sign on (OAuth2/OIDC)
* Webhook triggering
* CLI
* Out-of-the box and custom Prometheus metrics
* Windows container support
* Embedded widgets
* Multiplex log viewer

## Community Meetings

We host monthly community meetings where we and the community showcase demos and discuss the current and future state of the project. Feel free to join us!
For Community Meeting information, minutes and recordings, please [see here](https://bit.ly/argo-wf-cmty-mtng).

Participation in Argo Workflows is governed by the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md)

## Community Blogs and Presentations

* [Awesome-Argo: A Curated List of Awesome Projects and Resources Related to Argo](https://github.com/terrytangyuan/awesome-argo)
* [Automation of Everything - How To Combine Argo Events, Workflows & Pipelines, CD, and Rollouts](https://youtu.be/XNXJtxkUKeY)
* [Argo Workflows and Pipelines - CI/CD, Machine Learning, and Other Kubernetes Workflows](https://youtu.be/UMaivwrAyTA)
* [Argo Ansible role: Provisioning Argo Workflows on OpenShift](https://medium.com/@marekermk/provisioning-argo-on-openshift-with-ansible-and-kustomize-340a1fda8b50)
* [Argo Workflows vs Apache Airflow](http://bit.ly/30YNIvT)
* [Beyond Prototypes: Production-Ready ML Systems with Metaflow and Argo](https://github.com/terrytangyuan/public-talks/tree/main/talks/kubecon-na-2023-metaflow-argo)
* [CI/CD with Argo on Kubernetes](https://medium.com/@bouwe.ceunen/ci-cd-with-argo-on-kubernetes-28c1a99616a9)
* [Define Your CI/CD Pipeline with Argo Workflows](https://haque-zubair.medium.com/define-your-ci-cd-pipeline-with-argo-workflows-25aefb02fa63)
* [Distributed Machine Learning Patterns from Manning Publication](https://github.com/terrytangyuan/distributed-ml-patterns)
* [Engineering Cloud Native AI Platform](https://github.com/terrytangyuan/public-talks/tree/main/talks/platform-con-2024-engineering-cloud-native-ai-platform)
* [Managing Thousands of Automatic Machine Learning Experiments with Argo and Katib](https://github.com/terrytangyuan/public-talks/blob/main/talks/argocon-automl-experiments-2022)
* [Autonomous Driving Data Pipelines Reconstruction With Argo Workflows](https://www.youtube.com/watch?v=oTgIQxbsLhU)
* [Revolutionizing Scientific Simulations with Argo Workflows](https://www.youtube.com/watch?v=BYVf7GhfiRg)
* [Running Argo Workflows Across Multiple Kubernetes Clusters](https://admiralty.io/blog/running-argo-workflows-across-multiple-kubernetes-clusters/)
* [Scaling Kubernetes: Best Practices for Managing Large-Scale Batch Jobs with Spark and Argo Workflow](https://www.youtube.com/watch?v=KqEKRPjy4aE)
* [Open Source Model Management Roundup: Polyaxon, Argo, and Seldon](https://www.anaconda.com/blog/developer-blog/open-source-model-management-roundup-polyaxon-argo-and-seldon/)
* [Producing 200 OpenStreetMap extracts in 35 minutes using a scalable data workflow](https://www.interline.io/blog/scaling-openstreetmap-data-workflows/)
* [Production-Ready AI Platform on Kubernetes](https://github.com/terrytangyuan/public-talks/tree/main/talks/kubecon-europe-2024-production-ai-platform-on-k8s)
* [Argo integration review](http://dev.matt.hillsdon.net/2018/03/24/argo-integration-review.html)
* TGI Kubernetes with Joe Beda: [Argo workflow system](https://www.youtube.com/watch?v=M_rxPPLG8pU&start=859)

## Project Resources

* [Argo Project GitHub organization](https://github.com/argoproj)
* [Argo Website](https://argoproj.github.io/)
* [Argo Slack](https://argoproj.github.io/community/join-slack)
* [Contributing](docs/CONTRIBUTING.md)
* [Governance](https://github.com/argoproj/argoproj/blob/main/community/GOVERNANCE.md)
* [Code of Conduct](https://github.com/argoproj/argo-workflows/blob/main/CODE_OF_CONDUCT.md)

## Security

See [SECURITY.md](SECURITY.md).

## Generative AI

Contributions using generative AI tools must follow the [Argo project Generative AI policy](https://github.com/argoproj/argoproj/blob/main/community/genai.md).

---

## File: community/README.md

# Argo Community

Welcome to the Argo community!

Argo is an open, community driven project to make it easy to use Kubernetes for getting useful work done.
The [Argoproj Community README](https://github.com/argoproj/argoproj/blob/main/community/README.md) describes the organizational structure and governance of Argo projects including roles, responsibilities, and processes.

Contributions using generative AI tools must follow the [Argo project Generative AI policy](https://github.com/argoproj/argoproj/blob/main/community/genai.md).

---

## File: docs/cli/argo.md

## argo

argo is the command line interface to Argo

### Synopsis


You can use the CLI in the following modes:

#### Kubernetes API Mode (default)

Requests are sent directly to the Kubernetes API. No Argo Server is needed. Large workflows and the workflow archive are not supported.

Use when you have direct access to the Kubernetes API, and don't need large workflow or workflow archive support.

If you're using instance ID (which is very unlikely), you'll need to set it:

	ARGO_INSTANCEID=your-instanceid

#### Argo Server GRPC Mode

Requests are sent to the Argo Server API via GRPC (using HTTP/2). Large workflows and the workflow archive are supported. Network load-balancers that do not support HTTP/2 are not supported.

Use if you do not have access to the Kubernetes API (e.g. you're in another cluster), and you're running the Argo Server using a network load-balancer that support HTTP/2.

To enable, set ARGO_SERVER:

	ARGO_SERVER=localhost:2746 ;# The format is "host:port" - do not prefix with "http" or "https"

If you're have transport-layer security (TLS) enabled (i.e. you are running "argo server --secure" and therefore has HTTPS):

	ARGO_SECURE=true

If your server is running with self-signed certificates. Do not use in production:

	ARGO_INSECURE_SKIP_VERIFY=true

By default, the CLI uses your KUBECONFIG to determine default for ARGO_TOKEN and ARGO_NAMESPACE. You probably error with "no configuration has been provided". To prevent it:

	KUBECONFIG=/dev/null

You will then need to set:

	ARGO_NAMESPACE=argo

And:

	ARGO_TOKEN='Bearer ******' ;# Should always start with "Bearer " or "Basic ".

#### Argo Server HTTP1 Mode

As per GRPC mode, but uses HTTP. Can be used with ALB that does not support HTTP/2. The command "argo logs --since-time=2020...." will not work (due to time-type).

Use this when your network load-balancer does not support HTTP/2.

Use the same configuration as GRPC mode, but also set:

	ARGO_HTTP1=true

If your server is behind an ingress with a path (running "argo server --base-href /argo" or "ARGO_BASE_HREF=/argo argo server"):

	ARGO_BASE_HREF=/argo


```
argo [flags]
```

### Options

```
/* Detailed source-code truncated for AI context efficiency. */
```

### SEE ALSO

* [argo archive](argo_archive.md)	 - manage the workflow archive
* [argo auth](argo_auth.md)	 - manage authentication settings
* [argo cluster-template](argo_cluster-template.md)	 - manipulate cluster workflow templates
* [argo completion](argo_completion.md)	 - output shell completion code for the specified shell (bash, zsh or fish)
* [argo convert](argo_convert.md)	 - convert workflow manifests from legacy format to current format
* [argo cp](argo_cp.md)	 - copy artifacts from workflow
* [argo cron](argo_cron.md)	 - manage cron workflows
* [argo delete](argo_delete.md)	 - delete workflows
* [argo executor-plugin](argo_executor-plugin.md)	 - manage executor plugins
* [argo get](argo_get.md)	 - display details about a workflow
* [argo lint](argo_lint.md)	 - validate files or directories of manifests
* [argo list](argo_list.md)	 - list workflows
* [argo logs](argo_logs.md)	 - view logs of a pod or workflow
* [argo node](argo_node.md)	 - perform action on a node in a workflow
* [argo resubmit](argo_resubmit.md)	 - resubmit one or more workflows
* [argo resume](argo_resume.md)	 - resume zero or more workflows (opposite of suspend)
* [argo retry](argo_retry.md)	 - retry zero or more workflows
* [argo server](argo_server.md)	 - start the Argo Server
* [argo stop](argo_stop.md)	 - stop zero or more workflows allowing all exit handlers to run
* [argo submit](argo_submit.md)	 - submit a workflow
* [argo suspend](argo_suspend.md)	 - suspend zero or more workflows (opposite of resume)
* [argo sync](argo_sync.md)	 - manage sync limits
* [argo template](argo_template.md)	 - manipulate workflow templates
* [argo terminate](argo_terminate.md)	 - terminate zero or more workflows immediately
* [argo version](argo_version.md)	 - print version information
* [argo wait](argo_wait.md)	 - waits for workflows to complete
* [argo watch](argo_watch.md)	 - watch a workflow until it completes

---

## File: docs/cli/argo_archive.md

## argo archive

manage the workflow archive

```
argo archive [flags]
```

### Options

```
  -h, --help   help for archive
```

### Options inherited from parent commands

```
/* Detailed source-code truncated for AI context efficiency. */
```

### SEE ALSO

* [argo](argo.md)	 - argo is the command line interface to Argo
* [argo archive delete](argo_archive_delete.md)	 - delete a workflow in the archive
* [argo archive get](argo_archive_get.md)	 - get a workflow in the archive
* [argo archive list](argo_archive_list.md)	 - list workflows in the archive
* [argo archive list-label-keys](argo_archive_list-label-keys.md)	 - list workflows label keys in the archive
* [argo archive list-label-values](argo_archive_list-label-values.md)	 - get workflow label values in the archive
* [argo archive resubmit](argo_archive_resubmit.md)	 - resubmit one or more workflows
* [argo archive retry](argo_archive_retry.md)	 - retry zero or more workflows

---

## File: docs/cli/argo_archive_delete.md

## argo archive delete

delete a workflow in the archive

```
argo archive delete WORKFLOW... [flags]
```

### Examples

```
# Delete an archived workflow by name:
  argo archive delete my-workflow

# Delete an archived workflow by UID (auto-detected):
  argo archive delete a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11

# Delete multiple archived workflows:
  argo archive delete my-workflow my-other-workflow

# Delete an archived workflow by name (forced):
  argo archive delete my-workflow --name

# Delete an archived workflow by UID (forced):
  argo archive delete a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 --uid

```

### Options

```
  -h, --help   help for delete
      --name   force the argument to be treated as a name
      --uid    force the argument to be treated as a UID
```

### Options inherited from parent commands

```
/* Detailed source-code truncated for AI context efficiency. */
```

### SEE ALSO

* [argo archive](argo_archive.md)	 - manage the workflow archive

---

## File: docs/cli/argo_archive_get.md

## argo archive get

get a workflow in the archive

```
argo archive get WORKFLOW [flags]
```

### Examples

```
# Get information about an archived workflow by name:
  argo archive get my-workflow

# Get information about an archived workflow by UID (auto-detected):
  argo archive get a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11

# Get information about an archived workflow in YAML format:
  argo archive get my-workflow -o yaml

# Get information about an archived workflow by name (forced):
  argo archive get my-workflow --name

# Get information about an archived workflow by UID (forced):
  argo archive get a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 --uid

```

### Options

```
  -h, --help            help for get
      --name            force the argument to be treated as a name
  -o, --output string   Output format. One of: json|yaml|wide (default "wide")
      --uid             force the argument to be treated as a UID
```

### Options inherited from parent commands

```
/* Detailed source-code truncated for AI context efficiency. */
```

### SEE ALSO

* [argo archive](argo_archive.md)	 - manage the workflow archive

---

## File: docs/cli/argo_archive_list.md

## argo archive list

list workflows in the archive

```
argo archive list [flags]
```

### Examples

```
# List all archived workflows:
  argo archive list

# List all archived workflows fetched in chunks of 100:
  argo archive list --chunk-size 100

# List all archived workflows in YAML format:
  argo archive list -o yaml

# List archived workflows that have both labels:
  argo archive list -l key1=value1,key2=value2

```

### Options

```
      --chunk-size int    Return large lists in chunks rather than all at once. Pass 0 to disable.
  -h, --help              help for list
  -o, --output string     Output format. One of: name|json|yaml|wide (default "wide")
  -l, --selector string   Selector (label query) to filter on, not including uninitialized ones, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2)
```

### Options inherited from parent commands

```
/* Detailed source-code truncated for AI context efficiency. */
```

### SEE ALSO

* [argo archive](argo_archive.md)	 - manage the workflow archive

---

## File: docs/cli/argo_archive_list-label-keys.md

## argo archive list-label-keys

list workflows label keys in the archive

```
argo archive list-label-keys [flags]
```

### Options

```
  -h, --help   help for list-label-keys
```

### Options inherited from parent commands

```
/* Detailed source-code truncated for AI context efficiency. */
```

### SEE ALSO

* [argo archive](argo_archive.md)	 - manage the workflow archive

---

## File: docs/cli/argo_archive_list-label-values.md

## argo archive list-label-values

get workflow label values in the archive

```
argo archive list-label-values [flags]
```

### Options

```
  -h, --help              help for list-label-values
  -l, --selector string   Selector (label query) to query on, allows 1 value (e.g. -l key1)
```

### Options inherited from parent commands

```
/* Detailed source-code truncated for AI context efficiency. */
```

### SEE ALSO

* [argo archive](argo_archive.md)	 - manage the workflow archive