Local asset management
This page covers the local asset daemon, OCI artifact builds, package inventory, tagging, and cleanup. The released lab executable contains the complete local store; Docker is not required.
List and inspect
Use an independent directory to try the commands. --cache-dir selects the same resource store, containing content-addressed blobs and local catalog metadata.
list shows admitted packages, versions, references, and logical package sizes. Shared blobs do not occupy disk space twice. inspect additionally verifies the cached package. Without a directory override, the resource store lives in the current user's platform persistent state directory.
The inventory does not automatically import the previous CLI download cache. Pull assets again or import an existing OCI layout on first use; old-format references are not an implicit source for the new catalog.
Reuse one store through LAB_ASSET_CACHE; the explicit option wins for a one-off directory:
lab daemon start keeps the content-addressed store available across CLI
processes. lab daemon status --json checks its loopback endpoint and lab daemon stop shuts it down. Commands fall back to direct local access if the
daemon is not running. An unresponsive daemon is an error. Shutdown drains
accepted operations, and diagnostics are stored in daemon.log. The installer
does not register a boot service.
Build and split
Build a directory into the local OCI artifact store and assign a tag in one step:
For an OpenUSD scene, extract explicit component prims into child asset directories. The children carry a parent digest and must be validated and built independently:
lab split requires the OpenUSD Python runtime, resolves exact prim
paths and relationship targets, copies/rebases texture dependencies, and publishes
all children together. A failure leaves the output absent. Children record parent
digest lineage and clear inherited runtime declarations. Names use lowercase
letters, digits and interior hyphens. All dependencies must be inside the source
asset. The parent preview and thumbnail are inherited; replace them before
publishing a component-specific preview. Semantic components are explicitly mapped.
Import and tag
Import an existing OCI layout directly. A tag is a local reference and does not upload the package to that address:
Create ./layout with lab pack. You can also use a complete sha256:... digest as the source selector for a cached package. Retagging changes that local reference; an existing instance retains its creation-time digest.
Remove and reclaim
Removing a reference does not immediately delete package bytes. prune --dry-run lists reclaimable packages, blobs, and actual byte counts. Once you have confirmed that this isolated store contains no needed unreferenced content, run:
Pruning handles unreferenced, unoccupied packages and preserves shared blobs used by other packages. Digest-based removal also checks occupation. Retained runtime instances must be removed first; stopping an instance does not release its package.