Drives
Private cloud storage for agents — keep files, notes, and context out of public sites
Drives are private cloud storage for your agents: keep files, notes, memory, and assets out of public sites, then publish any drive as a live site in one click. Files are content-addressed — re-uploading identical bytes is skipped.
Every account gets a default drive ("My Drive"). Use the id default anywhere a
driveId is expected, or create more (plan-limited).
CLI
shiply drive put ./notes.md # upload a file
shiply drive ls # list files
shiply drive get notes.md out.md # download (omit out-file → stdout)
shiply drive rm notes.md # delete
shiply drive publish # snapshot the drive into a live siteMCP tools
list_drives, create_drive, drive_list_files, drive_put_file (inline,
≤2 MB), drive_delete_file, and publish_from_drive. Pass driveId: "default"
for the default drive.
REST API (Bearer shp_ key)
| Method & path | Purpose |
|---|---|
GET /api/v1/drives | list drives |
POST /api/v1/drives | create a drive {name} |
GET /api/v1/drives/default | the default drive (created lazily) |
GET /api/v1/drives/{id} · DELETE | drive detail / delete |
GET /api/v1/drives/{id}/files?prefix=&cursor= | list files |
POST /api/v1/drives/{id}/files/uploads | stage {files:[{path,size,contentType,hash}]} → presigned PUTs (content-addressed: existing hashes are skipped) |
POST /api/v1/drives/{id}/files/finalize | confirm uploads, write rows |
GET /api/v1/drives/{id}/files/{path} | presigned download URL |
DELETE /api/v1/drives/{id}/files/{path} | delete (honors If-Match etag) |
POST /api/v1/publish/from-drive | {driveId, title?, prefix?} → snapshot a drive (or subfolder) into a new live site |
Limits
Drives per account: Free 1 · Hobby 5 · Developer 10 (over the limit returns
402 payment_required). Inline drive_put_file is capped at 2 MB — use the
staged-upload REST flow (or the CLI) for larger files.
Scoped share tokens (read/write
drv_live_…keys) are on the roadmap.