run

Run Registry

Minimal but real WASI component registry with persistence and auth.

What it does

What it does NOT do (yet)

API

POST /api/v1/packages                    - Publish component (auth required)
GET  /api/v1/packages/:name/versions     - List versions
GET  /api/v1/packages/:name/:version     - Get metadata
GET  /packages/:name/:version/artifact.wasm - Download component
GET  /api/v1/search?q=<query>            - Search packages
GET  /api/v1/stats                       - Registry stats
GET  /health                             - Health check

Naming

Format: <namespace>:<name>@<version>

Examples:

Run

cargo run --release

Listens on http://0.0.0.0:$PORT (defaults to 8080 if PORT is not set)

Configuration

Environment variables:

Publish a component

curl -X POST http://localhost:8080/api/v1/packages \
  -H "Authorization: Bearer <TOKEN>" \
  -F "name=run:example/hello" \
  -F "version=1.0.0" \
  -F "description=Hello world component" \
  -F "license=MIT" \
  -F "sha256=<sha256>" \
  -F "artifact=@hello.wasm"

Install from registry

Update run.toml:

[registry]
url = "http://localhost:8080"  # local
# url = "https://registry.esubalew.dev"  # production

Then:

run v2 install run:example/hello@1.0.0

Status

This is a minimal registry with persistence and auth. For production, add backups, monitoring, and object storage.

Non-goals

This is NOT a full package registry. It’s the minimum to make run install work reliably.