> 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/self-hosting-pipekit/evaluate.md).

# Evaluate Self-Hosted

A 30-minute path to a working Self-Hosted Pipekit on a local Kubernetes cluster. The goal is to let you click around the UI, run a sample workflow, and decide if Self-Hosted is the right shape for you. It does not set up a production install.

For a production deploy, follow [Deploy to Production](/self-hosting-pipekit/dependencies.md) instead.

## Prerequisites

* `kubectl`, `helm` (v3), and `docker` installed locally.
* A local Kubernetes cluster (`k3d`, `kind`, `minikube`, or Docker Desktop Kubernetes all work). This guide uses `k3d`.
* A Pipekit license key for the trial. Email <hello@pipekit.io> if you don't have one; we'll send you a 30-day trial key.
* Access to the `pipekitprivate` container registry on Docker Hub. Email <hello@pipekit.io> if you don't have access; we'll set it up.

## 1. Spin up a local cluster

```bash
k3d cluster create pipekit-eval \
  --port "30000:30000@loadbalancer" \
  --port "30001:30001@loadbalancer"
```

This gives you a single-node cluster reachable via `kubectl`. For other local cluster tools, the install steps are identical. Only the cluster-creation command changes.

## 2. Install Argo Workflows

Pipekit runs on top of Argo Workflows; install it first.

```bash
kubectl create namespace argo
kubectl apply -n argo -f https://github.com/argoproj/argo-workflows/releases/latest/download/quick-start-minimal.yaml
```

Wait for the Argo pods to be Ready:

```bash
kubectl get pods -n argo -w
```

## 3. Pull Pipekit container images

The Self-Hosted install uses private images from the `pipekitprivate` Docker Hub registry.

```bash
docker login -u <your-docker-username>
kubectl create namespace pipekit
kubectl create secret docker-registry regcred \
  --docker-username=<your-docker-username> \
  --docker-password=<your-docker-password> \
  --namespace=pipekit
```

For the full image list, see [Container Images](/self-hosting-pipekit/dependencies/container-images.md).

## 4. Install the Pipekit Helm chart

```bash
helm repo add pipekit https://helm.pipekit.io
helm repo update

helm install pipekit pipekit/pipekit \
  --namespace=pipekit \
  --set global.deployType=dev \
  --set license.key="<your-trial-license-key>" \
  --set imagePullSecrets[0].name=regcred
```

This deploys the Pipekit UI, API, Pipekit Agent, ID service, and Postgres into the `pipekit` namespace.

For the full values reference, see [Reference > Helm Chart Values > Self-Hosted Chart](/reference/helm-values/self-hosted.md).

## 5. Wait for everything to be Ready

```bash
kubectl get pods -n pipekit -w
```

This takes 3 to 5 minutes on a fresh cluster. Postgres and the Pipekit services need to come up in order.

## 6. Log in with the break-glass account

The first install creates a single Org Admin account with a randomly generated password printed to the install logs. You can also fetch it from the cluster:

```bash
kubectl get secret -n pipekit pipekit-break-glass -o jsonpath='{.data.password}' | base64 -d
echo
```

Browse to <http://localhost:30000> and sign in as `admin@pipekit.local` with that password.

For the full break-glass setup, see [Configure > Initial Login & Break-Glass](/self-hosting-pipekit/initial-login.md).

## 7. Submit a sample workflow

In a separate terminal:

```bash
brew install pipekit/tap/cli
pipekit login --host=http://localhost:30000
git clone https://github.com/pipekit/examples.git
cd examples
pipekit submit --cluster-name=default examples/dag-diamond/workflow.yaml
```

Open the Run in the UI and confirm logs and the Run graph render correctly.

## What's next

* **Production install**: replace `deployType=dev` with `prod`, set up real ingress, point at a managed Postgres, configure backups. Follow [Deploy to Production](/self-hosting-pipekit/dependencies.md).
* **Configure SSO**: wire your identity provider in. See [Configure > SSO](/self-hosting-pipekit/initial-login/sso.md).
* **Connect a Git provider**: let users trigger Workflows from commits and pull requests. See [Configure > Git Provider](/self-hosting-pipekit/initial-login/git-provider.md).
* **Right-size resources**: the `dev` profile is too small for real workloads. Bump replica counts, resource requests, and HPA limits via Helm values.

## Tearing down

```bash
helm uninstall pipekit -n pipekit
kubectl delete namespace pipekit
k3d cluster delete pipekit-eval
```
