Spring til indhold

Snart

Dit registry. Dine images. Ejet.

pks-agent-registry

Et container-registry på én binær, som dine agenter selv starter pr. projekt — en lokal, fuldt ejet erstatning for Azure Container Registry, der kører overalt og tages backup af med `tar`.

Illustration af pks-agent-registry

Hvert image, dine agenter bygger, ligger et sted, du ikke kontrollerer.

Kodende agenter bygger containere hele dagen — til previews, til tests, til release. Men det registry, de pusher til, er næsten altid lejet: en cloud-konto med sit eget login, sin egen pris pr. gigabyte og pr. pull, sit eget nedetidsvindue. Når agent-loopet afhænger af et registry, du ikke kan genstarte, tage backup af eller gennemskue, har du overladt fundamentet for din pipeline til andre. Vi valgte at eje det fundament.

  • Cloud-registries fakturerer pr. lagret gigabyte og pr. pullet image — omkostninger der vokser med præcis det, agenter gør mest: bygger og puller.

  • Den "nemme" vej er det fulde `distribution/distribution`-reference-image og et managed control plane — overkill til et registry pr. projekt, og en stak du ikke ejer.

  • Når registry'et er en black box, kan du ikke `tar`'e en backup, ikke genstarte det på sekunder og ikke læse dine egne data på disken.

Én container, én kommando, ét volume.

  1. Kør én container.

    `docker run` det ene image med ét volume til lagring og ét admin-token. Det er hele installationen — ingen database, ingen ekstra services.

  2. Tilføj en owner.

    `agent-registry owner add <dig>` — én kommando opretter dit namespace og login. Repos og tags dukker op automatisk, første gang du pusher; intet skal oprettes på forhånd.

  3. Push som du plejer.

    `docker login`, `docker push`. Det taler den standardiserede OCI v2-protokol, så `docker`, `podman`, `skopeo` og `crane` virker alle uændret.

  4. Tag backup med `tar`.

    Alt er almindelige filer under én mappe — blobs, manifests, tags, owners. Kopiér mappen, så har du en backup. Flyt mappen, så har du migreret.

  • Én binær, ét volume

    Hele registry'et er én Go-binær og én mappe på disken; ingen database, ingen sidecar-services at holde i live.

  • Standard-OCI, ingen overraskelser

    Taler Docker Registry V2 / OCI Distribution Spec, så `docker`, `podman`, `skopeo` og `crane` pusher og puller uændret.

  • Owner + repo-tenancy

    Hver owner får et namespace og sit eget login; repos og tags opstår ved første push uden at skulle oprettes på forhånd.

  • Lagring i almindelige filer

    Blobs, manifests og tags er content-adresserede filer under `USER_DATA_DIR` — `tar`-venlig backup, ingen indbygget database.

  • Admin indbygget i binæren

    Samme binær er admin-CLI'en: tilføj owners, list repos, slet tags og kør GC lokalt via `docker exec` eller eksternt over management-API'et.

  • Auth du kan gennemskue

    HTTP Basic pr. owner til push/pull, ét Bearer-token til management — afslut TLS på din egen reverse proxy.

  • Bygget fra fundamentet, ikke fra reference-imaget. I stedet for at køre den tunge `distribution/distribution`-stak er dette en minimal Go-binær skrevet til præcis det, et registry pr. projekt har brug for — hver beslutning truffet bevidst.

  • Ingen afhængighed vi ikke ejer. Lagringen er almindelige filer, hvis layout vi selv har skrevet; auth er Basic og Bearer, vi selv implementerer. Der er ingen indbygget database og intet managed control plane at afhænge af.

  • Kører overalt. Det er én container, der kører ens på en Hetzner-host, et Coolify-homelab, et CI-job eller din laptop — kun HTTP, med TLS afsluttet på den proxy, du allerede kører.

  • Komponérbar af design. Det er et runtime-lag, der ligger stille, mens resten af suiten bevæger sig omkring det: agenter pusher hertil, delivery puller herfra, og intet tvinger dig til at køre mere end selve registry'et.

Stop med at leje det registry, dine agenter er afhængige af.

pks-agent-registry er én Go-binær, der taler den standardiserede OCI-protokol. `docker push` virker uændret. Lagringen er almindelige filer på din disk. Ingen cloud-konto, ingen regning pr. pull, ingen database at passe på.

Udforsk hele suiten