원클릭으로
ovstorage-user-materialize
Use when an object is large, needs random access, or must be handed to a tool as a stable local path.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use when an object is large, needs random access, or must be handed to a tool as a stable local path.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Deploy and develop against NVIDIA Omniverse Storage APIs on any Kubernetes cluster (MicroK8s, EKS, AKS, GKE, bare metal). Two storage adapters: (1) Example Storage Adapter — Python filesystem reference implementation + Discovery for learning and custom adapter development; (2) S3/Azure Production Storage Adapter — NVIDIA pre-built S3/Azure adapter + Discovery as minimum, expandable with Event Aggregation, Event Consumer, RabbitMQ, Envoy Auth Extension, Storage Navigator, and Contour ingress. Can deploy on the developer's behalf (generating scripts + .env) or guide manual deployment. Custom adapter development covers three APIs: Storage, Notifications, and Permissions. Use when a developer asks about deploying, configuring, validating, troubleshooting, or building any component of the Omniverse Storage APIs stack.
Use when adding or reviewing an authz plugin for ovstorage-broker or ovstorage-rest - covers the AuthzPlugin trait, the 21 operations, the policy-epoch model, and the cdylib cancellation contract.
Use when adding or reviewing a storage backend plugin for ovstorage.
Use when Rust changes affect ovstorage C or C++ headers and checked-in generated headers must be refreshed.
Use when starting an ovstorage-broker locally for development or integration testing - covers a minimal TOML, the cdylib plugin path, and how to hit the listener with broker-client or curl.
Use when checking the Storage API wire contract that ovstorage-plugin-services-client depends on.
| name | ovstorage-user-materialize |
| description | Use when an object is large, needs random access, or must be handed to a tool as a stable local path. |
| license | CC-BY-4.0 |
| version | 0.1.0 |
| author | NVIDIA Omniverse |
| tags | ["ovstorage","materialize","files"] |
| tools | ["Read"] |
| compatibility | Requires ovstorage MCP tools or equivalent library calls and a writable local cache/materialization path. |
Goal: Get a stable on-disk path for an object so you can mmap it, seek through it, hand it to a subprocess that takes a path, or read it many times without re-downloading.
When to use this: The object is large, you need random access, or
a tool you're driving (ffmpeg, usdcat, ML data loaders) wants a
filesystem path rather than a byte stream. Also when you'll read the
same object multiple times — materialize fetches once, pins, reuses.
For one-shot byte reads of small objects, use ovstorage-user-read-bytes instead.
{
"tool": "ovstorage_materialize",
"arguments": {
"address": "s3://my-bucket/datasets/imagenet.bin",
"ttl_seconds": 3600
}
}
ttl_seconds is optional (default 1800 = 30 min). Pick a value that
covers your work window with margin. No hard upper bound — if your
training step takes 4 hours, use ttl_seconds: 14400.
{
"v": "0.1",
"ok": true,
"operation": "ovstorage_materialize",
"result": {
"path": "/var/cache/ovstorage/cas/ab/abcdef1234.bin",
"info": {
"address": "s3://my-bucket/datasets/imagenet.bin",
"size": 4294967296,
"etag": "\"abc123\""
},
"expires_at_unix_seconds": 1718003600
}
}
Use the path directly. The file is pinned against eviction until
you release it or expires_at_unix_seconds is reached, whichever
comes first.
Working window — do your work using path.
The file stays on disk and won't be evicted.
Refresh — extend the TTL.
Call ovstorage_materialize again with the same address. The
server resets the timer to a fresh window and returns the same
path with a later expires_at_unix_seconds.
Release — when you're done.
{
"tool": "ovstorage_release",
"arguments": {
"path": "/var/cache/ovstorage/cas/ab/abcdef1234.bin"
}
}
Response:
{
"v": "0.1",
"ok": true,
"result": {"released": true, "was_active": true}
}
was_active: false means the lease wasn't held (already released, or
the TTL expired before you got to it). Release is idempotent —
calling it twice or on a never-materialized path is harmless.
The path you got back is the handle. You don't need to store an
opaque lease ID; just remember the path. Other ovstorage tools that
take a path (release) and the file itself both use the same string.
error.code | Likely cause | What to do |
|---|---|---|
NotFound | Address doesn't exist | Confirm with ovstorage_stat |
NotConfigured | No cache configured for this non-local backend | Local-file addresses materialize without a cache; remote backends need a cache configured on the host. See next_action. |
Unsupported | Backend has no local-materializable form | Use ovstorage_read with max_bytes instead. Some streaming-only backends can't pin a file. |
InvalidArgument | ttl_seconds: 0 | Pass a positive number, or omit for the 1800s default |
Transient | Backend hiccup during fetch | retryable: true |
expires_at_unix_seconds without refreshing. The file may be evicted out from under you. Either refresh proactively or release explicitly when done.ovstorage_materialize are valid; releasing other paths returns was_active: false but does nothing useful.docs/public/agent/mcp-tools.md — full materialize/release reference