Skip to main content
Upstash Documentation

Filesystem

2 min read

Every box has its own isolated filesystem. Upload, write, read, list, and download files inside the box.


API#

Upload files#

Push local files into the box. Each entry maps a local path to a destination inside the box workspace.

You can upload multiple files in a single call. All uploads run in parallel.


Write files#

Create or overwrite a file directly from a string. Useful when you want to inject configuration, scripts, or generated content without a local file.


Read files#

Read the contents of a file as a string.


Read part of a file#

Pass length to read a bounded byte range instead of the whole file, starting at offset (default 0). This keeps a large log or dataset out of memory when you only need a slice of it. The server rejects a length above 8 MiB.


Inspect a path#

Get metadata for a single path without reading it: the entry type, size, last modified time, inode, and an opaque version token.

Use version for optimistic concurrency. Read it before a slow operation, then compare it afterwards to detect whether the file changed underneath you. Compare it for equality only, and do not parse it.

By default a symlink is reported as "symlink". Pass follow to resolve it and describe the target instead.


Create directories#

Create a directory. Pass parents to create missing parent directories, the way mkdir -p does, and to succeed when the directory already exists.


Move and rename#

Move a path to a new location, which is also how you rename it.


Delete files#

Remove a file. Removing a directory requires recursive, so a directory is never deleted by accident.


List files#

List the entries in a directory. Each entry includes the path, size, type, and last modified timestamp.


Download files#

Pull files from the box back to your local machine. Call with no arguments to download the entire workspace, or pass a folder to download a specific file or directory.


Examples#

Feed data to an agent#

Upload input files, run the agent, then read back the structured result.

Inject config before a run#

Write environment-specific configuration into the box, then let the agent use it.

Collect outputs from parallel boxes#

Fan out work across multiple boxes, then download each result locally.