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

# Mirrors

> Connect an existing GitHub repository to Entire with an Entire-backed Git remote.

[Entire 101 | Ep. 3: What is Mirroring a Repo Anyway?](https://www.youtube.com/embed/BkXpXdM5M7E)

## What Is a Mirror?

A mirror is a synchronized copy of your repository. The origin remains on GitHub, but the copy lives on Entire in one or more regional clusters of your choice. This allows you to offload heavy read traffic to Entire, enabling your agents to pull and clone faster.

Entire represents the GitHub repository as a single repository object. Each region you mirror into is a mirror placement, which connects that object to one Entire cluster. If you mirror the same repository in two regions, you have one repository object and two mirror placements, each with its own `entire://` URL.

## Why Use a Mirror

Mirroring is helpful when you or your agents need faster Git reads close to where they run.

It works well when:

* agents clone or fetch the same repository often, such as a large monorepo with high agentic traffic
* you want your agents to keep cloning and pulling during a GitHub outage
* you want a repository available in your home region or in multiple regions

## Before You Create a Mirror

The [Entire GitHub App must be able to access the repository](/guides/repositories/github-app-access) before you can create a mirror. After that, anyone with access to the GitHub repository can create a mirror from entire.io or with the Entire CLI.

You should choose regions based on where your agents run and where your organization allows code to live. Each region you select becomes a separate mirror placement.

If a repository has mirrors in more than one region, `entire repo clone` and `entire repo remote add` ask you to choose one. Without a terminal a GitHub mirror falls back to `aws-us-east-2.entire.io` and errors if it is not placed there, so pass `--cluster` in scripts, or `--nearest` to have `entire repo clone` pick the fastest.

## Create a Mirror

There are multiple ways to create a mirror, here’s how:

* To create a mirror from entire.io, read [Mirrors in entire.io](/guides/repositories/mirrors-in-entire-io).

* To create one from the terminal, head to [Mirrors in CLI](/guides/repositories/mirrors-in-cli).

* For a full walkthrough, see [Mirror a GitHub Repository](/learn/mirror-a-github-repository).

## What Changes

Creating a mirror gives you:

* a synced Entire copy of your GitHub repository
* an `entire://` remote for Git operations
* faster clone and fetch traffic for agents in that region
* an Entire access list that syncs from GitHub every hour

You can clone directly from the mirror or add it as another remote in an existing checkout.

## What Does Not Change

Creating a mirror does not:

* move, delete, or replace the GitHub repository
* require every developer to change remotes
* rewrite Git history
* bypass GitHub authentication or repository rules for pushes

Entire syncs GitHub collaborators into mirror access hourly. People with read access can clone and fetch, while people with write access can push. See [Mirror Access and Permissions](/guides/repositories/mirror-access-and-permissions) for more on access, self-onboarding, and offboarding.

## What Mirrors Do Not Do

### Git LFS

Mirrors do not currently support [Git LFS](https://git-lfs.com/).

If you clone a repository that uses LFS through an `entire://` remote, the checkout can fail because Git LFS tries to download files through Entire:

```text theme={null}
Error downloading object: ... batch request: ssh: Could not resolve hostname entire
error: external filter 'git-lfs filter-process' failed
fatal: <file>: smudge filter lfs failed
```

Use Entire for normal Git operations and GitHub for LFS downloads.
For a fresh clone, skip LFS downloads during checkout, point LFS at GitHub, and then pull the files:

```bash theme={null}
GIT_LFS_SKIP_SMUDGE=1 entire repo clone /gh/OWNER/REPO
cd REPO
git config lfs.url "https://github.com/OWNER/REPO.git/info/lfs"
git lfs pull
```

For an existing checkout, configure the URL and pull:

```bash theme={null}
git config lfs.url "https://github.com/OWNER/REPO.git/info/lfs"
git lfs pull
```

## Continue With

> **[GitHub App Access](/guides/repositories/github-app-access)**
>
> Choose which GitHub repositories Entire can access.

> **[Mirrors in entire.io](/guides/repositories/mirrors-in-entire-io)**
>
> Configure GitHub access and choose repositories from the web interface.

> **[Mirrors in CLI](/guides/repositories/mirrors-in-cli)**
>
> Create a mirror from the terminal and use it from Git.

> **[Mirror Access and Permissions](/guides/repositories/mirror-access-and-permissions)**
>
> Understand GitHub-synced access, hourly collaborator sync, and offboarding.

> **[Troubleshooting](/guides/repositories/troubleshooting)**
>
> Fix mirror setup, access, clone, fetch, and push issues.
