Verify the installation
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
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:
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:
.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:
name: verification-registry
host: registry.example.com
plain_http: false
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
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.
pyplines environment apply environment.yaml
pyplines environment info installation-check
Deploy and execute
apiVersion: pyplines/v1
kind: Definition
name: installation-check
steps:
- name: echo
uses: echo@2026.10.3
with:
message: Pyplines installation verified
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:
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
| Symptom | Check |
|---|---|
| TLS or login failure | API URL and port, certificate hostname, CA trust, and CLI session |
| Runner remains pending | Approve the correct runner ID; verify the enrollment's pool |
Approved runner stops updating last_seen | Advertised NATS hostname/port, CA trust, runner logs, and Docker connection |
| Deployment cannot inspect the Action | Registry host/prefix, read credentials, image version, and architecture |
input_staging_failed or missing output | State directory permissions and whether PYPLINES_WORK_VOLUME contains the same files as PYPLINES_RUNNER_STATE |
action_network_unavailable | Environment network matches PYPLINES_ACTION_NETWORK and exists on the runner host |
| Work becomes uncertain | Preserve 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.

