Skip to content
Back to skills

Local Registry

BSecurity

Start and manage a local OCI registry for Bottlerocket kit development

  • 666 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added February 9, 2026
developmentshellbashdockertesting

Security analysis

B88/100
  • criticalModifies startup scripts or system services for persistence

Pro shows the line behind each finding and how to fix it

Scanned February 10, 2026

npx -y skills add majiayu000/claude-skill-registry --skill local-registry --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Local Registry?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Local Registry
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-local-registry/badge)](https://www.skillsdirectory.com/skills/majiayu000-local-registry)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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

```bash
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

```bash
brdev registry status
```

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

### Get registry URL

```bash
brdev registry url
```

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

### View registry logs

```bash
brdev registry logs
```

To follow logs in real-time:
```bash
brdev registry logs --follow
```

### Stop the registry

```bash
brdev registry stop
```

Note: This preserves the registry data volume.

### Clean registry data

```bash
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:

```bash
# 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:
```bash
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.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.