> ## Documentation Index
> Fetch the complete documentation index at: https://docs.entire.io/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.

## What is a mirror?

A mirror is a synced, read-optimized copy of a GitHub repository, hosted on Entire's Git network in the region you choose. The repository stays on GitHub, and mirroring gives developers and agents a low-latency `entire://` remote they can clone, fetch, and push through without a hard cutover.

Developers can keep pushing to GitHub as usual, while agents, automation, or selected users use the `entire://` remote. Behind the scenes, Entire keeps the mirror in sync.

Mirrors are served by the same distributed network as [Entire Repositories](/guides/repositories/overview). See that page for the larger model behind regional Git reads, repository state, and agent traffic.

## How mirrors work

To mirror a GitHub repository, the [Entire GitHub App must be able to access the repository](/guides/repositories/github-app-access). After that, a user with access to the GitHub repository can create the mirror from Entire.io or sign in with `entire login` and create it from the CLI.

When the mirror is created:

* Entire syncs the repository from GitHub
* the mirror is placed in the selected Entire region
* users get an `entire://` Git remote
* agents can clone and fetch from the regional mirror
* pushes through the mirror are authenticated with GitHub

The mirror keeps Git reads close to where agents run, while pushes remain authenticated with GitHub.

## Create a mirror

To create a mirror from the web app, see [Mirrors in Entire.io](/guides/repositories/mirrors-in-entire-io).

For the command-line flow, see [Mirrors in CLI](/guides/repositories/mirrors-in-cli). For an end-to-end tutorial, see [Mirror a GitHub Repository](/learn/mirror-a-github-repository).

## What changes

Creating a mirror gives you:

* a synced Entire copy of the GitHub repository
* an `entire://` remote for Git operations
* a regional read path for agents and automation
* an Entire mirror access list synced hourly with GitHub collaborators

You can use the mirror from a fresh clone or add it as a remote to 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 for pushes

Entire syncs GitHub collaborators into mirror access hourly. See [Mirror Access and Permissions](/guides/repositories/mirror-access-and-permissions) for GitHub-synced access, self-onboarding, and offboarding.

## Unmirrored branches

Branches whose names start with `entire/unmirrored/` are never synced to GitHub. An unmirrored branch exists only in the Entire region you push it to: it does not appear on GitHub, and it is not available from mirrors in other regions.

Because pushes to unmirrored branches stay in Entire instead of being forwarded to GitHub, they are not subject to GitHub's push rate limits. Use an unmirrored branch when you need:

* more push throughput than GitHub allows
* a branch you can keep pushing to while GitHub is unavailable
* a target for push benchmarks

To benchmark push throughput, for example with [ForgeMark](https://github.com/entireio/forgemark), Entire's open-source Git push benchmarking tool, push to an unmirrored branch. Pushes to regular branches are forwarded to GitHub, so a benchmark against them measures GitHub's push rate limits rather than Entire's throughput.

Mirror access still applies: you need write access through the mirror to push an unmirrored branch. To publish the work on GitHub later, push the same commits to a branch name outside the `entire/unmirrored/` prefix.

<Warning>
  Entire does not currently back up unmirrored branches. Keep a copy of any work you cannot afford to lose on a mirrored branch or on GitHub.
</Warning>

## Limitations

Mirrors do not currently support Git LFS. See [Limitations](/guides/repositories/limitations) for details and workarounds.

## Continue with

<CardGroup cols={2}>
  <Card title="GitHub App Access" icon="github" href="/guides/repositories/github-app-access">
    Choose which GitHub repositories Entire can access.
  </Card>

  <Card title="Mirrors in Entire.io" icon="browser" href="/guides/repositories/mirrors-in-entire-io">
    Configure GitHub access and choose repositories from the web app.
  </Card>

  <Card title="Mirrors in CLI" icon="terminal" href="/guides/repositories/mirrors-in-cli">
    Create a mirror from the terminal and use it from Git.
  </Card>

  <Card title="Mirror Access and Permissions" icon="lock" href="/guides/repositories/mirror-access-and-permissions">
    Understand GitHub-synced access, hourly collaborator sync, and offboarding.
  </Card>

  <Card title="Limitations" icon="triangle-exclamation" href="/guides/repositories/limitations">
    See what mirrors do not support yet, and the workarounds.
  </Card>

  <Card title="Troubleshooting" icon="wrench" href="/guides/repositories/troubleshooting">
    Fix mirror setup, access, clone, fetch, and push issues.
  </Card>
</CardGroup>
