Harness¶
harness
¶
Harness abstraction for AI agent CLI tools.
A harness encapsulates everything specific to a particular agent CLI (Claude Code, OpenCode, etc.): how to build the command, what env vars it needs, where credentials are mounted, and how to parse its output.
Harness
¶
Bases: ABC
Base class for agent CLI harnesses.
auth_mode
property
¶
Return 'api-key' if ANTHROPIC_API_KEY is set, else 'vertex'.
name
abstractmethod
property
¶
Human-readable name for log messages.
supports_otel
property
¶
Whether the agent CLI supports OTEL telemetry export.
autoupdater_env_var
property
¶
Env var name to disable auto-updates.
build_args(prompt, model, extra_args=None)
abstractmethod
¶
build_env_args()
abstractmethod
¶
Return ['--env', 'K=V', ...] pairs for podman run (PodmanBackend only).
Container-image ENV vars (config dirs, AGENT_TOOL) are already set in the Containerfile, so this method should not override them.
Source code in src/agentic_ci/harness.py
build_env_script_lines(otel_port=None, otel_rate_file=None)
abstractmethod
¶
Return export K=V lines for the env script (OpenShellBackend only).
OpenShell extracts the container filesystem but drops OCI ENV
metadata, so every required env var must be re-injected here.
Config dirs use /sandbox/... paths per OpenShell convention.
Source code in src/agentic_ci/harness.py
build_otel_exec_env(otel_port=None)
abstractmethod
¶
credential_mount_target()
abstractmethod
¶
create_stream_processor(pid=0)
abstractmethod
¶
image_env_var()
abstractmethod
¶
model_env_var()
abstractmethod
¶
default_model()
abstractmethod
¶
build_local_env(otel_port=None, otel_rate_file=None)
abstractmethod
¶
Return env vars as a plain dict for direct (local) execution.
Unlike build_env_args (podman --env format) or build_env_script_lines (OpenShell export format), this returns a dict suitable for merging into os.environ and passing to subprocess.Popen(env=...).
Source code in src/agentic_ci/harness.py
create_harness(name)
¶
Create a harness instance by name.