Remote Storage¶
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.
Experimental
Remote storage is an experimental feature. Enable it in Settings > Experimental > Storage Inspector.
Supported libraries¶
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 |
Quick start¶
Create a storage connection in any cell. marimo will pick it up automatically after the cell executes.
Obstore¶
from obstore.store import S3Store
store = S3Store.from_url(
"s3://my-bucket",
access_key_id="...",
secret_access_key="...",
)
fsspec¶
from fsspec.implementations.github import GithubFileSystem
repo = GithubFileSystem(org="marimo-team", repo="marimo")
After the cell runs, the Remote Storage section in the Files sidebar panel will show your connection with its detected protocol and root path.
Using the panel¶
The storage inspector appears as a collapsible Remote storage section at the top of the Files sidebar panel.
| Action | How |
|---|---|
| Browse | Click a directory to expand it. Entries are fetched lazily. |
| Search | Type in the search box to filter loaded entries by name. Expand directories first to include their contents. |
| Copy URL | Right-click or use the ⋮ menu on any entry to copy its full URL (e.g., s3://bucket/path/to/file.parquet). |
| Download | Use the ⋮ menu on a file to download it through the marimo server. |
| Refresh | Click the refresh icon on a namespace header to re-fetch its entries. |
Multiple connections¶
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.