cytario-app-sdk
A small CLI for registering Cytario analysis applications in an OCI Distribution v1.1 registry (e.g. Harbor 2.13+).
Cytario's "app catalog" is our concept, not the registry's: an analysis
application is a container image plus a metadata document (the app-definition)
that declares the app's parameter schema, input/output roles, and consumer /
maintainer groups. The SDK attaches the app-definition to the container image
as an OCI Referrer — a manifest with artifactType: application/vnd.cytario.app-definition.v1+json whose subject points at the
container image's manifest digest. The Cytario catalog adapter discovers
app-definitions via GET /v2/<name>/referrers/<image-digest> and never needs a
Harbor-specific API.
Install
pip install cytario-app-sdk
cytario-app-sdk --help
Or with uv:
uv tool install cytario-app-sdk
Quick start
cytario-app-sdk --registry https://harbor.example.com \
--user 'robot$cytario-catalog' \
--secret <robot-token> \
register examples/cellseg.yaml
Connection settings (registry endpoint, user, secret) can be supplied on the command line or via a YAML config file consumed by typer-config:
# cytario-app-sdk.yaml
registry: https://harbor.example.com
user: robot$cytario-catalog
secret: <robot-token>
cytario-app-sdk --config cytario-app-sdk.yaml register examples/cellseg.yaml
Validate an app-definition without pushing anything:
cytario-app-sdk --config cytario-app-sdk.yaml register --dry-run examples/cellseg.yaml
Registering an app
# examples/cellseg.yaml
schemaVersion: 1
name: cellseg
display: Cell Segmentation
description: Runs Cellpose on a 16-bit OME-TIFF.
image:
repository: cytario/cellseg
tag: "1.0.0"
parameterSchema:
type: object
properties:
diameter:
type: number
default: 30
required: []
inputRoles:
- name: image
mediaTypes:
- image/tiff
outputRoles:
- name: segmentation
mediaTypes:
- application/vnd.cytario.label-mask
groups:
consumers:
- cellbio-team
maintainers:
- imaging-platform
register resolves the container image manifest (by tag or digest), builds the
app-definition artifact, pushes it as a blob, and pushes an OCI image manifest
with subject set to the container image descriptor. The catalog adapter picks
it up via the Referrers API; no Harbor-specific calls are made.
Development
This project uses uv and targets Python 3.10+.
uv sync # install deps into .venv
uv run cytario-app-sdk --help # run the CLI
uv run ruff check --fix && uv run ruff format
uv run pytest
See CONTRIBUTING.md for the full contributor guide and the
Releases page for release history. Versions are cut automatically
with python-semantic-release — in no-commit mode, so no release commits
land on main.
License
Released under the MIT License. By contributing, you agree that your contributions will be licensed under the MIT License.
Metadata
Release files for cytario-app-sdk 1.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cytario_app_sdk-1.0.3.tar.gz | 84.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cytario_app_sdk-1.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 100.5 kB
Release files / cytario_app_sdk-1.0.3.tar.gz
| Download URL | cytario_app_sdk-1.0.3.tar.gz |
|---|---|
| Size | 84.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9064a2da48f65e8de9f4b868d2ac506170b914fa26f1d7a543c41628e88d1a4a
|
|
BLAKE2b-256 checksum How to use checksums |
144d036221a7bc55ef69633ffb5a9db5404382e764fb5f5b93256327335c20b0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.
Transparency logRelease files / cytario_app_sdk-1.0.3-py3-none-any.whl
| Download URL | cytario_app_sdk-1.0.3-py3-none-any.whl |
|---|---|
| Size | 15.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4f023675353e7691b76d222a5df424b72ad2d8323ad45c9bfaee560d774496e5
|
|
BLAKE2b-256 checksum How to use checksums |
93ae677e64b2405bf3d5e7b8edfa5b160ab0d8beb572f42343462e045b1ceb8d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.
Transparency log