pinexq CLI
A minimal command-line interface for creating and running pinexq workers.
Install (editable):
- Using uv or pip, from the project root:
uv pip install -e .orpip install -e .
Usage:
- Global options must precede the subcommand.
- Authentication: Provide
--api-keyor set thePINEXQ_API_KEYenvironment variable. The CLI prefers the flag over the env var.
Deploying on Docker Desktop (containerd image store)
Fresh Docker Desktop installs since version 4.34.0 default to the containerd
image store. This changes what a local image looks like, and both differences
are expected and supported by pinexq deploy:
- An image ID is the manifest (or index) digest rather than the config digest.
- A
docker buildproduces an OCI image index that also carries provenance and SBOM attestation manifests. This is normal; the deploy pushes it and registers the digest the registry reports.
Check which store is active:
docker info --format '{{ .DriverStatus }}' # containerd store shows "io.containerd..."
Note that docker system prune without -a does not remove tagged images —
so if a bad deploy is fixed by "prune and retry", it is the retry's fresh push
that fixes it, not the prune.
Troubleshooting: ImagePullBackOff right after a deploy
If a function pod fails to pull the image you just deployed, work through this
checklist. The full analysis is in
docs/research/2026-08-28-imagepullbackoff-after-successful-push.md.
-
Re-run the deploy with
--verbose. The push stream is printed chunk by chunk, so a swallowed registry error (denied,unauthorized,blob upload unknown) becomes visible. Since the fix in this repo, a failed push aborts the deploy instead of registering an unpullable digest. -
Read the pod events and map the error text to a cause:
kubectl describe pod <pod>
failed to resolve reference ... not found→ the registered digest is not a manifest the registry holds for this repository (the classic bug).failed to authorize ... 401 Unauthorized→ registry token / pull-secret problem, not a missing image.could not fetch content descriptor ... not found/httpReadSeeker: failed open→ the manifest exists but a referenced blob is missing.- A
localhost:6443/ mirror address in the message is the k3s Spegel mirror being tried first; the upstream registry error follows it.
-
Inspect the local image digests (compare against what was registered):
docker image inspect --format '{{json .RepoDigests}}' <name:tag> docker image inspect --format '{{ .Id }}' <name:tag> docker buildx imagetools inspect <registry>/<context>/<function>:<version>
-
Ask the registry directly whether the digest is present:
# with a token from the registry realm curl -sI -H "Authorization: Bearer $TOKEN" \ https://<registry>/v2/<context>/<function>/manifests/<digest> # or, if available: skopeo inspect --raw docker://<registry>/<context>/<function>@<digest> crane manifest <registry>/<context>/<function>@<digest>
-
Check the registry pod for restarts or
manifest unknownlog lines around the time of the deploy:kubectl -n <ns> logs deploy/registry --since=1h | grep -iE 'manifest|blob|unknown' kubectl -n <ns> get pod -l app.kubernetes.io/name=registry
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pinexq_cli-0.3.11-py3-none-any.whl.
File metadata
- Download URL: pinexq_cli-0.3.11-py3-none-any.whl
- Upload date:
- Size: 22.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b7e9d4dca5db9efe7e55f583a374cfe638080b44949d5930ded9db9eefc95dcc
|
|
| MD5 |
1b7e897bf6373866f04546ce155f4455
|
|
| BLAKE2b-256 |
cf672faf7f8161778a73f7b6b20790e0829e7e43f1f4e23e4dd4e3d2670ad971
|