Skip to content

Coming soon

Your registry. Your images. Owned.

pks-agent-registry

A single-binary container registry your agents spin up per project — a local, fully-owned replacement for Azure Container Registry that runs anywhere and backs up with `tar`.

Illustration of pks-agent-registry

Every image your agents build lives somewhere you don't control.

Coding agents build containers all day — for previews, for tests, for ship. But the registry they push to is almost always rented: a cloud account with its own login, its own pricing per gigabyte and per pull, its own outage window. When the agent loop depends on a registry you can't restart, back up, or reason about, you've handed the foundation of your pipeline to someone else. We chose to own that foundation.

  • Cloud registries bill you per gigabyte stored and per image pulled — costs that scale with exactly the thing agents do most: build and pull.

  • The "easy" path is the full `distribution/distribution` reference image and a managed control plane — overkill for a per-project registry, and a stack you don't own.

  • When the registry is a black box, you can't `tar` a backup, can't restart it in seconds, and can't read your own data on disk.

One container, one command, one volume.

  1. Run one container.

    `docker run` the single image with one volume for storage and one admin token. That's the whole install — no database, no extra services.

  2. Add an owner.

    `agent-registry owner add <you>` — one command creates your namespace and login. Repos and tags appear automatically the first time you push; nothing to pre-create.

  3. Push like you always have.

    `docker login`, `docker push`. It speaks the standard OCI v2 protocol, so `docker`, `podman`, `skopeo`, and `crane` all work unmodified.

  4. Back it up with `tar`.

    Everything is plain files under one folder — blobs, manifests, tags, owners. Copy the folder, you have a backup. Move the folder, you've migrated.

  • One binary, one volume

    The whole registry is a single Go binary and one folder on disk; no database, no sidecar services to keep alive.

  • Standard OCI, zero surprises

    Speaks the Docker Registry V2 / OCI Distribution Spec, so `docker`, `podman`, `skopeo`, and `crane` push and pull unmodified.

  • Owner + repo tenancy

    Each owner gets a namespace and its own credential; repos and tags materialize on first push with nothing to pre-create.

  • Plain-file storage

    Blobs, manifests, and tags are content-addressed files under `USER_DATA_DIR` — `tar`-friendly backups, no embedded database.

  • Admin baked into the binary

    The same binary is the admin CLI: add owners, list repos, delete tags, and run GC locally via `docker exec` or remotely over the management API.

  • Auth you can reason about

    HTTP Basic per owner for push/pull, a single Bearer token for management — terminate TLS at your own reverse proxy.

  • Built from the foundation, not the reference image. Instead of running the heavy `distribution/distribution` stack, this is a minimal Go binary written for exactly what a per-project registry needs — every decision deliberately taken.

  • No dependency we don't own. Storage is plain files we wrote the layout for; auth is Basic and Bearer we implement ourselves. There's no embedded database and no managed control plane to depend on.

  • Runs everywhere. It's one container that runs the same on a Hetzner host, a Coolify homelab, a CI job, or your laptop — HTTP only, with TLS terminated at the proxy you already run.

  • Composable by design. It's a runtime layer that holds still while the rest of the suite moves around it: agents push here, delivery pulls from here, and nothing forces you to run more than the registry itself.

Stop renting the registry your agents depend on.

pks-agent-registry is one Go binary that speaks the standard OCI protocol. `docker push` works unmodified. Storage is plain files on your disk. No cloud account, no per-pull bill, no database to babysit.

Explore the full suite