local-registry

Start and manage a local OCI registry for Bottlerocket kit development

Compatible avec~Claude Code~Codex CLI~Cursor
npx add-skill https://github.com/cbgbt/bottlerocket-forest/tree/main/skills/local-registry

name: local-registry description: Start and manage a local OCI registry for Bottlerocket kit development

Skill: Local OCI Registry

Purpose

Start and manage a local OCI registry for development. This allows building and publishing kits locally without requiring external registry access.

When to Use

  • Developing changes to kits that need to be consumed by variants
  • Testing kit changes before publishing to production registries
  • Working offline or in isolated environments

Prerequisites

  • Docker installed and running
  • Working from within a grove directory

Procedure

Start the registry

brdev registry start

This will:

  • Start a local Docker registry on localhost:5000
  • Configure persistence (registry data survives restarts)
  • Wait for the registry to be healthy before returning
  • Output the registry URL for use in builds

Verify registry is running

brdev registry status

Returns exit code 0 if running, non-zero otherwise.

Get registry URL

brdev registry url

Outputs localhost:{port} for the current grove. Use this in scripts instead of hardcoding ports.

View registry logs

brdev registry logs

To follow logs in real-time:

brdev registry logs --follow

Stop the registry

brdev registry stop

Note: This preserves the registry data volume.

Clean registry data

brdev registry clean

This removes both the container and the data volume.

Configuration

brdev uses environment variables for configuration. Create a .env file in the forest root or set environment variables:

# Custom image (default: registry:2)
BRDEV_REGISTRY_IMAGE=registry:2.8

Note: Container and volume names are automatically derived from the grove name as brdev-registry-{grove} and brdev-registry-data-{grove}. The port is auto-derived from a hash of the grove name (range 5001-5999).

Validation

After starting the registry:

brdev registry list

Should return: {"repositories":[]}

Common Issues

Docker not installed:

Error: Docker is not installed or not in PATH. Install Docker and ensure it's in your PATH

Solution: Install Docker and ensure it's in your PATH.

Docker daemon not running:

Error: Docker daemon is not running. Start Docker with: sudo systemctl start docker

Solution: Start the Docker daemon.

Port already in use:

Error: Failed to start container. The port may already be in use

Solution:

  • Check for existing registry: docker ps | grep registry
  • Stop conflicting container: docker stop <container-id>
  • Or use a custom port via FORESTER_REGISTRY_PORT

Permission denied:

  • Ensure user is in docker group: groups | grep docker
  • Add user to docker group: sudo usermod -aG docker $USER
  • May need to restart shell after adding to group

Related Skills

  • build-kit-locally - Uses local registry to publish built kits
  • build-variant-from-local-kits - Configures variant builds to use local registry

See Also

Configuration commands for local registry usage:

For publishing kits:

  • brdev twoliter use-local-publish - Create Infra.toml for publishing to local registry
  • brdev twoliter use-upstream-publish - Remove Infra.toml

For fetching kits:

  • brdev twoliter use-local-deps - Create Twoliter.override for fetching from local registry
  • brdev twoliter use-upstream-deps - Remove Twoliter.override

Both (convenience):

  • brdev twoliter use-local - Create both files
  • brdev twoliter use-upstream - Remove both files

When fetching, also set vendor = "local" in Twoliter.toml for specific kits you want from the local registry.

Individual skills in this repo

This repo contains 19 individual skills — each has its own dedicated page.

ad-hoc-implementation-plan

Transform a rough plan into implement-commit ready artifacts. Allows rigorous review while implementing.

build-kit-locally

Build a kit and publish it to a locally hosted registry for development testing

build-variant-from-local-kits

Build a variant using locally published kits for development validation

deep-research

Create educational documents that build understanding progressively with citations

edit-spec-file

Edit Bottlerocket RPM spec files following project style conventions

fact-find

Quick lookup of specific facts about Bottlerocket with citations

idea-honing

Clarify feature ideas through iterative Q&A, recording insights to guide concept development

implement-commit

Implement commits from an implementation plan using a TDD pipeline

prepare-core-kit-release

Prepare bottlerocket-core-kit for release by bumping version and updating changelog

propose-feature-concept

Create a new feature concept document to pitch the idea and explain the problem/solution

propose-feature-design

Create or update feature technical design document with architecture and implementation guidance

propose-feature-requirements

Create or update feature requirements specification using EARS notation with examples and appendices

propose-feature-test-plan

Create a test plan mapping EARS requirements and Critical Constraints to specific tests

propose-implementation-plan

Create an implementation plan with atomic commits that build toward a complete feature

review-code

Deep code review generating PR comments via principled question-driven analysis

review-scope

Verify code changes match intended scope and requirements without exceeding boundaries

review-style

Verify code follows project style guides without providing improvement suggestions

test-local-twoliter

Build and test local changes to twoliter before releasing

update-twoliter

Update all Bottlerocket repositories to a new Twoliter version

Skills associés