Architecture
SciWIn is five repositories that only make sense together. This page draws the two relationships that come up most often: how the pieces fit together, and how a tool gets a container without you writing a Dockerfile.
Component hierarchy
Section titled “Component hierarchy”SciWIn-Client (s4n) and SciWIn-Studio are two front ends over the same shared core. Both operate on the exact same on-disk project, a workflow.toml, your CWL files, and a git repository, so a project started in one opens cleanly in the other.
flowchart TD Studio["SciWIn-Studio<br/>Tauri + Svelte GUI"] CLI["s4n<br/>command-line interface"] Core["sciwin<br/>shared core: authoring · execution · provenance"] CWL["commonwl<br/>CWL parsing + execution engine"] RO["rocrate<br/>RO-Crate read/write"] REANA["reana<br/>REANA client"] Studio --> Core CLI --> Core Core --> CWL Core --> RO Core --> REANA
sciwinis the shared core: authoring CWLCommandLineTool/Workflowfiles, running them, and building provenance graphs. Neither front end duplicates this logic.commonwlparses CWL documents and provides the execution engine (local, Docker, and TES backends) behinds4n execute.rocratereads, writes, and validates RO-Crates, including the Provenance Run Cratess4n execute run --rocrateproduces — see Provenance & Publishing for what those actually contain.reanais the client used when execution targets a remote REANA server instead of running locally. A compatibility layer for tools that only carry aDockerfileexists in thesciwincrate — see Provenance & Publishing — but isn’t wired into execution yet.
Automatic container resolution
Section titled “Automatic container resolution”For a Python or R tool, s4n create --auto-container can skip writing a Dockerfile entirely. It reads the project’s own dependency file, resolves those dependencies against a FAIRagro-run registry, and attaches whichever pre-built image satisfies them, picking the smallest match.
flowchart LR Deps["requirements.txt /<br/>pyproject.toml / DESCRIPTION"] Create["s4n create<br/>--auto-container"] Registry["sciwin-container-registry<br/>package → image digest index"] Containers["sciwin-containers<br/>built images"] Deps --> Create --> Registry --> Containers
Two repositories do the real work here: sciwin-container-registry is the index mapping package requirements to image digests, and sciwin-containers is where those images are actually built. The resolved image is written straight into the generated CWL tool’s DockerRequirement, no Dockerfile authoring required.