--- title: "Create a pipeline" description: "Upload an Argo Workflows or Kubeflow Pipelines YAML file to create a TIR pipeline." content_type: "how-to" product: "pipelines" platform: "TIR" url: "/tir/pipelines/how-to/create-a-pipeline/" topic: ["create"] --- # Create a pipeline Upload a YAML file to create a pipeline. The first file you upload becomes the pipeline's default version. ## Before you begin You need a role with create permission on the pipeline service and a `.yaml` file written in Argo Workflows format or compiled from the Kubeflow Pipelines SDK. Use steps that each run one container: a file that uses `containerSet` is refused. For a starting file, select **See Example** on the create page, which shows a Hello World pipeline in both formats, or copy the one in [Get started with Pipelines](/tir/pipelines/get-started/#write-a-pipeline-file). ## Create the pipeline 1. In the side menu, under **PRODUCTS**, select **Pipeline**, then **Create Pipeline**. 2. Leave **Create a new pipeline** selected. 3. In **Pipeline Name**, keep the generated name or type your own, up to 30 characters. 4. (Optional) In **Description**, add up to 300 characters. 5. In **Upload Pipeline File**, add one `.yaml` file. 6. Select **Create Pipeline**. The pipeline is listed in **Manage Pipelines**. Its **Pipeline Type** is Argo for an Argo Workflows file, Kubeflow for a Kubeflow Pipelines file, and None otherwise. When you create the first pipeline in a project, TIR also sets up an object storage bucket and an access key for the project. For help with a file that is refused, see [Troubleshooting Pipelines](/tir/pipelines/troubleshooting/pipelines/). To run the pipeline, [create a run](/tir/pipelines/how-to/create-a-run/). When the file changes later, [create a version](/tir/pipelines/how-to/create-a-pipeline-version/) instead of replacing the pipeline.