io.atcr.manifest
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"blobReference": {
"description": "Reference to a blob stored in S3 or external storage",
"properties": {
"annotations": {
"description": "Optional OCI annotation metadata. Map of string keys to string values.",
"type": "unknown"
},
"digest": {
"description": "Content digest (e.g., 'sha256:...')",
"maxLength": 128,
"type": "string"
},
"mediaType": {
"description": "MIME type of the blob",
"maxLength": 128,
"type": "string"
},
"size": {
"description": "Size in bytes",
"type": "integer"
},
"urls": {
"description": "Optional direct URLs to blob (for BYOS)",
"items": {
"format": "uri",
"type": "string"
},
"type": "array"
}
},
"required": [
"mediaType",
"size",
"digest"
],
"type": "object"
},
"main": {
"description": "A container image manifest following OCI specification, stored in ATProto",
"key": "tid",
"record": {
"properties": {
"annotations": {
"description": "Optional OCI annotation metadata. Map of string keys to string values (e.g., org.opencontainers.image.title → 'My App').",
"type": "unknown"
},
"config": {
"description": "Reference to image configuration blob",
"ref": "#blobReference",
"type": "ref"
},
"createdAt": {
"description": "Record creation timestamp",
"format": "datetime",
"type": "string"
},
"digest": {
"description": "Content digest (e.g., 'sha256:abc123...')",
"maxLength": 128,
"type": "string"
},
"holdDid": {
"description": "DID of the hold service where blobs are stored (e.g., 'did:web:hold01.atcr.io'). Primary reference for hold resolution.",
"format": "did",
"type": "string"
},
"holdEndpoint": {
"description": "Hold service endpoint URL where blobs are stored. DEPRECATED: Use holdDid instead. Kept for backward compatibility.",
"format": "uri",
"type": "string"
},
"layers": {
"description": "Filesystem layers (for image manifests)",
"items": {
"ref": "#blobReference",
"type": "ref"
},
"type": "array"
},
"manifestBlob": {
"description": "The full OCI manifest stored as a blob in ATProto.",
"type": "blob"
},
"manifests": {
"description": "Referenced manifests (for manifest lists/indexes)",
"items": {
"ref": "#manifestReference",
"type": "ref"
},
"type": "array"
},
"mediaType": {
"description": "OCI media type",
"knownValues": [
"application/vnd.oci.image.manifest.v1+json",
"application/vnd.docker.distribution.manifest.v2+json",
"application/vnd.oci.image.index.v1+json",
"application/vnd.docker.distribution.manifest.list.v2+json"
],
"maxLength": 128,
"type": "string"
},
"repository": {
"description": "Repository name (e.g., 'myapp'). Scoped to user's DID.",
"maxLength": 255,
"type": "string"
},
"schemaVersion": {
"description": "OCI schema version (typically 2)",
"type": "integer"
},
"subject": {
"description": "Optional reference to another manifest (for attestations, signatures)",
"ref": "#blobReference",
"type": "ref"
}
},
"required": [
"repository",
"digest",
"mediaType",
"schemaVersion",
"createdAt"
],
"type": "object"
},
"type": "record"
},
"manifestReference": {
"description": "Reference to a manifest in a manifest list/index",
"properties": {
"annotations": {
"description": "Optional OCI annotation metadata. Map of string keys to string values.",
"type": "unknown"
},
"digest": {
"description": "Content digest (e.g., 'sha256:...')",
"maxLength": 128,
"type": "string"
},
"mediaType": {
"description": "Media type of the referenced manifest",
"maxLength": 128,
"type": "string"
},
"platform": {
"description": "Platform information for this manifest",
"ref": "#platform",
"type": "ref"
},
"size": {
"description": "Size in bytes",
"type": "integer"
}
},
"required": [
"mediaType",
"size",
"digest"
],
"type": "object"
},
"platform": {
"description": "Platform information describing OS and architecture",
"properties": {
"architecture": {
"description": "CPU architecture (e.g., 'amd64', 'arm64', 'arm')",
"maxLength": 32,
"type": "string"
},
"os": {
"description": "Operating system (e.g., 'linux', 'windows', 'darwin')",
"maxLength": 32,
"type": "string"
},
"osFeatures": {
"description": "Optional OS features",
"items": {
"maxLength": 64,
"type": "string"
},
"type": "array"
},
"osVersion": {
"description": "Optional OS version",
"maxLength": 64,
"type": "string"
},
"variant": {
"description": "Optional CPU variant (e.g., 'v7' for ARM)",
"maxLength": 32,
"type": "string"
}
},
"required": [
"architecture",
"os"
],
"type": "object"
}
},
"id": "io.atcr.manifest",
"lexicon": 1
}
Metadata
- DID
-
did:web:lexicon.atcr.io - CID
-
bafyreibqqkjhn4r5nxh3jpsrtkifjfcz3xqpde52hvmjnuzse6h4xogs6q - Indexed At
- 2026-09-06 01:26 UTC
- AT-URI
-
at://did:web:lexicon.atcr.io/com.atproto.lexicon.schema/io.atcr.manifest
Similar Lexicons
Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
io.atcr.hold.layer record
Represents metadata about a container layer stored in the hold. Stored in the hold's embedded PDS for tracking and analytics.
-
io.atcr.tag record
A named tag pointing to a specific manifest digest
-
io.atcr.hold.notifyManifest procedure
Notify hold about a manifest push or pull operation. For pushes: creates layer records and optionally posts to Bluesky. For pulls: just increments stats. Always increments pull/push counts.