Harness, in plain English.
What it actually does, when it's worth the friction, and the three places small teams should not adopt it.
Harness is a CD platform. That’s the elevator pitch. What it actually does is give you a templating layer on top of your deployments so they’re not snowflakes.
That’s also why it’s frequently the wrong tool for a five-person team. Templates are leverage; you only need leverage when you have weight.
The mental model
Three primitives are worth knowing before you read the docs:
- Pipelines — the YAML that describes a deployment.
- Templates — reusable pipeline fragments. The whole reason you’d pay for Harness instead of using GitHub Actions.
- Approvals & gates — the production-safety theatre. Surprisingly important once you have auditors.
When it’s worth the friction
You probably want Harness if:
- You have 10+ services with broadly similar deployment shapes.
- You have compliance requirements that GitHub Actions handles awkwardly.
- You have a platform team whose job is “make CD safe for application teams to use without thinking.”
Harness’s value is in the templating discipline it forces. If you don’t already have a pattern your services share, the tool can’t extract it for you.
When it’s not
Three places I’d push back on adopting Harness:
- Sub-10-service teams. GitHub Actions or ArgoCD with a few helm charts will get you 90% of the way there at zero cost.
- One-off ML pipelines. Argo Workflows is more honest about the shape of the problem.
- “Because the auditor said so.” Read the auditor’s actual requirement first. Often it’s about who can deploy, not the tool used to deploy.
What surprised me
A few things I didn’t expect after a year of using it across engagements:
- The web UI is genuinely good for non-engineers. Approvals make more sense to a compliance officer than a
ghcommand. - Drift detection is underrated — knowing what’s actually in production vs what your YAML claims is in production is half the job.
- The pipeline-as-code story is weaker than ArgoCD’s. You’ll end up generating YAML somewhere up-stack.
If you’re evaluating it: build one template for one service and feel the templating workflow before you commit. The friction is up-front; the leverage compounds.