Supported combination: platform 2026.10.1rc17 · tooling 2026.10.1rc17.
Installation

Verify the installation

Connect a registry and Environment, execute a known Action, and check retained evidence.

A responding server and an approved runner are the starting point. This guide checks the full path from registry inspection through Action execution to retained results. Use a harmless, known Action and a dedicated verification Environment.

Check the services

Terminal
pyplines version
pyplines --json runner list

Confirm the CLI is the selected tooling version. The runner must have admission: approved, draining: false, the intended pool, and a recent last_seen that continues to advance. Check the server and runner process/image versions separately; they must match the selected platform release.

For the shared-installation guides, the API is https://pyplines.example.com:8080. For local evaluation, use https://localhost:29443. Log in as the bootstrap administrator before continuing.

Obtain a known Action

If your team already publishes Actions, obtain an Action name, version, registry location, supported architecture, and input/output contract from its maintainer. Use its supplied verification Definition or adapt the following example to that contract. Operators do not need to build an Action when one is already available.

The rest of this walkthrough uses the repository's echo example, published as echo@2026.10.3. It simply returns its input message. This is a repository example, not an image guaranteed to exist in an official catalog.

Optional: publish the echo example

An Action maintainer with Docker, uv, Python 3.14, GitHub CLI, and registry write access can prepare it. From a Pyplines repository checkout containing examples/local/actions/echo, with TOOLING_TAG and TOOLING_VERSION selected:

Terminal
scripts/pyplines-action-installer.sh "$TOOLING_TAG" "$PWD/.local/bin"
mkdir -p .local/installation-check
cp -R examples/local/actions/echo .local/installation-check/echo
uv add --project .local/installation-check/echo --python 3.14 --no-sync \
  "pyplines==$TOOLING_VERSION"
.local/bin/pyplines-action registry login registry.example.com --username action-publisher
.local/bin/pyplines-action push .local/installation-check/echo \
  registry.example.com/actions --platform linux/amd64 --yes

Choose linux/arm64 instead when verifying an arm64 runner. The selected tooling release must provide its SDK and Action base images. The publisher's registry credentials are separate from the server's read credentials configured below. For anonymous registries, skip login.

For the local evaluation appliance, replace the final login/push commands with:

Terminal
.local/bin/pyplines-action push .local/installation-check/echo \
  localhost:25100 --platform linux/amd64 --plain-http --yes

Again, select the runner's architecture. This publishes localhost:25100/echo:2026.10.3; no repository prefix is used. If that version already exists with different bytes, use a new Action version in the copied pyproject.toml, update its lock, and update uses in the Definition below.

Configure registry access

For a shared installation, save:

registry.yaml
name: verification-registry
host: registry.example.com
plain_http: false
Terminal
pyplines registry apply registry.yaml
pyplines registry login verification-registry --username automation-reader
pyplines registry info verification-registry

Use credentials allowed to read the verification Action. Skip registry login if images are anonymously readable. For local evaluation, change host to localhost:25100, set plain_http: true, and skip registry login.

Create the verification Environment

environment.yaml
name: installation-check
registry:
  connection: verification-registry
  prefix: actions
pool: local
platform: linux/amd64
context: {}

Choose the runner's architecture. For local evaluation, remove prefix: actions because the example was published directly at the registry root. The echo Action needs no network or secrets. For other Actions, configure their required context, secrets, and network before execution; see Environment administration.

Terminal
pyplines environment apply environment.yaml
pyplines environment info installation-check

Deploy and execute

verification.yaml
apiVersion: pyplines/v1
kind: Definition
name: installation-check
steps:
  - name: echo
    uses: echo@2026.10.3
    with:
      message: Pyplines installation verified
Terminal
pyplines validate verification.yaml
pyplines deploy verification.yaml --environment installation-check --as verify
pyplines run start installation-check/verify --wait

Deployment must resolve the Action from the configured registry and pin its digest. If an existing policy requires approval, follow the approval procedure; do not weaken the policy to make this check pass.

Replace RUN_ID with the returned Run ID:

Terminal
pyplines run info RUN_ID
pyplines run attempts RUN_ID
pyplines run history RUN_ID
pyplines run logs RUN_ID echo

For the echo example, expect a successful Run, an output message of Pyplines installation verified, and its Action log. This exercises registry inspection, dispatch, runner image pulls, the work-volume mounts, and result/log reporting. It does not test connectivity or credentials needed by unrelated operational Actions.

Once the Run has settled, a controlled service restart should preserve the Run evidence and the runner's identity. Confirm both before handing the installation to users.

Diagnose a failed check

SymptomCheck
TLS or login failureAPI URL and port, certificate hostname, CA trust, and CLI session
Runner remains pendingApprove the correct runner ID; verify the enrollment's pool
Approved runner stops updating last_seenAdvertised NATS hostname/port, CA trust, runner logs, and Docker connection
Deployment cannot inspect the ActionRegistry host/prefix, read credentials, image version, and architecture
input_staging_failed or missing outputState directory permissions and whether PYPLINES_WORK_VOLUME contains the same files as PYPLINES_RUNNER_STATE
action_network_unavailableEnvironment network matches PYPLINES_ACTION_NETWORK and exists on the runner host
Work becomes uncertainPreserve runner identity/state and follow recovery before replacing anything

Finish by setting user/team access and approval policies, establishing backups, and providing operators with the server URL, Environment names, and available workflows.