Deployment View
Installation Artifact
Testbench is shipped as a single bundled manifest (install.yaml) published with each GitHub release. Applying it deploys:
-
The Testbench operator (Deployment + RBAC + leader election lease) into the
testbench-operator-systemnamespace -
The
Experimentcustom resource definition (testbench.agentic-layer.ai/v1alpha1), cluster-scoped -
Five
TestWorkflowTemplateresources (setup-template,run-template,evaluate-template,publish-template,visualize-template) in thetestkubenamespace -
A
grafana-testkube-dashboardConfigMap in themonitoringnamespace, picked up by the Grafana sidecar
Customisation is performed via Kustomize overlays against the released install.yaml (for example, to override the image tag or relocate the dashboard ConfigMap). The previously published Helm chart is deprecated.
Runtime Topology
| Namespace | Contents |
|---|---|
|
Operator controller manager reconciling |
|
Testkube controller, the five |
Target agent namespace |
The |
|
OTLP collector receiving published metrics and the Grafana dashboard ConfigMap. |
Container Image
All five phases share a single Docker image (ghcr.io/agentic-layer/testbench/testworkflows). Each TestWorkflowTemplate selects its phase via command arguments, keeping the build and distribution surface to a single image.
Each template exposes its image parameter, so individual phases can be overridden with custom images when needed (typically only the evaluate phase, for custom metric frameworks).
Workflow Composition
For each Experiment, the operator generates one TestWorkflow in the testkube namespace that composes the five templates via Testkube’s use mechanism. All steps share a single emptyDir volume at /app/data, which is how intermediate JSON files are passed between phases. Workflow pods are stateless; persistence (artifacts, execution history) is provided by Testkube.