Files
mesh-catalog/modules/distribution/module.json
T
jschoubben e97167c58f G-catalog-B 7: a transfer dropped by hand is recorded through mesh-hand-acts first
registry_incoming, npm_incoming and go_incoming dropped a transfer by hand with only a log line. Each
drop now records its hand act through the seat mesh-hand-acts before anything goes, as nats_requests
does; an act not recorded leaves the transfer open. distribution's manifest invokes the seat.

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
2026-11-04 18:13:44 +01:00

265 lines
5.7 KiB
JSON

{
"module": "distribution",
"version": "2",
"provides": [
{
"name": "artifact-store",
"scope": "mesh",
"credential": {
"form": "none"
}
}
],
"claims": [
{
"name": "container-image-registry",
"scope": "mesh",
"serves": [
"hold",
"mirror",
"publish",
"publish-part",
"release",
"remove",
"tags",
"versions"
]
},
{
"name": "oci-artifact-registry",
"scope": "mesh",
"serves": [
"hold",
"publish",
"publish-part",
"release",
"remove",
"versions"
]
},
{
"name": "mesh-artifact-store",
"scope": "mesh"
}
],
"tools": [
"registry_callers",
"registry_direct_writes",
"registry_health",
"registry_holds",
"registry_incoming",
"registry_mirrors",
"registry_old_name"
],
"invokes": [
"distribution.registry_callers",
"mesh-delivery-builder.builder_versions",
"mesh-delivery-view.node_haves",
"seat:node-engine.manifest-reads",
"seat:mesh-hand-acts.hand-act"
],
"consumes": [
"mesh-delivery-view.delivered",
"node-engine.manifest-reads-changed"
],
"emits": [
"old-name-closed",
"direct-writes-closed"
],
"config": {
"callers": {
"type": "string",
"trusted": true,
"description": "per verb, the modules that may call it (JSON object of verb to modules; operator for the operator's session); empty is design 51's list"
}
},
"requires": [
{
"name": "incoming",
"storage": "object-store",
"template": "objects",
"options": {
"max-mib": 8192
}
},
{
"name": "transfers",
"storage": "key-value",
"template": "state"
},
{
"name": "idle",
"storage": "key-value",
"template": "state",
"options": {
"key-ttl": true
}
},
{
"name": "holds",
"storage": "key-value",
"template": "state"
},
{
"name": "windows",
"storage": "key-value",
"template": "state"
},
{
"name": "mirrors",
"storage": "key-value",
"template": "state"
},
{
"name": "findings",
"storage": "key-value",
"template": "state"
},
{
"name": "events",
"storage": "stream",
"template": "events",
"options": {
"max-age-days": 7,
"max-mib": 16
}
}
],
"capabilities": [
"container-runtime"
],
"own-secrets": {
"broker": "/var/lib/mesh/registry/broker"
},
"secrets-owner": "distribution",
"serves": {
"artifact-store": {
"port": 5000
}
},
"listens": [
{
"name": "registry",
"port": 5000,
"protocol": "tcp",
"from": "mesh",
"why": "every machine pulls images and artifacts from here; distribution's program serves it in front of the store"
}
],
"data": {
"own": [
{
"id": "registry",
"path": "${dir:registry-data}",
"class": "rebuildable",
"backup": "none",
"measure": "shallow",
"why": "the artifact store: every image is built again from its source, and too large to copy every night (ADR 0214 left it out)"
}
]
},
"resources": [
{
"id": "account",
"type": "user",
"name": "distribution",
"shell": "/usr/bin/nologin",
"home": "/var/lib/mesh/registry"
},
{
"id": "state",
"type": "directory",
"path": "/var/lib/mesh/registry",
"mode": "0700",
"unknown": "program",
"owner": "distribution"
},
{
"id": "registry-data",
"type": "directory",
"path": "/var/lib/mesh-registry",
"mode": "0700",
"unknown": "program",
"owner": "distribution"
},
{
"id": "store",
"type": "container",
"name": "mesh-registry",
"image": "registry@sha256:a3d8aaa63ed8681a604f1dea0aa03f100d5895b6a58ace528858a7b332415373",
"ports": [
"127.0.0.1:5001:5000"
],
"volumes": [
"/var/lib/mesh-registry:/var/lib/registry"
],
"env": {
"REGISTRY_STORAGE_DELETE_ENABLED": "true"
}
},
{
"id": "program",
"type": "process",
"name": "distribution",
"artifact": "program",
"run": [
"./distribution"
],
"env": {
"MESH_BROKER_FILE": "/var/lib/mesh/registry/broker",
"MESH_REGISTRY_LOOPBACK": "http://127.0.0.1:5001",
"MESH_REGISTRY_LISTEN": ":5000"
},
"user": "distribution",
"health": {
"kind": "tool",
"tool": "registry_health",
"interval": "60s",
"timeout": "10s",
"looks": 2,
"grace": "90s"
}
},
{
"id": "collect",
"type": "container",
"name": "mesh-registry-collect",
"image": "registry@sha256:a3d8aaa63ed8681a604f1dea0aa03f100d5895b6a58ace528858a7b332415373",
"volumes": [
"/var/lib/mesh-registry:/var/lib/registry"
],
"args": [
"garbage-collect",
"/etc/docker/registry/config.yml"
],
"schedule": "30 3 * * *",
"while-stopped": [
"store"
]
}
],
"build": {
"artifacts": [
{
"name": "program",
"kind": "bundle",
"language": "go",
"system": "arch",
"from": "cmd/distribution",
"binary": "distribution"
},
{
"name": "tools",
"kind": "bundle",
"language": "go",
"system": "arch",
"from": "cmd/distribution-tools",
"binary": "distribution-tools",
"loads": [
"distribution-tools"
]
}
]
}
}