Bytes, or a pointer to them
Not everything should be uploaded. Probe records three postures, and never silently converts one into another.Upload (default)
Upload (default)
The bytes go to object storage, content-addressed and deduplicated by SHA-256 across runs.
Reference a local path
Reference a local path
file://) instead of its bytes — for large files on a shared volume the reader can resolve locally. --hash reads the whole file to fingerprint it, which enables dedup. --allow-missing records a reference even if the path is not visible from this host.Reference an object you already store
Reference an object you already store
Bulk import
--reference-over records anything at or over that size as a reference instead of uploading it.
Naming
--name is the file’s relative path, defaulting to its basename. Paths are what give the explorer its folder structure, so pass a real one for captured trees:
The file’s extension is kept whatever you pass. Say what the file is with
--notes, not by renaming it — a .json renamed to .ckpt is a file nothing can open.Versions
">=2.0" is rejected rather than silently matching nothing.
Listing and fetching
tree returns one folder level: the files at that path, plus each child folder with its file count. That is what the dashboard explorer fetches when you expand a folder, so a run with thousands of captured files costs one small answer per folder rather than one enormous answer per run.
The team’s Shared folder
One per team, distinct from workspaces, and it never holds projects or experiments. Every member sees everything in it.--replace supersedes the prior shared file atomically.
Shared is also the level artifact reuse resolves against — when an agent asks “is there already an official tokenizer for this”, it is asking Shared.
Housekeeping
gc-uploads only touches abandoned, never-confirmed uploads. Confirmed artifacts are untouched.