> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wherobots.com/llms.txt
> Use this file to discover all available pages before exploring further.

# File Explorer

> Upload, browse and manage your notebooks and scripts in My Files from the Files page, JupyterLab and the Wherobots CLI.

**File Explorer** lets you upload, browse and manage your notebooks and scripts in the **Wherobots Cloud** console. You can reach your files from the **Files** page, from JupyterLab, and from the Wherobots CLI.

<Note>
  Each user gets their own My Files location in every region they work in.
</Note>

<Frame caption="The Files page with My Files in AWS US West (Oregon)">
  <img src="https://mintcdn.com/wherobots/5GuhNrfMDuE_0Pr3/images/develop/storage-management/file-explorer/files-tree.jpg?fit=max&auto=format&n=5GuhNrfMDuE_0Pr3&q=85&s=345f0f9086d8e01ee6ef6cb7bcfe17b5" alt="Files page with My Files expanded in AWS US West (Oregon)" width="1184" height="763" data-path="images/develop/storage-management/file-explorer/files-tree.jpg" />
</Frame>

## Before you start

<Tabs>
  <Tab title="Files page">
    * A **Wherobots Account**. See [Create a Wherobots Account](/get-started/wherobots-cloud/create-account).
  </Tab>

  <Tab title="CLI">
    * The **Wherobots CLI**, version 1.3.0 or later. See [Install Wherobots CLI](/develop/cli). Check your version with `wherobots --version`, and update with `wherobots upgrade`.
    * A signed-in CLI: run `wherobots auth login`, or set `WHEROBOTS_API_KEY`. See [Configure authentication](/develop/cli#configure-authentication).
  </Tab>
</Tabs>

## Choose a region

Each region has its own My Files. Choose the region before you work with files.

<Tabs>
  <Tab title="Files page">
    Go to the [**Files**](https://cloud.wherobots.com/files) page, expand the region, for example **AWS US West (Oregon)**, then expand **My Files** under it.
  </Tab>

  <Tab title="CLI">
    Pass `--region` after `my-files`:

    ```bash theme={"system"}
    wherobots files my-files --region aws-us-west-2 ls
    ```

    Without `--region`, the CLI uses your Organization's default region. If your Organization has none, the command fails with `your organization has no default region: pass --region <region>`.
  </Tab>
</Tabs>

## Work with files and folders

### List a folder

<Tabs>
  <Tab title="Files page">
    In the tree, expand **My Files** in your region, then expand the folder you want to see.
  </Tab>

  <Tab title="CLI">
    ```bash theme={"system"}
    wherobots files my-files ls
    wherobots files my-files ls projects/2026 --output json
    ```

    The default output is a table with the columns `TYPE`, `SIZE`, `MODIFIED` and `NAME`. An empty folder prints `No files or folders.`, and so does a folder that does not exist, so check the spelling if you expect files. Use `--output json` in scripts.
  </Tab>
</Tabs>

### Create a folder

<Tabs>
  <Tab title="Files page">
    1. Select the **Actions** menu (the vertical dots) next to **My Files** or a folder.
    2. Select **New Folder**, enter a **Folder Name**, and click **Create**.

    <Frame caption="The folder menu">
      <img src="https://mintcdn.com/wherobots/5GuhNrfMDuE_0Pr3/images/develop/storage-management/file-explorer/folder-menu.jpg?fit=max&auto=format&n=5GuhNrfMDuE_0Pr3&q=85&s=ff974811f299214d4a4f7a1857552598" alt="The folder Actions menu" width="1184" height="763" data-path="images/develop/storage-management/file-explorer/folder-menu.jpg" />
    </Frame>
  </Tab>

  <Tab title="CLI">
    `mkdir` creates the folder and any missing parent folders, and prints `Created folder projects/2026/q3`:

    ```bash theme={"system"}
    wherobots files my-files mkdir projects/2026/q3
    ```
  </Tab>
</Tabs>

### Upload files

Each file can be up to 500 MiB.

<Tabs>
  <Tab title="Files page">
    1. Select the **Actions** menu next to **My Files** or the destination folder.
    2. Select **Upload Files** and choose one or more files.
    3. Click **Upload**.

    If a file with the same name is already in the folder, the dialog warns that it "already exists here and will be replaced by the upload". Select **Replace the existing file** to continue.
  </Tab>

  <Tab title="CLI">
    Give the local file, then the path in My Files. When the path ends in `/`, the file keeps its local name:

    ```bash theme={"system"}
    wherobots files my-files upload ./report.csv projects/report.csv
    wherobots files my-files upload ./report.csv projects/
    ```

    The command prints `Uploaded ./report.csv to ...`. If a file with the same name is already there, the CLI replaces it without asking.

    The CLI uploads one file per command. To upload many, create the folder first, then loop over the files with modest parallelism. The API can answer HTTP 429 `Rate exceeded`, and the CLI does not retry for you, so retry failed files.
  </Tab>
</Tabs>

### Download a file

<Tabs>
  <Tab title="Files page">
    Select the file in the tree, then click the **Download** icon in the details panel, or select **Download** from the file's **Actions** menu.

    <Frame caption="The file menu">
      <img src="https://mintcdn.com/wherobots/5GuhNrfMDuE_0Pr3/images/develop/storage-management/file-explorer/file-menu.jpg?fit=max&auto=format&n=5GuhNrfMDuE_0Pr3&q=85&s=16e17be027b907ffa9bc20347fa984cd" alt="The file Actions menu" width="1184" height="763" data-path="images/develop/storage-management/file-explorer/file-menu.jpg" />
    </Frame>
  </Tab>

  <Tab title="CLI">
    Without a local path, the file is saved under its own name in the current folder. When the local path is an existing folder, the file is saved inside it:

    ```bash theme={"system"}
    wherobots files my-files download projects/report.csv
    wherobots files my-files download projects/report.csv ./backup/
    ```
  </Tab>
</Tabs>

### View a file

<Tabs>
  <Tab title="Files page">
    Select the file in the tree. The details panel shows a read-only preview for notebooks (`.ipynb`) and Python (`.py`) files up to 25 MiB. Larger files show **Too large to preview**, and other files show **No preview**.

    <Frame caption="A read-only notebook preview in the details panel">
      <img src="https://mintcdn.com/wherobots/5GuhNrfMDuE_0Pr3/images/develop/storage-management/file-explorer/files-detail-preview.jpg?fit=max&auto=format&n=5GuhNrfMDuE_0Pr3&q=85&s=a1c15867b9090e9420d7874e7613e945" alt="A notebook preview in the details panel" width="1184" height="763" data-path="images/develop/storage-management/file-explorer/files-detail-preview.jpg" />
    </Frame>
  </Tab>

  <Tab title="CLI">
    ```bash theme={"system"}
    wherobots files my-files cat projects/report.csv
    ```
  </Tab>
</Tabs>

### Rename a file

Renaming is not available on the Files page. Use the CLI, or rename the file in a notebook. In the CLI, `mv` renames a file within its folder:

```bash theme={"system"}
wherobots files my-files mv projects/report.csv report-final.csv
```

If a file with the new name is already in the folder, `mv` replaces it without asking.

The Files page and the CLI cannot move a file to another folder. Move it in a notebook, or download it, upload it to the new folder, then delete the original.

### Delete a file or folder

<Tabs>
  <Tab title="Files page">
    1. Select the **Actions** menu next to the file or folder, then select **Delete**.
    2. Type the name to confirm, and click **Delete**. Deleting a folder deletes everything inside it.
  </Tab>

  <Tab title="CLI">
    `rm` deletes a file. `rmdir` deletes an empty folder, and `--recursive` deletes a folder and everything in it:

    ```bash theme={"system"}
    wherobots files my-files rm projects/report-final.csv
    wherobots files my-files rmdir projects/2026/q3
    wherobots files my-files rmdir projects --recursive
    ```

    `rm` and `rmdir` print `Deleted ...` even when the path does not exist, so check the spelling of the path.
  </Tab>
</Tabs>

<Warning>
  Deleting cannot be undone. If a running notebook saved files in a folder during the last minute, files in a deleted folder can come back. Delete folders from the notebook, or wait about a minute after the last save.
</Warning>

## Open a file in a notebook

On the Files page, you can open a text file such as `.ipynb`, `.py`, `.sql`, `.md`, `.csv`, `.txt` or `.json` straight into a new notebook.

1. Select the file in the tree.
2. Click the **Open File** icon in the details panel, or select **Open File** from the file's **Actions** menu. The **Open in a Notebook** dialog names the region and the path where the notebook will find the file.
3. Choose the runtime and other options if you need to, then click **Open**. A new notebook starts in the file's region, in a new browser tab, and JupyterLab opens the file when it is ready.

<Frame caption="Open in a Notebook">
  <img src="https://mintcdn.com/wherobots/5GuhNrfMDuE_0Pr3/images/develop/storage-management/file-explorer/open-in-notebook-dialog.jpg?fit=max&auto=format&n=5GuhNrfMDuE_0Pr3&q=85&s=22892622d5ff64584eab3895a16873e4" alt="The Open in a Notebook dialog" width="1184" height="763" data-path="images/develop/storage-management/file-explorer/open-in-notebook-dialog.jpg" />
</Frame>

If your browser blocks the new tab, click **Open workspace** in the message on the Files page.

## Save your work in My Files

In JupyterLab, My Files is the **MY FILES** panel. In a notebook terminal, it is `/home/wherobots/workspace/my-files`. Files in **MY FILES** are kept across session restarts. Any other folder in the notebook's file system is deleted when the session restarts.

If your notebook still opens in your home folder, your home folder is kept too. See [If you used notebooks before My Files](#if-you-used-notebooks-before-my-files).

Example notebooks in the **EXAMPLES** panel are read-only. To change one, right-click it and choose **Copy to My Files**. See [Find your files](/develop/notebook-management/jupyter-notebook-management#find-your-files).

## How long changes take

Saving in a notebook is complete when Jupyter shows it as saved.

| Change | Where it appears | When |
| - | - | - |
| Save, create or rename in a notebook | Your notebooks in the same region | Immediately. When Jupyter shows a file as saved, it is stored and kept, even if your session restarts. |
| Upload or delete on the Files page, or upload, rename or delete with the CLI | Files page and CLI | The CLI shows the change immediately. On the Files page, your own changes show within a few seconds; changes made elsewhere appear when an open folder next refreshes itself, or when you click the **Refresh** icon. A collapsed folder shows them when you open it. |
| Save, create or rename in a notebook | Files page and CLI | About a minute after the file's last change |
| Delete in a notebook | Files page and CLI | About a minute after the delete |
| Upload in the Files page or the CLI | Notebook | Within a few seconds. |
| Delete in the Files page or the CLI | Notebook | Within a few seconds. When you delete many files at once, some can take up to about a minute. A deleted folder's files disappear, but the empty folder stays in a running notebook. |

## Use the CLI in scripts and agents

### Paths

The CLI takes paths relative to the root of My Files.

* A leading `/` is ignored: `/projects/report.csv` and `projects/report.csv` are the same file.
* A trailing `/` names a folder.
* Empty levels (`projects//report.csv`), `.` and `..` are refused before any request is sent.
* To see the requests a command would send without sending them, add `--dry-run`. The CLI prints each request as a `curl` command. Without `--region`, one request is still sent to look up your Organization's default region.

### Wait for a notebook's changes

In a script, check the file's `lastModified` time instead of waiting a fixed time. If the file already exists, the CLI lists the previous version until the change arrives, so wait for the time to change. A listed name alone does not mean the new version has arrived. This example uses [jq](https://jqlang.org):

```bash theme={"system"}
set -o pipefail

# Prints the file's lastModified time. Fails if the listing fails or the file is not listed yet.
modified() {
  wherobots files my-files ls projects --output json \
    | jq -er '.[] | select(.name == "analysis.ipynb") | .lastModified'
}

# Run this before you save in the notebook
before=$(modified) || before=""

# After you save, wait until the stored copy has the new version.
# A failed listing, for example HTTP 429, is retried instead of ending the wait.
until now=$(modified) && [ "$now" != "$before" ]; do
  sleep 10
done
```

### Agentic terminals

To have an agentic terminal manage My Files for you, see [Using the Wherobots CLI with Agentic Terminals](/develop/cli-agentic-usage).

## If you used notebooks before My Files

If you used Wherobots notebooks before My Files, your notebook opens in your home folder. Your home folder keeps working as before, and My Files is already there, at `workspace/my-files`. Copy the files you want into My Files:

* **File browser:** right-click a file or folder and select **Copy**. Open `workspace/my-files`, right-click an empty area, and select **Paste**.
* **Terminal:** copy the folder's contents with `cp -r`. This works whether or not the folder already exists in My Files:

  ```bash theme={"system"}
  mkdir -p ~/workspace/my-files/projects
  cp -r ~/projects/. ~/workspace/my-files/projects/
  ```

The files appear on the [Files](https://cloud.wherobots.com/files) page about a minute after the copy finishes.

## Limitations

* **500 MiB per file** on the Files page and in the CLI.
* **Private to you.** Other members of your Organization cannot see your My Files.
* **Each region is separate.** A notebook can reach only the My Files of its own region. To work on a file from another region, use **Open File** on the Files page.
* **Meant for notebooks, code and small files.** For datasets, use [Managed Storage](/develop/storage-management/managed-storage) or an [S3 storage integration](/develop/storage-management/s3-storage-integration).

## Troubleshooting

<AccordionGroup>
  <Accordion title="no such file or folder: <path>" icon="circle-question">
    **Cause:** The path does not exist in My Files in this region, or a file saved in a notebook in the last minute is not shown yet.

    **Solution:** Check the path with `wherobots files my-files ls <folder>`, and pass `--region` if the file is in another region. For a notebook save, wait about a minute after the last change.
  </Accordion>

  <Accordion title="Files is not enabled for my-files in region <region>" icon="circle-question">
    **Cause:** My Files is not available to you in that region.

    **Solution:** Try another `--region`.
  </Accordion>

  <Accordion title="file is <N> MB, exceeding 500 MB limit" icon="circle-question">
    **Cause:** The file is larger than 500 MiB. The CLI message writes the limit as MB.

    **Solution:** Split the file, or store it in [Managed Storage](/develop/storage-management/managed-storage) or an [S3 storage integration](/develop/storage-management/s3-storage-integration).
  </Accordion>

  <Accordion title="HTTP 429 Rate exceeded" icon="circle-question">
    **Cause:** You sent too many requests in a short time, for example during a bulk upload.

    **Solution:** Wait, retry the failed files, and lower the number of parallel uploads. See [Upload files](#upload-files).
  </Accordion>

  <Accordion title="A file I saved in a notebook is not on the Files page" icon="circle-question">
    **Cause:** The file is saved. The Files page shows it about a minute after the file's last change.

    **Solution:** Wait about a minute after your last save. Open folders update on their own. If the folder is collapsed, expand it.
  </Accordion>

  <Accordion title="A folder I deleted came back" icon="circle-question">
    **Cause:** A running notebook saved files in the folder during the last minute, for example in `.ipynb_checkpoints`. The delete missed those files, and they were copied back.

    **Solution:** Delete folders from the notebook, or wait about a minute after the last save, then delete the folder again.
  </Accordion>
</AccordionGroup>

For sign-in errors, see [Troubleshooting](/develop/cli#troubleshooting) on the Wherobots CLI page.

## Next steps

<CardGroup cols={2}>
  <Card title="Jupyter Notebook Management" icon="book" href="/develop/notebook-management/jupyter-notebook-management">
    Find your files and run notebooks in JupyterLab.
  </Card>

  <Card title="Managed Storage" icon="database" href="/develop/storage-management/managed-storage">
    Store datasets for your Organization.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.