Skip to main content

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 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:

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 for more on access, self-onboarding, and offboarding.

What Mirrors Do Not Do

Git LFS

Mirrors do not currently support Git LFS. 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:
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:
For an existing checkout, configure the URL and pull:

Continue With

GitHub App Access

Choose which GitHub repositories Entire can access.

Mirrors in entire.io

Configure GitHub access and choose repositories from the web interface.

Mirrors in CLI

Create a mirror from the terminal and use it from Git.

Mirror Access and Permissions

Understand GitHub-synced access, hourly collaborator sync, and offboarding.

Troubleshooting

Fix mirror setup, access, clone, fetch, and push issues.