Manifest file support#

The manifest layer overlays read-only files from other resource identities onto a workspace folder. A workspace is a folder whose name ends with .wkspc. Its optional .manifest file defines the overlay; paths not listed in the manifest continue to use the corresponding object in the workspace folder. The manifest file itself remains a regular backend object that can be read, written, or deleted through the Storage API.

The manifest layer is enabled with config.manifest.enabled. When config.manifest.errorOnNonManifestObjects is true, requests for objects outside a workspace are rejected instead of being passed through to the storage backend. The following settings are located under the config.manifest object:

config.manifest.enabled
Required:

yes

Type:

boolean

Default:

false

Enables manifest file support.

config.manifest.l2Enabled
Required:

no

Type:

boolean

Default:

false

Enables the optional Redis/Valkey L2 tier for the manifest cache. Requires the Redis client to be enabled.

config.manifest.errorOnNonManifestObjects
Required:

no

Type:

boolean

Default:

false

Rejects requests for objects outside a workspace when true; when false, those requests pass through to the storage backend.

config.manifest.cacheCapacity
Required:

no

Type:

size

Default:

1GiB

Maximum memory used by the manifest cache before eviction. This value is included when calculating the container memory limit as described in Scalability.

config.manifest.cacheTimeToLive
Required:

no

Type:

duration

Default:

24h

Maximum time a manifest remains in the cache.

config.manifest.cacheCapacityWarnPct
Required:

no

Type:

integer

Default:

95

Cache utilization percentage at which the service logs a warning. Must be an integer from 0 to 100.

config.manifest.pageSizeLimit
Required:

no

Type:

size

Default:

3MiB

Maximum response size before the service begins a new streamed response page.

For example, the following configuration enables the manifest layer and its shared Redis/Valkey cache tier:

config:
  redis:
    enabled: true
    address: "redis://valkey.infra.svc.cluster.local:6379"
  manifest:
    enabled: true
    l2Enabled: true

Manifest file format#

A JSON manifest must be located at <backend-base>/<workspace>.wkspc/.manifest for the overlay to be active. The file uses format version 1.0 and contains one entry for every overlaid file. Each entry specifies a workspace-relative path and exactly one target: either resource_identity or resource_info. A resource identity is obtained from the target object’s Stat response.

{
  "format_version": {
    "version_string": "1.0"
  },
  "storage_api_version": "v1beta",
  "files": [
    {
      "relative_path": "pkg/example.usd",
      "resource_identity": "https://store.example/objects/example.usd?etag=%22abc%22"
    }
  ]
}

relative_path must be a unique, non-empty relative path. It cannot start with /, contain . or .. path segments, contain a .wkspc segment, or be named .manifest. A malformed manifest disables access to the overlay paths until the manifest is corrected; the .manifest file itself remains available for repair.