ワンクリックで
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