# spegel-org/spegel

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/spegel-org-spegel).**

3,485 stars · 137 forks · Go · mit

## Links

- GitHub: https://github.com/spegel-org/spegel
- Homepage: https://spegel.dev
- awesome-repositories: https://awesome-repositories.com/repository/spegel-org-spegel.md

## Topics

`cloud` `containerd` `docker` `go` `golang` `kubernetes` `oci` `p2p` `registry`

## Description

Spegel is a container registry cache and peer-to-peer distribution system for Kubernetes. It functions as an OCI image mirror and content addressable store that shares image layers between cluster nodes to reduce external registry traffic and latency.

The project implements a distributed hash table to locate image digests across the network, allowing nodes to retrieve content from peers rather than repeated external downloads. This architecture mitigates registry rate-limiting and provides offline image availability to prevent workload failures during registry outages.

The system covers capabilities for OCI image caching, distributed image delivery, and Kubernetes node provisioning. It includes mechanisms for tag resolution and registry mirroring to reduce cloud egress costs and accelerate pod startup times.

## Tags

### DevOps & Infrastructure

- [Registry Mirroring](https://awesome-repositories.com/f/devops-infrastructure/air-gapped-deployment-tools/registry-mirroring.md) — Creates local copies of external registry content to ensure image availability during outages and bypass rate limits. ([source](https://spegel.dev/docs/architecture/))
- [Container Registry Proxies](https://awesome-repositories.com/f/devops-infrastructure/container-registry-proxies.md) — Provides a local proxy that intercepts image pull requests to serve cached content or fallback to remote registries.
- [Container Image Mirroring Tools](https://awesome-repositories.com/f/devops-infrastructure/container-image-mirroring-tools.md) — Provides tools for mirroring OCI images from external registries to local cluster storage. ([source](https://spegel.dev/docs))
- [Container Image Registries](https://awesome-repositories.com/f/devops-infrastructure/container-image-registries.md) — Acts as a local registry cache to ensure workloads can start even when external registries are unavailable. ([source](https://cdn.jsdelivr.net/gh/spegel-org/spegel@main/README.md))
- [Upstream Registry Caching](https://awesome-repositories.com/f/devops-infrastructure/container-image-registries/upstream-registry-caching.md) — Acts as a storage layer that caches images from external registries to prevent outage-driven failures.
- [Container Image Caching](https://awesome-repositories.com/f/devops-infrastructure/container-orchestration/image-management-tools/container-image-caching.md) — Caches container image layers locally on the cluster to accelerate pull speeds and reduce egress traffic. ([source](https://cdn.jsdelivr.net/gh/spegel-org/spegel@main/README.md))
- [Image Distributions Across Members](https://awesome-repositories.com/f/devops-infrastructure/container-orchestration/image-management-tools/container-image-distribution/image-distributions-across-members.md) — Distributes container images across cluster members so nodes can retrieve content from peers. ([source](https://spegel.dev/docs))
- [Image Caching](https://awesome-repositories.com/f/devops-infrastructure/image-caching.md) — Caches OCI image layers locally to accelerate pull speeds and prevent registry rate-limit exhaustion. ([source](https://spegel.dev/docs/benchmark/))
- [Offline Image Availability](https://awesome-repositories.com/f/devops-infrastructure/offline-image-availability.md) — Serves cached images to the cluster when external registries are unreachable to keep workloads running. ([source](https://spegel.dev/docs/))
- [Registry Proxy Mirrors](https://awesome-repositories.com/f/devops-infrastructure/registry-proxy-mirrors.md) — Functions as an OCI image mirror that intercepts pull requests to reduce external registry traffic and latency.
- [Cloud Infrastructure Cost Optimization](https://awesome-repositories.com/f/devops-infrastructure/cloud-infrastructure-cost-optimization.md) — Lowers cloud infrastructure costs by minimizing the amount of data transferred from external container registries.
- [Runtime Configuration Injection](https://awesome-repositories.com/f/devops-infrastructure/container-runtimes/runtime-configuration-injection.md) — Writes container runtime settings during boot to route image pulls through the local mirror.
- [Tag-to-Digest Resolution](https://awesome-repositories.com/f/devops-infrastructure/image-registry-clients/image-path-rewriting/immutable-image-tagging/tag-to-digest-resolution.md) — Uses a mutating webhook to resolve image tags to immutable digests before scheduling pods for version stability.

### Data & Databases

- [Local Caching Layers](https://awesome-repositories.com/f/data-databases/local-first-storage/local-caching-layers.md) — Caches container image layers on local node disks to accelerate pod startups and ensure offline availability.
- [Content-Addressable Stores](https://awesome-repositories.com/f/data-databases/storage-abstraction/content-addressable-stores.md) — Implements a distributed content-addressable store to locate and retrieve specific image digests by their hashes.

### Networking & Communication

- [Cluster Image Distribution](https://awesome-repositories.com/f/networking-communication/cluster-image-distribution.md) — Distributes container image layers between cluster nodes to avoid repeated external downloads.
- [Peer-to-Peer Content Delivery](https://awesome-repositories.com/f/networking-communication/peer-to-peer-content-delivery.md) — Shares container image layers directly between cluster nodes using peer-to-peer discovery to accelerate pod startups.
- [Peer-to-Peer Distribution Protocols](https://awesome-repositories.com/f/networking-communication/peer-to-peer-distribution-protocols.md) — Shares container image data directly between cluster nodes to reduce external network traffic and bypass rate limits.
- [Distributed Hash Table Discovery](https://awesome-repositories.com/f/networking-communication/peer-to-peer-protocols/http-to-p2p-translation/distributed-hash-table-discovery.md) — Implements a distributed hash table to locate image digests across cluster nodes for peer-to-peer retrieval. ([source](https://spegel.dev/docs/architecture/))
- [Content Provider Advertising](https://awesome-repositories.com/f/networking-communication/content-provider-advertising.md) — Broadcasts the availability of locally stored image blocks to the network to enable peer sharing. ([source](https://spegel.dev/docs/architecture/))

### Software Engineering & Architecture

- [Distributed Hash Tables](https://awesome-repositories.com/f/software-engineering-architecture/distributed-systems/distributed-data-management/distributed-hash-tables.md) — Implements a distributed hash table to map image digests to the nodes that hold them for P2P retrieval.
- [Request Rate Limiting](https://awesome-repositories.com/f/software-engineering-architecture/traffic-management/request-rate-limiting.md) — Reduces the volume of outgoing requests to external registries by serving cached images from a local mirror. ([source](https://cdn.jsdelivr.net/gh/spegel-org/spegel@main/README.md))

### Development Tools & Productivity

- [Mirror Configurations](https://awesome-repositories.com/f/development-tools-productivity/terminal-environments/mirror-configurations.md) — Configures mirror settings within the container runtime to optimize image download performance. ([source](https://spegel.dev/docs/node-configuration/))

### System Administration & Monitoring

- [Tag-to-Digest Attestations](https://awesome-repositories.com/f/system-administration-monitoring/asset-tagging-filtering/image-tag-filtering/tag-to-digest-attestations.md) — Ensures image availability by resolving mutable tags to immutable digests via a mutating webhook. ([source](https://spegel.dev/docs))
- [Tag Resolution Strategies](https://awesome-repositories.com/f/system-administration-monitoring/asset-tagging-filtering/tag-resolution-strategies.md) — Provides control over whether image tags are resolved locally or forced to be fetched from upstream registries. ([source](https://spegel.dev/docs/resolving-tags/))
