Repo-lyzer is a modern, terminal-based CLI tool written in Golang that analyzes GitHub repositories and presents insights in a beautifully formatted, interactive dashboard.
- Deep Analytics – Repository health, maturity scores, and bus factor.
- Contribution Friendliness – Assess how easy it is to contribute to a repository using weighted metrics (
--contributeflag). - Interactive TUI – Fully navigable keyboard-driven menu system.
- Visual Data – Language breakdown bars and horizontal commit graphs.
- File Explorer – Browse repository structures directly in the dashboard.
- Multi-Format Export – Save reports as JSON, Markdown, CSV, or HTML.
- Go 1.21+ (for
go install) or Docker (for containerized usage) - A GitHub Personal Access Token (required for API calls)
go install github.com/agnivo988/Repo-lyzer@latestVerify the installation:
repo-lyzer version# Get a 5-line quick summary
repo-lyzer summary golang/go
# Run full interactive analysis
repo-lyzer analyze microsoft/vscode
# Run analysis with contribution scoring enabled
repo-lyzer analyze microsoft/vscode --contributeYou can run repo-lyzer using Docker without installing Go. The Docker image uses a non-root user and is optimized for production.
# Build the image
docker build -t repo-lyzer .
# Run the CLI interactively
docker run -it --rm repo-lyzerFor continuous monitoring and scheduling, you can run the daemon mode using docker-compose:
# Start the daemon
docker compose up -d
# View logs
docker compose logs -fYou can configure repo-lyzer using environment variables. These will override file-based settings:
REPO_LYZER_GITHUB_TOKEN: Your GitHub Personal Access TokenREPO_LYZER_INTERVAL: Scheduler polling interval (e.g.,30s,5m,1h)REPO_LYZER_LOG_LEVEL: Logging level (debug,info,warn,error)REPO_LYZER_CONFIG_PATH: Override the config file path (defaults to/app/data/settings.jsonin the container)
The docker-compose.yml mounts a local ./data directory to persist settings and reports.
┌────────────────────────────────────────────┐
│ main.go │
└────────────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────┐
│ cmd/ │
└────────────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────┐
│ internal/ui/ │
└────────────────────────────────────────────┘
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ github │ │ analyzer │ │ output │
└──────────────┘ └──────────────┘ └──────────────┘
- ARCHITECTURE.md – Complete architecture guide
- ANALYZER_INTEGRATION.md – Adding new analyzers
- IMPLEMENTATION_DETAILS.md – Technical deep dive
- PROJECT STRUCTURE.md - Project Structure and Workflow
- DOCUMENTATION_INDEX.md – Master index
- QUICK_REFERENCE.md – Quick usage guide
- CHANGE_LOG.md – Version history
We welcome contributions from the community! Here's how to get started:
- Fork the repository
- Clone your fork:
git clone https://github.com/your-username/Repo-lyzer.git
- Create a feature branch:
git checkout -b feat/your-feature-name
- Make your changes and ensure tests pass:
go test ./... - Commit with a clear message:
git commit -m "feat: add your feature" - Push and open a Pull Request
# Install dependencies
go mod download
# Run tests
go test ./...
# Build from source
go build -o repo-lyzer .- Run
go fmt ./...before committing - Follow standard Go conventions
- Add tests for new functionality
MIT License © 2026 Agniva Mukherjee. See LICENSE for details.













![coderabbitai[bot] coderabbitai[bot]](https://github.com/coderabbitai.png)