Skip to main content

cytario-app-sdk

PyPI version Python License: MIT CI Release

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.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cytario-app-sdk 1.0.0
File Size Uploaded
cytario_app_sdk-1.0.0.tar.gz 81.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cytario-app-sdk 1.0.0
File Interpreter ABI Platform
cytario_app_sdk-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 96.4 kB

Release files / cytario_app_sdk-1.0.0.tar.gz

Download URL cytario_app_sdk-1.0.0.tar.gz
Size 81.9 kB
Tags Source
SHA-256 checksum
How to use checksums
bb562f289b84ad30c8e685ad251a1f3088727c200f27525f5bf8241ae8956f53
BLAKE2b-256 checksum
How to use checksums
fd37b8c0a44d90ece2a213105cf471c85bdb5f6147d89f44a7ebaf39bcc03654
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

Release files / cytario_app_sdk-1.0.0-py3-none-any.whl

Download URL cytario_app_sdk-1.0.0-py3-none-any.whl
Size 14.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
617e186046269a6dacd428379ddc620997ab002ff90df7d6c09ae7eaa3ca22dc
BLAKE2b-256 checksum
How to use checksums
9745e6ec0b997a8e1cafa3518d2af6ce1fb947027cc3aa61208f9c02556c865e
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

Release history Release notifications | RSS feed

4.2.0

2 release files

4.1.2

2 release files

4.1.1

2 release files

4.1.0

2 release files

4.0.1

2 release files

4.0.0

2 release files

3.3.1

2 release files

3.3.0

2 release files

3.2.0

2 release files

3.1.0

2 release files

3.0.0

2 release files

2.0.0

2 release files

1.1.0

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page