FEATURES

Everything around the mirror, in one place.

GitCube keeps a collection of public repositories usable after the initial clone. It tracks work, makes bare mirrors browsable, and gives you explicit ways to check and export them.

01 / MIRRORING

Add one repository or an entire public account.

GitCube accepts public HTTP(S) Git URLs from GitHub and other hosts. Paste one URL per line on the Add repository page; a submission can contain up to 500 non-empty lines. Existing repositories are skipped rather than cloned again.

INDIVIDUAL REPOSITORYhttps://github.com/openeggbert/cnaGITHUB ACCOUNT OR ORGANIZATIONhttps://github.com/openeggbert

A bare GitHub account URL starts an import job. GitCube follows the GitHub API's paginated results and queues each new public repository for cloning. It saves each page as it goes, so a large account does not require holding the whole list in memory.

Before adding a URL, Check a repository can tell you whether it is already in the collection and take you to its detail page. GitCube normalizes equivalent GitHub URL variants, including case, trailing slashes, and a final .git, to avoid duplicate records.

What gets stored?

Each successful clone is a bare mirror created with git clone --mirror. There is no checked-out worktree. New mirrors are stored by database ID, so different repository names cannot collide on disk.

02 / ORGANIZATION

Find the right repository and read its state.

The repository list shows 25 entries per page. Search matches owner, name, host, or description. Filters narrow the view by state, GitHub account, Git tag, and a personal importance rating.

Independent status

Local availability, active operation, health check, and GitHub metadata each have their own state and error. A metadata failure does not hide a mirror that is ready to browse locally.

Live visible rows

Open dashboard tabs poll lightweight status for only the repositories on their current page every two seconds. Active and queued job counts update without a full page reload.

Importance you control

Set 0–3 stars on a repository: undefined, low, medium, or high. The rating can be filtered and sorted, but does not alter worker scheduling.

Pause when needed

Pausing a repository skips new queued and bulk work for it. A command that is already running is allowed to finish.

A repository detail page brings together status, description, stars, forks, license, releases, disk usage, actions, and links into its files and commits.

03 / BROWSING

Explore a bare mirror without checking it out.

Choose a branch or tag, then move through its file tree. Entries show name, type, size, and a short object ID. A root README.md is rendered below the listing. Markdown files opened directly are rendered too, using a deliberately limited safe subset.

Text files are escaped and shown plainly; binary files offer a raw download. The commits view lists up to 200 commits for the selected ref, and an individual commit shows its metadata, file statistics, and patch. GitCube reads all of this from the local bare mirror.

Bounded pages

To keep a detail response manageable, GitCube renders at most 500 branches, 500 tags, and the 200 latest GitHub releases on one page. The full stored ref and release data is still retained.

04 / OPERATIONS

See what work is queued, running, or finished.

Clone, fetch, health, metadata refresh, and account import run as persistent jobs in SQLite. A configurable worker pool claims them in the background. Fetch all and Check all queue work for eligible, unpaused repositories.

A health check first tests whether the remote can be reached and then runs git fsck --full --no-dangling on the local mirror. The job history can be filtered by queued, running, success, failed, or interrupted status and shows timestamps, attempts, messages, and failure output.

GitCube retains the latest 5,000 finished jobs and full command output for the latest 200. Active and queued jobs are not pruned. If the process is stopped gracefully, interrupted work returns to the queue for the next start.

How jobs recover

05 / GITHUB INTEGRATION

Metadata is useful, but the mirror comes first.

For GitHub repositories, GitCube fetches public descriptions, stars, forks, license information, and paginated release history through the unauthenticated GitHub API. No token is needed, but the API is rate-limited.

When GitHub reports a rate limit, GitCube reschedules the affected job and other pending GitHub API work based on the reported reset time. Temporary network and server failures use bounded retries. Your local mirror remains available for cloning, fetching, and browsing even when metadata cannot be refreshed yet.

06 / EXPORT

Choose files or the full Git mirror.

The repository detail page offers two ZIP downloads. They serve different purposes:

DownloadContainsUse it when
Files from a branch or tagThe selected tree only, created with git archive. No .git history.You need a snapshot of the project files.
Whole bare mirrorRefs, objects, packs, and history as stored in the mirror.You want a portable copy that can be extracted and cloned again.

Exports are streamed from temporary owner-only files. Each export is capped at 500 MiB, and only one export runs at a time. Temporary files are removed after the transfer, on disconnect, or at the next startup after a hard crash.

NEXT

Ready to try it?

Build GitCube, add a public repository, and explore your first mirror.

Follow the user guide