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 and input/output data roles. The SDK attaches the app-definition to the container image as an OCI Image Format annotation (org.cytario.appdef.v1) on the image manifest, then PUTs the manifest back under its original tag. Because the annotation is part of the manifest content, the manifest's immutable content digest binds the definition to the exact image — pinning the image by digest also pins the definition. The Cytario runtime fetches the manifest via GET /v2/<name>/manifests/<ref> and reads the definition from its annotations; no Harbor-specific API is used.

Application access (who may see/run an app, who may edit its saved configs) is not part of the app-definition. Entitlement is governed by the catalog connection's access scope on the Cytario side, not by anything carried in the registry image.

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

register fetches the container image manifest (by tag or digest), builds the app-definition document, attaches it as the org.cytario.appdef.v1 annotation on the manifest, and PUTs the manifest back under the original tag. The new manifest digest (returned by the registry) pins both the image and the definition. The Cytario runtime reads the annotation back via GET /v2/<name>/manifests/<ref>; 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 2.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 2.0.0
File Size Uploaded
cytario_app_sdk-2.0.0.tar.gz 85.7 kB Details

Built distribution (wheel)

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

Total release size: 101.9 kB

Release files / cytario_app_sdk-2.0.0.tar.gz

Download URL cytario_app_sdk-2.0.0.tar.gz
Size 85.7 kB
Tags Source
SHA-256 checksum
How to use checksums
ee0383cdfeb70d0043706fde86921a9d3b50605b2d0401e9bdf85a5bbf6ebc75
BLAKE2b-256 checksum
How to use checksums
ae03ec30a0ac9a057c34c981e65c792bc548d5d59bb89c655c1a3c183280b747
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 31, 2026.

Transparency log

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

Download URL cytario_app_sdk-2.0.0-py3-none-any.whl
Size 16.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cd6793b00e44349cabd3e78a503ca315333493291e99fdc4b7ea20835fe1b61b
BLAKE2b-256 checksum
How to use checksums
cc1da4d492811beb3ae1a4c67fb9be11d6db8b536353a020437cbc8e7a98d1fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 31, 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

This release

2.0.0 This release

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

1.0.0

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