Remix.run Logo
Show HN: Clipper – The World's Fastest Container Registry(clipper.dev)
1 points by a_t48 2 days ago

Hey HN!

I've built clipper.dev - the fastest container repository in the world. (Big claim, I know.) It deduplicates at a file/chunk level, rather than at the layer level.

I get around 10-20% faster pulls than docker (when using containerd for both) for fresh pulls. For some workflows, I see 80-90% faster patch pulls (think v0.17.5 -> 0.17.6).

Here's a best case scenario for me (and worst case for dockerhub)

    docker> time sudo nerdctl pull ollama/ollama:0.17.5
    docker.io/ollama/ollama:0.17.5:
    elapsed: 244.1s total:  2.9 Gi (12.3 MiB/s)                                      

    real 4m4.172s
    user 0m0.115s
    sys 0m0.227s
    docker> time sudo nerdctl pull ollama/ollama:0.17.6
    docker.io/ollama/ollama:0.17.6:
    elapsed: 234.9s total:  2.8 Gi (12.3 MiB/s)                                      

    real 3m54.965s
    user 0m0.051s
    sys 0m0.275s
---

    clipper> time sudo clipper pull clipper/ollama:0.17.5
    using containerd runtime at /run/containerd/containerd.sock
    fetching manifest clipper.dev/clipper/ollama:0.17.5 ...
    image created: clipper.dev/clipper/ollama:0.17.5
    fetched 46 chunks (2.2 GB, 11.7 MB/s), took 3m16.134s
    done — clipper.dev/clipper/ollama:0.17.5

    real 3m17.532s
    user 0m0.006s
    sys 0m0.012s

    clipper> time sudo clipper pull clipper/ollama:0.17.6
    using containerd runtime at /run/containerd/containerd.sock
    fetching manifest clipper.dev/clipper/ollama:0.17.6 ...
    image created: clipper.dev/clipper/ollama:0.17.6
    fetched 6 chunks (599.2 MB, 7.7 MB/s), took 1m17.48s
    done — clipper.dev/clipper/ollama:0.17.6

    real 1m19.061s
    user 0m0.005s
    sys 0m0.016s
The first two layers of 0.17.6 are shared with 0.17.5, but everything else has to be transported again with docker, but not with clipper. The exact speedup depends on how fast my wifi is feeling at the time, but I'm pulling 1.5 GB less than dockerhub can do. This is _huge_ for robotics workflows or anyone else pulling docker images on poor connections. (This is not even as fast as it could be - there's other optimizations like chunking within files or using BytePort that could make this go even faster).

I built this because at multiple companies I've been at, pulling new images for updates has been...very painful. Robotics Dockerfiles tend to have a lot of dependencies stuffed into a small amount of layers. Adding one new dependency means shipping the bytes for every other dependency, even with perfect pinning. Additionally, the Dockerfiles are oftentimes...not well written, compounding the problem. So I decided to fix the tool to fit the user, rather than the inverse.

There's some other side benefits to using clipper: - Moving a file or changing permissions is "free": another layer already has the bytes - The on-disk structure lends itself much better to P2P device updates than docker's layout

I do intend this to be a commercial product, but pricing is still up in the air. I'm currently targeting robotics companies as they feel the most pain here. There's some other possible fields that I'm interested in that might find use in this: IoT, edge AI, space datacenters/etc, developmer tooling.

Please give it a try. If you don't want to upload an image, these repos should be publically pullable once you register an account:

    clipper/ubuntu: 20.04, 22.04, 24.04
    clipper/ollama: 0.17.5, 0.17.6
    clipper/python: 3.13, 3.14