Version 0.1.0 Β· Made by Gaohar Imran
- Demo
- Overview
- Features
- Supported Languages & Ecosystems
- Installation
- Usage
- Commands
- Command Details
- LLM Support
- Examples
- Known Limitations
- Project Structure
- Contributing
- License
- Author
RoasterBro turning the roast on itself:
Roasterbro.Video.mp4
Yes, we let it roast its own codebase. It did not go easy on us.
RoasterBro is a command-line tool that inspects a codebase and gives you a full picture of what's going on inside it β languages used, dependencies, file statistics, git history, whitespace hygiene, and more. When you're ready for some tough love, point it at an LLM and let it roast your repository based on everything it found.
Think of it as part static-analysis tool, part linter, part stand-up comedian.
Scope note: RoasterBro's language detection works on virtually any codebase (it's extension-based). Its dependency and framework detection is currently scoped to Python, JavaScript/TypeScript (Node.js), Rust, and Go β see Supported Languages & Ecosystems below for exactly what that covers today.
- π Repo Scan β Quick overview of your project structure and project maturity signals
- π Language Detection β Recognizes 90+ file extensions across most mainstream languages
- π¦ Dependency Analysis β Parses
package.json,pyproject.toml,requirements.txt,Cargo.toml, andgo.modfor dependencies, package managers, and frameworks - π File Statistics β Inspect LOC, file sizes, largest files, empty files, and test files
- π± Git Analysis β Insights pulled straight from your repository's Git history
- π§Ή Whitespace Scanner β Hunt down trailing whitespace, file by file, line by line
- ποΈ Project Maturity Analysis β Detect testing, CI/CD, documentation, security, contribution, and other repository signals
- π Suspicious File Detection β Identify files that may require additional attention
- π§ Model Discovery β Detect available local LLM setups and configured cloud providers
- π€ Multi-Provider LLM Support β Use local models through Ollama or supported online LLM providers
- ποΈ Full Scan β Run repository analysis together, with optional JSON export
- π₯ AI Interrogation & Roast β Answer 3 repository-based ragebait questions before receiving a personalized final roast
- π― Evidence-Based Roasting β Generate jokes and questions from actual repository signals instead of predefined jokes
- β‘ Short Aliases β Every command has a fast, memorable shortcut
Language detection (langs) is extension-based and works on any codebase β it recognizes 90+ file extensions spanning most mainstream languages (Python, JavaScript/TypeScript, Go, Rust, Java, C/C++, Ruby, PHP, and many more). This part has no dependency-file requirement and works everywhere.
Dependency and framework detection (deps, and the dependency section of fullscan/roast) is more targeted. RoasterBro currently reads these manifest files:
| Ecosystem | Manifest file(s) read | Package managers detected |
|---|---|---|
| Python | pyproject.toml, requirements.txt |
pip, pip/pyproject, poetry, pipenv |
| JavaScript / TypeScript (Node.js) | package.json |
npm, yarn, pnpm |
| Rust | Cargo.toml |
cargo |
| Go | go.mod |
go modules |
Within those ecosystems, these frameworks are currently recognized from your dependency list:
- Python: Django, FastAPI, Flask
- JavaScript/TypeScript: Next.js, NestJS, Express, React
Not yet supported: manifests for other ecosystems (e.g. composer.json for PHP, Gemfile for Ruby, pom.xml/build.gradle for Java) aren't parsed yet, so deps won't report dependencies for those repos even though langs will still correctly detect the source files. If your project uses one of these, deps/fullscan will simply show no dependency file found β that's an expected current limitation, not a bug. Contributions adding new ecosystem parsers are very welcome (see Contributing).
From PyPI (recommended):
pip install roasterbroFrom source (if you want the latest unreleased changes, or you're planning to contribute β see CONTRIBUTING.md):
git clone https://github.com/gaoharimran29-glitch/Roasterbro.git
cd Roasterbro
pip install -e .Requires Python 3.11+ (RoasterBro's TOML parsing uses the
tomllibstandard-library module, added in 3.11).
Once installed, the roasterbro command will be available in your terminal.
roasterbro COMMAND PATH [OPTIONS]
PATHis required for every command exceptmodelsβ point it at the repository you want to analyze. Use.to scan the current directory.
Running roasterbro with no arguments displays the banner and a quick pointer to the help menu:
roasterbroTo see all available commands:
roasterbro --help
# or
roasterbro -hTo check the installed version:
roasterbro --version
# or
roasterbro -v| Command | Alias | Description |
|---|---|---|
scan |
-s |
Return basic info about the repo |
gitanalyze |
-g |
Return git info about the repo |
langs |
-l |
Return all the languages used in the repo |
deps |
-d |
Return all the dependencies used in the repo |
filestats |
-fs |
Return stats related to files in the repo |
whitespace |
-w |
Return filename and line number for trailing whitespace |
fullscan |
-f |
Run a combined full scan (with optional JSON export) |
models |
-m |
Detect local LLM models and cloud LLM provider API keys |
roast |
-r |
Interrogate the developer with 3 repository-based ragebait questions and generate a final AI roast |
Every command (except models) accepts a required PATH argument pointing to the repository you want to analyze.
roasterbro scan PATH
roasterbro -s .Gives you a snapshot summary of the repository: files, directories, and general structure.
roasterbro gitanalyze PATH
roasterbro -g .Analyzes the repository's git history and metadata. PATH must itself be the root of a git repository (RoasterBro does not search parent directories for one).
roasterbro langs PATH
roasterbro -l .Detects and lists every recognized programming language present in the codebase, by file extension.
roasterbro deps PATH
roasterbro -d .Scans the repo and reports the dependencies it relies on. See Supported Languages & Ecosystems for which manifest files are currently parsed.
roasterbro filestats PATH
roasterbro -fs .Reports file- and directory-level metrics, including whether test coverage appears to exist.
roasterbro whitespace PATH
roasterbro -w .Flags every file and line number containing trailing whitespace.
roasterbro fullscan PATH [--json OUTPUT.json]
roasterbro -f . --json results.jsonRuns scan, langs, deps, filestats, and gitanalyze together and prints a combined report. Use --json to save the full combined results to a JSON file.
| Option | Description |
|---|---|
--json <path> |
Save the combined scan output to a JSON file. Resolved relative to your current shell location, not the scanned repo. |
roasterbro models
roasterbro -mDetects locally configured LLM setups and cloud provider API keys available in your environment. This is the only command that doesn't take a PATH.
roasterbro roast PATH [--provider PROVIDER] [--llm MODEL]
roasterbro -r . --provider google --llm gemini-2.5-flash-liteRuns a full scan and hands the results to an LLM, which then proceeds to roast your codebase based on what it finds. Requires a usable LLM β either a running Ollama instance or a configured cloud provider API key. Run roasterbro models first if you're not sure what's available.
| Option | Default | Description |
|---|---|---|
--provider |
google |
LLM provider company (e.g. google) |
--llm |
gemini-2.5-flash-lite |
Specific LLM model to use |
RoasterBro's AI features are designed to work with different LLM providers.
RoasterBro supports locally running models through Ollama.
Example:
roasterbro roast . --provider ollama --llm llama3.2:3bYou can use any model available through your Ollama installation. The model does not need to be hardcoded into RoasterBro.
RoasterBro can also use configured online LLM providers.
Example:
roasterbro roast . --provider google --llm gemini-2.5-flash-liteProvider API keys should be configured through environment variables.
Check Available Models
roasterbro models
or:
roasterbro -mThis command helps identify available local LLM configurations and configured online providers.
# Scan the current directory (the "." is required)
roasterbro scan .
# Analyze git history for a specific project
roasterbro gitanalyze ~/projects/my-app
# Get a full report and save it as JSON (saved relative to where you run this, not to my-app)
roasterbro fullscan ~/projects/my-app --json report.json
# See which LLM providers you have configured
roasterbro models
# Get roasted using Google's Gemini
roasterbro roast . --provider google --llm gemini-2.5-flash-lite
# Get roasted using a local Ollama model instead
roasterbro roast . --provider ollama --llm llama3.2:3bBeing upfront about what RoasterBro doesn't do yet:
- Dependency/framework detection is scoped to Python, JS/TS, Rust, and Go. See Supported Languages & Ecosystems. Other ecosystems (PHP, Ruby, Java, .NET, etc.) are correctly language-detected by
langsbut won't show up indeps. gitanalyzelooks for a.gitdirectory at the exactPATHyou give it β it doesn't walk up through parent directories. Point it at your repo root.roastneeds a working LLM. Either Ollama running locally, or an API key for one of the supported cloud providers (OpenAI, Groq, Google, Mistral, Anthropic) set in your environment. Runroasterbro modelsto check what's available before runningroast.--jsononfullscanresolves relative to your current shell directory, not the repository you're scanning β soroasterbro fullscan ~/other-repo --json out.jsonwritesout.jsonwhere you ran the command, not inside~/other-repo.- "Total Size" in
scan/fullscanreflects the full directory size on disk, including files RoasterBro otherwise excludes from its file/dependency analysis (e.g..githistory,node_modulesif present). File and directory counts are filtered; the size figure currently is not. - "Created At" is exact on macOS but approximate on Linux. macOS exposes a true file-creation timestamp (
st_birthtime), which RoasterBro uses when available. Most Linux filesystems don't track creation time at all, so on Linux this field falls back tost_ctimeβ the last time the directory's metadata changed (permissions, ownership, a rename, etc.), not when it was actually created. RoasterBro detects this automatically and labels the fieldCreated At (approx.*)with an inline note whenever it's using the fallback, so you'll always know which one you're looking at.
Found something else? Please open an issue β see Contributing.
roasterbro/
βββ assets/
β βββ roasterbro-logo.svg # Roasterbro Logo
β
βββ roasterbro/ # Main Python package
β βββ models/ # Pydantic models
β β βββ roast_output_model.py # Roast output schema
β β
β βββ output_formatter/ # Pretty-printers for scan results
β β βββ scan_output_formatter.py
β β βββ git_output_formatter.py
β β βββ lang_output_formatter.py
β β βββ dep_output_formatter.py
β β βββ filestats_output_formatter.py
β β βββ whitespace_output_formatter.py
β β βββ model_output_formatter.py
β β
β βββ prompts/ # Prompts used by LLMs
β β βββ facts_extract_prompt.py
β β βββ final_roast_prompt.py
β β βββ questions_generate_prompt.py
β β
β βββ tools/ # Core repository scanning and analysis
β β βββ repo_basic_scan.py # Basic repository information
β β βββ repo_deps_scan.py # Dependency analysis
β β βββ repo_file_scan.py # File and directory analysis
β β βββ repo_git_scan.py # Git repository analysis
β β βββ repo_lang_scan.py # Programming language detection
β β βββ repo_whitespace_scan.py # Whitespace analysis
β β βββ repo_roast_scan.py # Repository roasting logic
β β βββ find_llm_models.py # LLM model discovery
β β
β βββ utils/ # Shared utilities and configuration
β β βββ helpers.py # Path validation and scanning helpers
β β βββ config.py # LLM provider/config resolution
β β βββ constants.py # Project-wide constants
β β
β βββ main.py # Click-based CLI entry point
β
βββ setup.py # Package installation configuration
βββ requirements.txt # Python dependencies
βββ .env.example # Example environment variables
βββ .gitignore # Git ignored files and directories
βββ CONTRIBUTING.md # Contribution guide
βββ CHANGELOG.md # Track the new unreleased changes
βββ SECURITY.md # Security Policy
βββ README.md # Project Documentation
βββ MANIFEST.in # Distribution file inclusion
βββ CODE_OF_CONDUCT.md # Contributor behavior guidelines
βββ LICENSE # Project license
Contributions, issues, and feature requests are welcome! See CONTRIBUTING.md for the development setup, project structure, and a guide to adding support for a new ecosystem or language β that's currently the highest-value place to contribute. All participants are expected to follow the Code of Conduct.
Quick version:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes
- Push to the branch and open a Pull Request
If you find a bug or a security vulnerability, please report it directly to the developer.
This project is licensed under the MIT License.
Gaohar Imran
- Github: @gaoharimran29-glitch
- LinkedIn: Gaohar Imran
Built for developers who can take a joke β and want their codebase analyzed while they're at it.