Skip to main content
Use nullspace sandbox file ... for file operations inside a running sandbox. Use nullspace sandbox upload ... for local file and directory transfers.

Read And Write

nullspace sandbox file read sb_123 /workspace/app.py
nullspace sandbox file read sb_123 /workspace/archive.bin --encoding base64 --json
printf "hello\n" | nullspace sandbox file write sb_123 /workspace/hello.txt
printf 'Zm9vCg==' | nullspace sandbox file write sb_123 /workspace/foo.txt --encoding base64
Batch write small in-memory files with JSON or @file.json:
nullspace sandbox file write-files sb_123 '[["/workspace/a.txt","a\n"],["/workspace/b.txt","b\n"]]'
nullspace sandbox file write-files sb_123 @files.json
Most sandbox file commands accept --user when the path should be resolved as a specific sandbox user.

List And Inspect

nullspace sandbox file list sb_123 /workspace --depth 1 --json
nullspace sandbox file exists sb_123 /workspace/hello.txt
nullspace sandbox file info sb_123 /workspace/hello.txt
exists exits with status 0 when the path exists and 1 when it does not, so it works naturally in shell scripts.

Move, Permissions, And Delete

nullspace sandbox file mkdir sb_123 /workspace/archive
nullspace sandbox file mv sb_123 /workspace/hello.txt /workspace/archive/hello.txt
nullspace sandbox file chmod sb_123 /workspace/archive/hello.txt 0644
nullspace sandbox file rm sb_123 /workspace/archive/hello.txt

Upload Local Files

nullspace sandbox upload sb_123 ./dist/app.tar.gz /workspace/app.tar.gz
nullspace sandbox upload sb_123 ./src /workspace/src --exclude '*.pyc'
nullspace sandbox upload sb_123 - /tmp/stdin.bin
Large files can use resumable transfer, checksums, and concurrent parts:
nullspace sandbox upload sb_123 ./large.bin /data/large.bin \
  --resumable always \
  --checksum auto \
  --concurrency 4
If an upload fails after creating a resumable session, retry with the reported upload ID:
nullspace sandbox upload sb_123 ./large.bin /data/large.bin --resume upload_123
Directory uploads support conflict policies and dry runs:
nullspace sandbox upload sb_123 ./src /workspace/src --conflict merge --dry-run

Signed URLs

nullspace sandbox file upload-url sb_123 /workspace/input.bin
nullspace sandbox file download-url sb_123 /workspace/result.tar.gz
Use signed URLs when a browser, CI job, or another service should transfer bytes directly instead of proxying through your local CLI process.

Search, Replace, And Watch

nullspace sandbox file find sb_123 /workspace "TODO"
nullspace sandbox file search sb_123 /workspace "*.py"
nullspace sandbox file replace sb_123 old_name new_name /workspace/app.py /workspace/lib.py
nullspace sandbox file watch sb_123 /workspace --recursive --timeout 30
find searches file contents. search matches file names. watch streams file events as JSON lines until interrupted or until --timeout expires.