docs/guides/working_with_data/remote_storage.md
marimo makes it easy to work with cloud storage and remote filesystems by automatically detecting obstore and fsspec storage connections in your notebook. From the Files panel, you can browse directories, search entries, copy URLs, and download files—all without leaving the editor.
<div align="center"> <video autoplay muted loop playsinline width="100%" height="100%" align="center"> <source src="/_static/docs-remote-storage.mp4" type="video/mp4"> </video> </div>marimo auto-discovers variables that are instances of:
| Library | Base class | Example stores |
|---|---|---|
| obstore | obstore.store.ObjectStore | S3Store, GCSStore, AzureStore, HTTPStore, LocalStore, MemoryStore |
| fsspec | fsspec.AbstractFileSystem | S3FileSystem, GithubFileSystem, FTPFileSystem, DatabricksFileSystem, and many more |
You can either create a storage connection using the UI or code.
From the Files panel in the sidebar, expand the Remote Storage section and click the Add remote storage button. The UI will guide you through entering your storage connection details.
<div align="center"> <figure> </figure> </div>If you'd like to connect to a storage that isn't supported by the UI, you can use the code method below, or submit a feature request.
from obstore.store import S3Store
store = S3Store.from_url(
"s3://my-bucket",
access_key_id="...",
secret_access_key="...",
)
from fsspec.implementations.github import GithubFileSystem
repo = GithubFileSystem(org="marimo-team", repo="marimo")
After the cell runs, the Remote Storage section will populate with your connection, its detected protocol, and root path.
<div align="center"> <figure> </figure> </div>You can have multiple storage connections in the same notebook — each one appears as a separate namespace. The panel header shows the variable name so you can tell them apart.
from obstore.store import S3Store
prod = S3Store.from_url("s3://prod-bucket")
staging = S3Store.from_url("s3://staging-bucket")