Skip to content

Declarative Provisioning (Two-Files Stack)

The ColabBio Declarative Provisioning System establishes a zero-code standard for deploying and configuring clinical AI environments across heterogeneous infrastructure. By decoupling the hospital’s data infrastructure (vfs.yaml) from the MLOps analytical pipeline (study.yaml), any research study can be executed seamlessly in any hospital.

graph TD
    subgraph DeclarativeManifests ["Declarative Contract (Two-Files Stack)"]
        VFS["vfs.yaml (Tenant Infrastructure & Secrets)"]
        STUDY["study.yaml (MLOps & Model Specification)"]
    end

    subgraph Targets ["Execution Targets (100% Environment Agnostic)"]
        LOCAL["1. Local CLI / Dev<br/><code>java -jar cb-svc-ai.jar --vfs=... --study=...</code>"]
        VM["2. Automated VM (Multipass / KVM)<br/><code>./launch-colabbio-vm.sh</code>"]
        K8S["3. Kubernetes Cluster (Helm)<br/><code>helm install --set-file vfsConfig=...</code>"]
    end

    VFS --> LOCAL
    STUDY --> LOCAL
    VFS --> VM
    STUDY --> VM
    VFS --> K8S
    STUDY --> K8S

1.1 vfs.yaml (Tenant / Hospital Data Federation)

Section titled “1.1 vfs.yaml (Tenant / Hospital Data Federation)”

Owned and managed by the Hospital IT & Data Engineering team. It defines data connectors, credentials, and virtual storage mappings without referencing specific machine learning models.

version: "1.0"
project: "vhio-hospital-tenant"
sources:
- id: "vhio-fhir-ehr"
type: "fhir"
endpoint: "https://fhir.vhio.org/r4"
auth:
secret_ref: "k8s://colabbio-secrets/vhio-fhir-token"
- id: "vhio-omero-wsi"
type: "omero"
endpoint: "https://omero.vhio.org/webclient"
auth:
secret_ref: "k8s://colabbio-secrets/vhio-omero-credentials"
- id: "vhio-omop-cdm"
type: "omop"
endpoint: "http://colabbio-mcp-omop:8080"
- id: "vhio-orthanc-pacs"
type: "orthanc"
endpoint: "http://colabbio-mcp-dicom:8081"
storage:
type: "pvc"
pvc_name: "vhio-medvfs-pvc"
local_path: "/data/medvfs/vhio"

1.2 study.yaml (MLOps Pipeline & Analytical Spec)

Section titled “1.2 study.yaml (MLOps Pipeline & Analytical Spec)”

Owned by the Data Science / Clinical Pathology team. It specifies data ingestion, Docker training environments, tracking, and inference deployment.

version: v1
metadata:
name: "breast-cancer-abmil"
run_id: "exp-breast-001"
description: "WSI gigapixel attention-based classification"
data:
vfs_config: "vhio-sources.yaml"
ingest:
- id: "cohort_ingest"
type: "fhir"
pipeline: "colabbio-loaders/csv-to-fhir.nf"
train:
type: "local"
image: "ghcr.io/colabbio/slidelab:v1.0.0"
resources:
cpus: 8
memory: "32 GB"
gpus: 1
mlflow:
experiment_name: "Breast_Cancer_ABMIL"
tracking_uri: "http://mlflow.colabbio.internal:5000"
deploy:
triton_model_name: "abmil_wsi_pac_classifier"
model_version: "1"

2. Dynamic Runtime Resolution (MedVfsConfigLoader)

Section titled “2. Dynamic Runtime Resolution (MedVfsConfigLoader)”

When the backend (cb-svc-ai) boots:

  1. MedVfsConfigLoader reads --vfs and --study CLI flags or /etc/colabbio/vfs.yaml.
  2. It parses both YAMLs using jackson-dataformat-yaml into type-safe DTOs (VfsSpec and StudySpec).
  3. It dynamically mutates base endpoints across all registered Model Context Protocol clients (FhirMcpService, OmeroMcpService, OmopMcpClient, DicomMcpClient) without requiring a server reboot.
sequenceDiagram
    participant CLI as VM / K8s / CLI Launcher
    participant Loader as MedVfsConfigLoader
    participant Registry as ClinicalMcpClientRegistry
    participant MCP as MCP Satellite Servers

    CLI->>Loader: Injects vfs.yaml & study.yaml
    Loader->>Loader: Deserializes into VfsSpec & StudySpec
    Loader->>Registry: updateClientEndpoint("omop", "http://...")
    Loader->>Registry: updateClientEndpoint("dicom", "http://...")
    Loader->>MCP: Establishes SSE stream connection
    Registry-->>CLI: 19 Clinical Tools Active & Ready

Terminal window
java -jar cb-svc-ai.jar \
--vfs=./cb-specs/catalog/sources/slidelab-abmil-vfs.yaml \
--study=./cb-specs/catalog/pipelines/slidelab-abmil-study.yaml

Automated Single-Command VM (Multipass / KVM)

Section titled “Automated Single-Command VM (Multipass / KVM)”
Terminal window
./cb-devops/local/launch-colabbio-vm.sh \
--name slidelab-abmil-vm \
--vfs ./cb-specs/catalog/sources/slidelab-abmil-vfs.yaml \
--study ./cb-specs/catalog/pipelines/slidelab-abmil-study.yaml \
--cpus 4 --memory 16G --disk 50G
Terminal window
helm install colabbio-tenant-slidelab ./cb-devops/cluster/charts/mcp-stack \
--set-file vfsConfig=./cb-specs/catalog/sources/slidelab-abmil-vfs.yaml \
--set-file studyConfig=./cb-specs/catalog/pipelines/slidelab-abmil-study.yaml \
-n colabbio-dev