Keep copies current
Clone a public repository or import a GitHub account. A persistent SQLite job queue handles cloning, fetching, and retries with configurable workers.
Mirroring detailsA local home for public Git repositories
Mirror, browse, check, and export public repositories from one local dashboard. GitCube keeps the work moving in the background while your collection stays on your machine.
C++20 · SQLite · Linux/POSIX · No Node.js
Bare mirrors, no worktrees
Persistent background jobs
Everything runs locally
WHAT GITCUBE DOES
Add public repositories once, then keep track of their mirrors, history, and health in one browser tab.
Clone a public repository or import a GitHub account. A persistent SQLite job queue handles cloning, fetching, and retries with configurable workers.
Mirroring detailsOpen branches, tags, files, commits, and diffs straight from the bare mirror. Read Markdown and find a repository with search and filters.
Browsing detailsRun remote and local health checks, follow job history, and download either a branch or tag as files or the whole re-clonable mirror as a ZIP.
Export detailsMORE THAN A FOLDER OF CLONES
A mirror is useful only if you know what is in it, whether it is current, and how to get something out. GitCube keeps those answers together.
Search by owner, name, host, or description. Narrow the list by state, GitHub account, Git tag, or your own 0–3 importance rating. The dashboard shows 25 repositories per page and refreshes visible status badges and job counts without reloading.
Explore the dashboardLocal availability, the current operation, health, and GitHub metadata have separate states. A metadata rate limit does not turn a healthy local mirror into a failed repository. The job history records attempts, timestamps, messages, and failure output.
Explore jobs and healthBrowse file trees, commits, diffs, and Markdown directly from a bare mirror. Download a selected branch or tag as a files-only ZIP, or download the whole mirror with its Git objects and history so it can be cloned again.
Compare exportsBUILT FOR THE LONG RUN
GitCube stores jobs in SQLite before workers claim them. If the process stops during a clone or fetch, interrupted work is returned to the queue on the next start. Partial clones are staged outside the final mirror directory and cleaned up after a hard crash.
GitHub API limits are handled separately: affected metadata jobs wait for the reset while local cloning and browsing remain available.
How recovery worksInterrupted work returns to the queue after restart.
THE WORKFLOW
GitCube serves a browser interface on your computer and does the Git work in the background.
Paste one or more HTTP(S) repository URLs, or a GitHub account URL for a public bulk import.
Clones, fetches, health checks, and GitHub metadata updates run as persistent jobs.
Inspect the mirror in your browser or download the files and history you need.
QUICK START
Install the build tools on Debian 13, then build, test, and start GitCube from the project directory. Open the local dashboard at 127.0.0.1:9999.
# Dependencies (Debian 13)
sudo apt install build-essential cmake git curl zip libsqlite3-dev
# Build and run
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel 2
ctest --test-dir build --output-on-failure
./build/gitcube
BUILT FOR LOCAL USE
GitCube is a single-user localhost application for public HTTP(S) repositories. This version targets Linux/POSIX and does not support private repositories or SSH URLs.
Read the current limits