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

# Mounts Overview

> Mount code repositories, files, objects, and agents to your Devboxes

<Tip>Start with the [Runloop Quickstart](/docs/tutorials/quickstart) to use the examples below.</Tip>

## Overview

Mounts allow you to attach external resources to your Devbox at creation time. This provides a flexible way to inject code, files, data, and AI agents into your Devbox environment without manually uploading or cloning after the Devbox starts.

All mount types use the unified `mounts` parameter when creating a Devbox, with a `type` discriminator to specify the mount type.

## Mount Types

Runloop supports four types of mounts:

| Mount Type                                          | Description                     | Use Case                                |
| --------------------------------------------------- | ------------------------------- | --------------------------------------- |
| [Code Mount](/docs/devboxes/mounts/code-mounts)     | Clone a GitHub repository       | Working with existing codebases         |
| [Object Mount](/docs/devboxes/mounts/object-mounts) | Mount a storage object          | Large datasets, model weights, archives |
| [File Mount](/docs/devboxes/mounts/file-mounts)     | Inject file content inline      | Config files, scripts, small text files |
| [Agent Mount](/docs/devboxes/mounts/agent-mounts)   | Mount a pre-configured AI agent | Running AI agents on your Devbox        |

## Using the Unified Mounts Parameter

All mounts are specified using the `mounts` array parameter. Each mount object requires a `type` field to identify the mount type:

<CodeGroup>
  ```python Python theme={null}
  devbox = await runloop.devbox.create(
    mounts=[
      {
        "type": "code_mount",
        "repo_name": "my-repo",
        "repo_owner": "my-org",
      },
      {
        "type": "object_mount",
        "object_id": "obj_abc123",
        "object_path": "/home/user/data.csv"
      },
      {
        "type": "file_mount",
        "target": "/home/user/config.json",
        "content": '{"key": "value"}'
      },
      {
        "type": "agent_mount",
        "agent_name": "my-agent",
        "agent_path": "/home/user/agent"
      }
    ]
  )
  ```

  ```typescript TypeScript theme={null}
  const devbox = await runloop.devbox.create({
    mounts: [
      {
        type: "code_mount",
        repo_name: "my-repo",
        repo_owner: "my-org",
      },
      {
        type: "object_mount",
        object_id: "obj_abc123",
        object_path: "/home/user/data.csv"
      },
      {
        type: "file_mount",
        target: "/home/user/config.json",
        content: '{"key": "value"}'
      },
      {
        type: "agent_mount",
        agent_name: "my-agent",
        agent_path: "/home/user/agent"
      }
    ]
  });
  ```
</CodeGroup>

## Choosing the Right Mount Type

* **Code Mount**: Best for cloning Git repositories. Supports private repos with authentication tokens.
* **Object Mount**: Best for large files, binary data, datasets, or archives. Objects are stored in Runloop's storage and can be reused across Devboxes.
* **File Mount**: Best for small text files like configuration, scripts, or environment files. Content is provided inline.
* **Agent Mount**: Best for mounting pre-configured AI agents that can be run on your Devbox.

## Next Steps

* [Mount a code repository](/docs/devboxes/mounts/code-mounts)
* [Mount storage objects](/docs/devboxes/mounts/object-mounts)
* [Mount files inline](/docs/devboxes/mounts/file-mounts)
* [Mount AI agents](/docs/devboxes/mounts/agent-mounts)
