# MCR

Metacircular Container Registry -- an OCI Distribution Spec-compliant
container registry for the Metacircular platform. MCR stores and serves
container images with authentication delegated to MCIAS and a local
policy engine for fine-grained access control. Metadata is stored in
SQLite; blobs are stored as content-addressed files on the filesystem.

## Quick Start

Build the binaries:

```bash
make all
```

This produces three binaries:

| Binary | Purpose |
|--------|---------|
| `mcrsrv` | Registry server (OCI + admin REST + gRPC) |
| `mcr-web` | Web UI (htmx, communicates with mcrsrv via gRPC) |
| `mcrctl` | Admin CLI |

Copy and edit the example configuration:

```bash
cp deploy/examples/mcr.toml /srv/mcr/mcr.toml
# Edit TLS paths, database path, storage paths, MCIAS URL
```

Run the server:

```bash
./mcrsrv server --config /srv/mcr/mcr.toml
```

The server starts two listeners:

| Port | Protocol | Purpose |
|------|----------|---------|
| 8443 | TCP | HTTPS -- OCI Distribution endpoints + admin REST API |
| 9443 | TCP | gRPC admin API (TLS, MCIAS auth) |

Run the web UI:

```bash
./mcr-web server --config /srv/mcr/mcr.toml
```

| Port | Protocol | Purpose |
|------|----------|---------|
| 8080 | TCP | HTTP -- web UI (repository browsing, policy management) |

## Documentation

- [ARCHITECTURE.md](ARCHITECTURE.md) -- full technical specification, OCI compliance details, database schema, policy engine, and security model.
- [RUNBOOK.md](RUNBOOK.md) -- operational procedures, health checks, backup/restore, incident response, and MCP deployment.
- [CLAUDE.md](CLAUDE.md) -- context for AI-assisted development.
