This repository accepts one document shape: a version 1 OpenShell workflow.
The CLI command already identifies the document type, so the format does not
use Kubernetes-style kind, apiVersion, metadata, or spec wrappers.
version: 1
name: pr-review
target:
gateway: openshell
workspace: default
inference:
route: inference.local
provider: vertex-review
model: gemini-2.5-pro
sandbox:
image: quay.io/example/reviewer:v1
providers: [github-review]
agent:
type: opencode
args: [run, --format, json]version must be 1 and name is required. All other top-level fields are
optional. Unknown fields are rejected so a typo cannot silently change a run.
targetselects the gateway and workspace. Explicit CLI flags andOPENSHELL_*environment variables take precedence over these values.inferenceselects the gateway inference route and model when needed. Itsprovidermust already exist in OpenShell.sandboxdescribes the image, policy, environment, provider attachments, payload handling, and cleanup behavior for a run.sandbox.providersnames providers that must already exist in OpenShell and attaches their masked proxies to the sandbox.sandbox.keepdefaults tofalse; set it totrueonly to retain a sandbox for debugging.agentis the command executed in the sandbox.sourceoptionally uploads a repository checkout.payloadsuploads host files or inline content to sandbox destinations.
String values may contain ${VAR} references resolved from the calling
process environment. Harness does not load .env files implicitly.
Workflow files contain provider names, never provider credential values. The gateway owns credentials and exposes masked proxy behavior to authorized sandbox requests. Raw credentials must not appear in workflow YAML, sandbox environment values, payloads, agent arguments, logs, artifacts, prompts, or structured output.
Workflow, policy, and payload declarations are trusted host-side inputs. Do not run an untrusted PR-supplied workflow with a credentialed host context; the trusted PR-review workflow checks out its workflow from the default branch and stages the PR diff as data. Interpolated values are redacted from display projections, but Harness does not attempt to detect credentials embedded as literal YAML values.
Inference route reconciliation currently writes a changed route and therefore requires workspace-admin access. Shared workspaces should use a matching bootstrap-owned route; isolated workspaces may use the compatibility write.
The Go parser in internal/config is the executable source of truth. Parser,
plan, apply, and redaction tests are the format contract. A future incompatible
shape increments version and fails clearly; there is no migration layer.