Skip to content

Improve progress output and add a summary for human readability #1784

@FeynmanZhou

Description

@FeynmanZhou

What is the version of your ORAS CLI

oras v1.3.0-beta.3

What would you like to be added?

Provide a summary-like output for human readability when copying a multi-platform image (index)

✔ Found 6 platforms in ubuntu:24.04: linux/amd64, linux/arm64, linux/ppc64le, linux/s390x, linux/riscv64, linux/arm/v7
✔ Starting copy...

Platform: linux/amd64
  • Pulled config       2.3 KB   (0.4s)
  • Pulled layer 1     29.5 MB   (6.0s)
  • Pulled layer 2      5.1 MB   (0.9s)
  → Total:             34.9 MB   (7.3s)

Platform: linux/arm64
  • Pulled config       2.2 KB   (0.3s)
  • Pulled layer 1     28.3 MB   (3.0s)
  • Pulled layer 2      4.9 MB   (0.8s)
  → Total:             33.2 MB   (4.1s)

Platform: linux/ppc64le
  • Pulled config       2.2 KB   (0.3s)
  • Pulled layer 1     26.1 MB   (2.6s)
  → Total:             26.1 MB   (2.9s)

Platform: linux/s390x
  • Pulled config       2.2 KB   (0.3s)
  • Pulled layer 1     28.5 MB   (3.4s)
  → Total:             28.5 MB   (3.7s)

Platform: linux/riscv64
  • Pulled config       2.2 KB   (0.4s)
  • Pulled layer 1     30.1 MB   (3.8s)
  → Total:             30.1 MB   (4.2s)

Platform: linux/arm/v7
  • Pulled config       2.2 KB   (0.3s)
  • Pulled layer 1     27.9 MB   (3.1s)
  → Total:             27.9 MB   (3.4s)

Summary:
  • Platforms copied:    6
  • Total size:         180.7 MB
  • Total time:          28.2s
  • Source:              docker.io/library/ubuntu:24.04
  • Destination:       localhost:5000/ubuntu:24.04

Why is this needed for ORAS?

Without a summary, users are overwhelmed with low-level blob logs and lack a clear view of what actually happened. Adding a concise, human-readable summary significantly improves UX and operational confidence. Issues with current progress bar (without Summary):

  1. Too Verbose and Overwhelming for Non-Experts
    Dozens of lines for individual blobs, many repeating MIME types and digests. Hard to scan or extract key insights at a glance. Digest-heavy, JSON MIME-type output are great for debugging, but too low-level for end users.

  2. No Total Size or Time
    No summary of total data transferred (e.g., "Copied 172 MB in 28s"). Hard for users to understand performance or bandwidth impact.

  3. No Platform Awareness
    For multi-platform images (like ubuntu:24.04), there's no grouping or indication of which platform each layer belongs to.

  4. Hard to Validate
    Users can't tell whether the copy was complete or how many platforms/architecture were transferred successfully. Which tag or repository the artifact belongs to.

✓ Copied  application/vnd.oci.image.config.v1+json                                                                                             2.26/2.26 KB 100.00%  447ms
  └─ sha256:45a5868eb9f1dfbce42513000964664014789a43310865b0c8461e773e9972b9                                                                                              
✓ Copied  application/vnd.oci.image.config.v1+json                                                                                             2.24/2.24 KB 100.00%  353ms
  └─ sha256:f9248aac10f2f82e0970222e36cc7b71215b88e974e001282e5cd89797a82218                                                                                              
✓ Copied  application/vnd.oci.image.layer.v1.tar+gzip                                                                                          25.6/25.6 MB 100.00%     4s
  └─ sha256:149362fdfa6e6a5d9f009b896da3be3172c395ba2287b57d4969f3f46e573055                                                                                              
✓ Copied  application/vnd.oci.image.config.v1+json                                                                                               167/167  B 100.00%  442ms
  └─ sha256:063786d41c012c2e116e95d6da8acf95ecebeb48a5085f661a920ca3630b8c5a                                                                                              
✓ Copied  application/vnd.oci.image.config.v1+json                                                                                               167/167  B 100.00%     4s
  └─ sha256:29c3295ac482bc4e74da8569c24a929a260f7f482de48ad226282a2f541dd4fd                                                                                              
✓ Copied  application/vnd.oci.image.layer.v1.tar+gzip                                                                                          28.3/28.3 MB 100.00%     3s
  └─ sha256:b08e2ff4391ef70ca747960a731d1f21a75febbd86edc403cd1514a099615808                                                                                              
✓ Copied  application/vnd.oci.image.config.v1+json                                                                                             2.26/2.26 KB 100.00%  344ms
  └─ sha256:70ed52c84b4e4cd5f3b15c6e0edc7003fb4cd559df69dfc093fac029c9efd480                                                                                              
✓ Copied  application/vnd.in-toto+json                                                                                                         1.85/1.85 MB 100.00%  898ms
  └─ sha256:9b666bc868511a0f2d33a738a9ff0bd54eb750a72a832e8b59085d22bbdbaac2                                                                                              
✓ Copied  application/vnd.oci.image.config.v1+json                                                                                               167/167  B 100.00%  332ms
  └─ sha256:52dc31b2f6d13dcb4c5a03da78b922baa0e9799aa2249e24368d47397c11208f                                                                                              
✓ Copied  application/vnd.in-toto+json                                                                                                         1.85/1.85 MB 100.00%  890ms
  └─ sha256:854ad9e87ce93dae54ae1699837b2c812d2f373c3fb62625ea6992efa8f023c4                                                                                              
✓ Copied  application/vnd.oci.image.manifest.v1+json                                                                                             424/424  B 100.00%  315ms
  └─ sha256:02228b70d0ea3fa03e1fbfa10d9c32c4712b7c6ba9bb45148640e2945314b407                                                                                              
✓ Copied  application/vnd.oci.image.layer.v1.tar+gzip                                                                                          27.5/27.5 MB 100.00%     3s
  └─ sha256:3eff7d219313fd6db206bd90410da1ca5af1ba3e5b71b552381cea789c4c6713                                                                                              
✓ Copied  application/vnd.oci.image.manifest.v1+json                                                                                             424/424  B 100.00%  278ms
  └─ sha256:dbdff34bb41cecdb07c79af373b44bb4c9ccba2520f014221fb95845f14bc6c1                                                                                              
✓ Copied  application/vnd.oci.image.config.v1+json                                                                                             2.25/2.25 KB 100.00%  332ms
  └─ sha256:035f4f7aaf43b39502f5cf16f895dbe616cb63ec1d3f1c4824b931fc6cfc0ff7                                                                                              
✓ Copied  application/vnd.in-toto+json                                                                                                         1.85/1.85 MB 100.00%  514ms
  └─ sha256:1c00cd6e64a5290e4886d1d8157299b4fd38989da3d26203e1940c6ca8027683                                                                                              
✓ Copied  application/vnd.oci.image.manifest.v1+json                                                                                             562/562  B 100.00%  309ms
  └─ sha256:a2cd69a7cffa4553c0cfc24b78f18ead0b714b8738b11da5236a8af047a3abf8                                                                                              
✓ Copied  application/vnd.oci.image.manifest.v1+json                                                                                             562/562  B 100.00%  275ms
  └─ sha256:c6849eda0f5051d5eec0be2741930155bf16a01b620f239174b811d0142626a9                                                                                              
✓ Copied  application/vnd.oci.image.layer.v1.tar+gzip                                                                                          32.7/32.7 MB 100.00%     5s
  └─ sha256:384c99c6e2b4660fd65fc9823f13a263fb87d4aec3b8f2bd813a7a255bcf46f3                                                                                              
✓ Copied  application/vnd.oci.image.config.v1+json                                                                                               167/167  B 100.00%  365ms
  └─ sha256:1579e845081f3229de6b3231e843d16b4f676b8fba647234570f9672c493ae24                                                                                              
✓ Copied  application/vnd.oci.image.manifest.v1+json                                                                                             562/562  B 100.00%  278ms
  └─ sha256:0e77397e22cb1485bd97d26bfcba897ef0164ef03541e573fd87d5d1f830dd15                                                                                              
✓ Copied  application/vnd.oci.image.config.v1+json                                                                                             2.24/2.24 KB 100.00%  352ms
  └─ sha256:c352dea99d280e486fdc12f930a1d7b187276df716ed7fd8134b76bd19fbe67b                                                                                              
✓ Copied  application/vnd.in-toto+json                                                                                                         1.85/1.85 MB 100.00%  490ms
  └─ sha256:4518514dde70badf8e80800af2decccc78837a44babc7d161b3bd03870482a02                                                                                              
✓ Copied  application/vnd.oci.image.config.v1+json                                                                                               167/167  B 100.00%  331ms
  └─ sha256:2b789e240015a0ed3d678f8e85b62b80f6d9a9d4918b7b0692bd184068643edc                                                                                              
✓ Copied  application/vnd.oci.image.manifest.v1+json                                                                                             424/424  B 100.00%  277ms
  └─ sha256:021ffcf72f04042ab2ca66e678bb614f99c8dc9d5d1c97c6dd8302863078adba                                                                                              
✓ Copied  application/vnd.oci.image.layer.v1.tar+gzip                                                                                          29.5/29.5 MB 100.00%     5s
  └─ sha256:4ccdff8fdb11e14b8e0dab6804aeebce5855635c68b20f199dcf0efcd9b4c462                                                                                              
✓ Copied  application/vnd.oci.image.config.v1+json                                                                                             2.24/2.24 KB 100.00%  325ms
  └─ sha256:75f302ff3e884b2b6ec8595f5b2454befaaa2094a958babfc27cb38b11478855                                                                                              
✓ Copied  application/vnd.in-toto+json                                                                                                         1.84/1.84 MB 100.00%  595ms
  └─ sha256:2050eac784ab1377391601c12f43c8c735b11397c9094f776a97bd01f7b4b97a                                                                                              
✓ Copied  application/vnd.oci.image.manifest.v1+json                                                                                             562/562  B 100.00%  248ms
  └─ sha256:fd5514ddc85bee11c83ea1200b60c0ce36ef0bb5cdf394fd9223d4bb9fc6cb71                                                                                              
✓ Copied  application/vnd.oci.image.config.v1+json                                                                                               167/167  B 100.00%  344ms
  └─ sha256:6baec1e2eb6211fca60245c0c313a74557a824ecd0d3439be0165ee67721b0d3                                                                                              
✓ Copied  application/vnd.oci.image.layer.v1.tar+gzip                                                                                          28.5/28.5 MB 100.00%     3s
  └─ sha256:30d64ca13d9d94eb48bf3fece3e38a4e60931d72f1a8c633dec981e43a0515a4                                                                                              
✓ Copied  application/vnd.oci.image.manifest.v1+json                                                                                             562/562  B 100.00%  221ms
  └─ sha256:72ab60005ad1a17c6d6b8948f27657ac583a4db31d35170e45c3a4f8fbc8841b                                                                                              
✓ Copied  application/vnd.in-toto+json                                                                                                         1.85/1.85 MB 100.00%  632ms
  └─ sha256:fd6e28151f11aa9e1a36709655ed15deb7f25389581b9857702f51f3a2168276                                                                                              
✓ Copied  application/vnd.oci.image.manifest.v1+json                                                                                             424/424  B 100.00%  250ms
  └─ sha256:705087cdec4924e973d04c20e4681e088d7124c5c8c65f48783b9078c82cef6a                                                                                              
✓ Copied  application/vnd.oci.image.manifest.v1+json                                                                                             562/562  B 100.00%  309ms
  └─ sha256:9a232429485a7dce4b2243e6714cc752398eec44ebc39e32ff860292dc018206                                                                                              
✓ Copied  application/vnd.oci.image.manifest.v1+json                                                                                             424/424  B 100.00%  223ms
  └─ sha256:57c1ca3175929bb17d8fc8b6847e7751aedae98fe21d41b418083083b3793418                                                                                              
✓ Copied  application/vnd.oci.image.manifest.v1+json                                                                                             424/424  B 100.00%  236ms
  └─ sha256:4a68b6c5154f3198037d231aa68a5fd2546015fe278ab8961e4c658ed00cafe3                                                                                              
✓ Copied  application/vnd.oci.image.index.v1+json                                                                                              6.53/6.53 KB 100.00%  371ms
  └─ sha256:440dcf6a5640b2ae5c77724e68787a906afb8ddee98bf86db94eea8528c2c076                                                                                              
Copied [registry] index.docker.io/library/ubuntu:24.04 => [registry] localhost:5000/library/ubuntu:24.04
Digest: sha256:440dcf6a5640b2ae5c77724e68787a906afb8ddee98bf86db94eea8528c2c076

Are you willing to submit PRs to contribute to this feature?

  • Yes, I am willing to implement it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions