Appearance
What is a harness?
A harness is the layer that knows how to drive one specific AI from a Z.E.N. node. Each provider you select in a workflow (claude, codex, pi, and so on) is a harness behind the scenes.
If you only read the beginner-facing docs, you can stop here and call it a provider forever. The word "harness" exists for one reason: when you're reading logs or talking to support, "provider" is too generic. A new model from Anthropic is also a provider. A vendor that sells API credits is a provider. The thing inside Z.E.N. that translates a node into a model call and reports back, that thing is a harness.
When the two words differ
| Surface | Word you'll see | Why |
|---|---|---|
Workflow YAML (provider: claude) | provider | What you type is the brand of the AI. |
| Runtime logs, error messages | harness | Identifies the integration that produced the event. |
| Concepts and getting-started docs | provider | One word per concept for new users. |
| Internal docs and error traces | harness | Distinguishes Z.E.N.'s integration from the upstream AI. |
The YAML field stays provider:. You don't change anything in your workflows.
When this matters to you
When a run log says "harness X failed at step Y," that tells you the failure was inside Z.E.N.'s integration with the model, not inside the model itself. That's a useful signal when you're debugging: if every harness for claude is failing across every workflow, the problem is probably Z.E.N.'s side. If only one workflow's claude step fails while others succeed, the problem is probably the prompt or the input.
Beyond that, you can ignore the word. The product surface uses "provider."