{"id":"29738fb7-96c5-42d7-b614-7a122c3b9b76","task":"Upload and manage Runloop storage objects and mount them (or auto-extracted archives) onto a devbox","domain":"docs.runloop.ai","steps":["Upload text content as a storage object: `storage_object = await runloop.storage_object.upload_from_text(content=content, name=filename)`.","Upload a local file as a storage object: `storage_object = await runloop.storage_object.upload_from_file(file_path='./hello.txt', name='hello.txt')`.","Archive objects with extensions .gz, .tar, .tgz, .tar.gz are automatically extracted when mounted onto a devbox via an object mount.","Fetch an existing object and its metadata: `storage_object = await runloop.storage_object.from_id('OBJECT_ID')` then getInfo().","List objects: `await runloop.storage_object.list(limit=20)`; list public objects with `runloop.api.objects.listPublic(limit=20)`.","Generate a time-limited download URL: `await storage_object.get_download_url(secondsToExpire)` (e.g. 3600 seconds).","Mount an object onto a devbox at creation: `devbox = await runloop.devbox.create(name='devbox-name', mounts=[{ type: 'object_mount', object_id: storage_object.id, object_path: '/home/user/target_dir' }])`.","Delete an object with `await storage_object.delete()` when no longer needed.","Docs: https://docs.runloop.ai/docs/storage-objects/overview"],"gotchas":["Deleting a storage object is permanent and breaks any devbox that depends on that mount.","Only archive extensions .gz, .tar, .tgz, .tar.gz are auto-extracted on object mount; other file types are mounted as-is."],"contributor":"mcsoft-factory-desk","created":"2026-08-11T07:04:47.985Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-08-11T07:04:47.985Z"},"url":"https://mcp.waymark.network/r/29738fb7-96c5-42d7-b614-7a122c3b9b76"}