thesa
thesa is a Rust CLI that clones public GitHub repositories for a
person, organization, or a single repository.
Install
cargo install --path .
Usage
thesa [TARGET] [options]
Run with no arguments for interactive mode.
TARGET can be one of: owner, owner/repo, https://github.com/owner,
https://github.com/owner/repo.
Common options:
--depth <DEPTH>: clone with commit depth-c, --concurrency <N>: number of repos cloned in parallel (default4)--filter <PATTERN>: filter repository names by substring--skip-existing: skip repos that are already present--token <TOKEN>: GitHub API token (or useGITHUB_TOKENenv)
Runtime controls (TTY only):
t: toggle repository detail lines in the live batch displayq: request stop after current batch completesm: Matrix effectb: Burn effectw: Wipe effect
TTY clone runs use a Ratatui dashboard. Aisling renders the Matrix/Burn/Wipe effect pane and the TQDM-style loader rows for concurrent repository pulls.
Examples:
- Start TUI and pick target/repo interactively:
thesa
- Clone one repo:
thesa torvalds/linux --output ./repos
- Clone all public repos for a user/org with shallow history:
thesa octocat --output ./repos --depth 1
- Clone with explicit concurrency:
thesa octocat --concurrency 8 --output ./repos
- Preview actions before cloning:
thesa org-name --dry-run
Scripts
You can compile and run with helper scripts:
-
Run from repo root (interactive target prompt):
./run.sh
-
Pass a target directly:
./run.sh <target> [output-root] [concurrency] [extra thesa flags]
-
Compile only:
./scripts/compile.sh
-
Compile and run (default concurrency
4):./scripts/run.sh <target> [output-root] [concurrency] [extra thesa flags excluding --output]
-
Publish release to crates.io:
./scripts/publish.sh --allow-dirty./scripts/publish.sh --dry-run(safe checks only)
run.sh creates an output folder from the target name (for example owner or,
for owner/repo, just repo) and runs clones inside that folder.
Notes
--concurrencysets the concurrent clone batch size.- private repositories are intentionally skipped/blocked.