Skip to content

DVC integration ​

CargoShip works with DVC (Data Version Control) in two complementary ways, so you can choose how deeply to integrate. They are independent — use either, or both.

The two integration paths ​

A. The Go dvc command (built into the CargoShip binary) ​

CargoShip can record DVC pipeline provenance directly in an upload's manifest. Upload with --dvc-auto and CargoShip auto-discovers stages from dvc.yaml, annotating every file entry with the stage that produced it. Afterward, the cargoship dvc command group reads that metadata back — list stages, compare local files against the archive, and regenerate .dvc sidecar files.

bash
# Annotate an upload with DVC stage provenance
cargoship upload ./data s3://my-bucket/dataset --dvc-auto

This path lives entirely in this repository (cargoship dvc plus the --dvc-auto upload flag). See Go dvc command for the full workflow.

B. The Python dvc-cargoship remote plugin ​

The dvc-cargoship plugin registers CargoShip as a DVC remote (the cargoship:// URL scheme) so dvc push / dvc pull route cache operations through CargoShip's chunked, compressed, parallel uploads — with optional per-project budget checks.

bash
pip install dvc-cargoship
dvc remote add -d myremote cargoship://my-bucket/dvc-cache
dvc push

The plugin is documented separately on the Python dvc-cargoship plugin page — see there for install, configuration, and remote setup.

Which should I use? ​

  • Want to version and track cache through DVC's own push/pull commands? Use the Python plugin (path B).
  • Want to archive a dataset with CargoShip while preserving which pipeline stage produced each file, then inspect or restore by stage? Use the Go dvc command (path A).

See also ​