Skip to main content
You can inspect and mirror repositories in the Entire CLI as easily as you would on entire.io.

Before You Start

Make sure you have: Each selected region creates a separate mirror placement. If you select several regions, choose the placement closest to your agents when you clone or configure a remote. Mirror access follows GitHub collaborator permissions. Read What Mirrors Do Not Do before setup if the repository uses Git LFS. Branches under entire/unmirrored/ stay in one Entire region and do not sync to GitHub.

Log In

Log in with the Entire CLI:
Confirm that your login is active:

Inspect Repositories and Mirrors

List repositories that your login can access:
The list combines existing mirrors with GitHub repositories you can onboard. Use --mirrored to show existing mirrors or --available to show GitHub repositories that do not have a mirror placement yet. Inspect one repository and its placement on each cluster:
The view shows the repository’s name and visibility, then one row per cluster with its role, clone URL, and status, such as ready, processing, or failed.

Create the Mirror

Run the add command with no arguments:
Entire prompts you to select repositories and regions. It creates a placement for every selected repository in every selected region:
This registers the mirror placements on Entire. It does not change any local Git checkout.

Script the Mirror Creation

To create one placement without repository prompts, pass the repository and, optionally, its cluster host:
Write the repository as a /gh/OWNER/REPO reference. A bare owner/repo and a GitHub URL are both refused, with a message telling you the /gh/ spelling to use instead. If you omit --cluster, an interactive terminal offers the available clusters as a multi-select. A non-interactive run defaults to aws-us-east-2.entire.io. For several regions at once, repeat --cluster or comma-separate the hosts. The command waits until the initial clone from GitHub is available, then prints a table of repository, region, status, and clone URL, followed by the git clone command for it. Creating a mirror is idempotent for a given repository and region: rerunning the command returns the existing mirror. To return as soon as the mirror is registered instead of waiting for the initial clone, pass --no-wait.

Clone the Mirror

Clone by repository path:
If the repository has one placement, Entire selects it. If it has placements on several clusters, an interactive terminal prompts 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. Select a cluster explicitly with --cluster:
You can also pass a full entire:// URL. Because the URL already names a cluster, Entire passes it to git clone without a placement lookup.

Use the Mirror in an Existing Checkout

From the existing GitHub checkout, run:
Entire resolves the repository from the checkout’s existing remotes. If it has placements on several clusters, an interactive terminal prompts you to choose one, and a run without a terminal uses the repository’s own cluster. Pass --cluster to choose either way. This adds entire alongside origin and leaves origin on GitHub. To send everyday Git commands through the mirror, repoint origin instead:
A name that already exists is refused unless you pass --override, the same way git remote add behaves. With --override, Entire prints the URL it replaced, credentials redacted, and that printout is the only record of it. This command only edits the current checkout’s Git configuration. The server-side mirror must already exist.

Push through the Mirror

Push through the mirror remote with normal Git commands:
Use origin instead if you repointed it with --override. Entire forwards the push through the mirror to the upstream GitHub repository. Your GitHub write access, branch protection rules, and required checks still apply.

Push an Unmirrored Branch

Branches whose names start with entire/unmirrored/ are never forwarded to GitHub. The branch stays in the mirror’s Entire region, so pushes to it are not subject to GitHub’s push rate limits. See Entire-Native Branches for when to use them. Create and push an unmirrored branch with normal Git commands:
Push it to the Entire remote, not to GitHub. The prefix only does anything on an entire:// remote. When you want the work on GitHub, push the same commits to a branch name outside the prefix:
Entire does not currently back up unmirrored branches, and they are not available on GitHub or from mirrors in other regions. Keep a copy of any work you cannot afford to lose on a mirrored branch or on GitHub.

Raw Git Fallback

Use raw Git commands when you need to manage the remote configuration yourself. Git invokes git-remote-entire for entire:// remotes. Clone from a known placement URL:
To repoint origin:
To keep origin and add a separate remote:
With raw Git, save the previous URL and select the regional placement yourself. See Troubleshooting for git-remote-entire diagnostics.

Remove the Mirror

When you no longer need the mirror, remove the server-side mirror placement:
On a terminal Entire offers the clusters the repository is mirrored on as a multi-select, with nothing pre-selected. There is no default, so a non-interactive run must name them with --cluster. Removing a mirror does not delete or rewrite the GitHub repository. It also does not change any local Git remotes you configured in .git/config.

Continue With

Mirror a GitHub Repository

Follow the end-to-end tutorial for creating, cloning, pushing through, and restoring a mirror.

Mirrors in entire.io

Configure GitHub access and choose repositories from the web interface.

Mirror Access and Permissions

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

Troubleshooting

Fix missing repositories, app access, clone, fetch, and push issues.