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

# Mounting Storage

Mounts let you expose host directories (datasets, notebooks, source code) to the GRID containers that run your sessions. This page assumes you have already added the remote node to `resource_config.json` as described in [Remote Nodes & Client Mode](./remote-nodes).

## Define Storage Mappings

Add a `storage` object to any node that should expose directories:

```json theme={null}
{
  "id": "lab-gpu-0",
  "ip": "10.40.0.10",
  "storage": {
    "datasets": "/opt/grid/datasets",
    "notebooks": "/opt/grid/notebooks",
    "code": "/home/robotics/projects"
  }
}
```

Each key becomes a mount name. GRID uses it to create two bind mounts inside the containers:

* `/workspace/<mount_name>` in the `grid_core` container
* `/mnt/<mount_name>` in the simulator container (for example `/mnt/datasets`)

The values must be absolute paths on the remote host. Ensure the GRID user has read (and when appropriate write) permissions to those directories.

## Apply Changes

1. Update `~/.grid/resource_config.json` on the CLI machine.
2. Restart the CLI (`grid`) so it reloads the configuration.
3. Re-run `init` on the target node. GRID rewrites the Docker Compose volumes each time it brings the stack up, so new mounts take effect on the next initialisation.

You can confirm the mapping with `docker inspect grid_core` on the remote host or by opening the notebook (`open nb @node`) and listing the `/workspace` directory.

## Tips & Good Practices

* Keep mount names short and descriptive (`datasets`, `logs`, `notebooks`).
* Use read-only mounts for immutable datasets by updating the Docker Compose file on the remote host if your security model requires it.
* Remove a mount by deleting the key from `storage`; the next `init` regenerates the configuration without it.

Once your storage is in place, your sessions can read and write content just as if the data lived locally on the node.
