Skip to main content
Every Lyceum account gets a dedicated S3-compatible bucket. It’s the right place for anything that needs to outlive a single run or VM: input datasets, trained model weights, intermediate artefacts, results.

Why use it instead of…

  • …Secrets, Secrets are short string values (tokens, URLs). Storage is for files of any size.
  • …A VM disk, VM disks are wiped on termination. The storage bucket persists across every VM and run on your account.
  • …Re-uploading on every run, A run that reads from the bucket starts immediately; one that uploads inputs to itself pays for the upload time on every invocation.

Access patterns

There are two ways to interact with the bucket:
  1. Through the Lyceum REST API, simple, single-file uploads/downloads, easy curl commands.
  2. Direct S3 with temporary credentials, fetch short-lived MinIO/S3 credentials from POST /storage/credentials and use any standard S3 client (boto3, aws-cli, mc, …). This is the right path for large files, parallel transfers, multipart uploads, and anything that benefits from a real S3 client library.
The temporary credentials returned by /storage/credentials are STS-style: an access key, secret key, session token, the bucket name, and the endpoint. They expire automatically, request fresh ones whenever you need them.

CLI

--key controls the destination key inside the bucket; without it the file is uploaded under its local name.

REST API

Direct S3 access

POST /storage/credentials returns a StorageCredentials object with these fields:
The same client works for download_file, list_objects_v2, multipart uploads, presigned URLs, and any other S3 operation.

Mounting storage inside runs

How your bucket is exposed depends on the execution type: For Docker runs, files in /mnt/s3 map directly to objects in your bucket, reading a file fetches the object, writing creates or replaces it.