TUI-based CLI for managing repositories inside a *myrepos* config file. Simplifies adding and removing repos with an interactive interface.
Project description
mr-manager
mr-manager is a Textual TUI for managing repositories in your
~/.mrconfig myrepos file. It discovers Git repositories under your home
directory and lets you toggle which ones are tracked.
Features
- Discovers local Git repositories recursively.
- Fast startup using a cached filesystem scan (24-hour TTL).
- Reads existing repo sections from
~/.mrconfig. - Interactive keyboard-driven selection UI.
- Saves add/remove config updates safely.
- Highlights missing configured repositories.
Installation
Python (pipx)
Requires Python >=3.13.
pipx install mr-manager
From source
Prerequisites: Python >=3.13, uv
uv sync --dev
uv run mr-manager
Usage and keybindings
space: Toggle selected repositoryj: Move downk: Move ups: Save changesr: Refresh repository scan (bypasses cache)q: Quit (asks for confirmation if unsaved changes exist)
Development workflow
Run checks locally before opening a PR:
uv run ruff check --no-fix .
uv run ruff format --check .
uv run ty check
markdownlint --config markdownlint.json --ignore-path .markdownlintignore "**/*.md"
Performance Benchmarking
The project includes a benchmarking script to track performance regressions across versions:
# Run a quick benchmark
uv run scripts/benchmark.py --runs 5
The benchmark supports step-based execution and persistent artifacts for later analysis:
# Full local run (collect + text summary + graph)
uv run scripts/benchmark.py --runs 5
# CI-style text-only run
uv run scripts/benchmark.py --runs 10 --steps collect,summary
Default artifacts are saved in .cache/mr-manager/benchmarks/<benchmark-id>/:
data.jsonraw measurementssummary.txttextual reportplot.pnggraph (whenplotstep is enabled)
Useful options:
--versions v0.0.1 mainto benchmark specific refs--scan-root <path>to control discovery root--steps collect,summary,plotto resume from previous data--force-collectto overwrite existingdata.json
Documentation
Project docs are maintained in the wiki/ folder and published to GitHub Wiki
via CI.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mr_manager-0.0.2.tar.gz.
File metadata
- Download URL: mr_manager-0.0.2.tar.gz
- Upload date:
- Size: 491.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54e657299d559258ef04ce3a01a9cba98f3b8cb3b13c6cb95f60f58ac3d6463b
|
|
| MD5 |
4868bdc54976d4be76070cbb781cad8e
|
|
| BLAKE2b-256 |
f3f3df4c2187d13be0902518ba92ae91b4b77f4fcd675afbb85ce279ddadd720
|
File details
Details for the file mr_manager-0.0.2-py3-none-any.whl.
File metadata
- Download URL: mr_manager-0.0.2-py3-none-any.whl
- Upload date:
- Size: 36.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
11949f58871e2ef64b65dfd8770084a09d0640b715a1ea0e33ea15b654685360
|
|
| MD5 |
4385302c057964e3ee7e3d0f151256cf
|
|
| BLAKE2b-256 |
998c6ad87a6d76e45024a312c4842a0f542043cfde20a6f76a4c2a5c29e26aab
|