GitHub Quick Review: Evaluate your enterprise and organizations against GitHub best practices
See the codeGitHub Quick Review (ghqr) is a powerful command-line interface (CLI) tool that analyzes GitHub enterprises, organizations, and repositories to ensure compliance with GitHub best practices and security recommendations. Its main objective is to offer users a comprehensive assessment of their GitHub resources, allowing them to easily identify security gaps, misconfigured settings, and areas for improvement.
GitHub Quick Review (ghqr) evaluates your GitHub resources across the following areas:
| Area | Scope | Examples |
|---|---|---|
| Security | Org, Repo | Dependabot alerts, secret scanning, code scanning, GHAS |
| Access Control | Org, Repo | 2FA enforcement, member privileges, SAML SSO, CODEOWNERS |
| Branch Protection | Repo | Required reviews, status checks, admin enforcement |
| Copilot | Org | Seat usage, content exclusions, policy configuration, MCP settings |
| Governance | Org | IP allow lists, repository creation policies, fork policies |
| Audit Log | Enterprise, Org | Audit log streaming, suspicious event detection |
| Community | Repo | Contributing guide, issue templates, code of conduct |
| Actions | Org, Repo | Workflow permissions, allowed actions, self-hosted runners |
| Dependencies | Repo | Dependabot version updates, security updates |
| Metadata | Repo | Description, topics, visibility, archival status |
| Area | Examples |
|---|---|
| Server Configuration | Version currency, subdomain isolation, TLS, private mode |
| Authentication | Auth mode (SAML/LDAP/CAS), open signup, password authentication |
| License | Seat utilization, license expiration warnings |
| Security | GHAS enablement, secret scanning, push protection, code scanning |
| Dependencies | Dependabot alerts and security updates enablement |
| Actions | GitHub Actions enablement, self-hosted runner security |
| Audit Log | Suspicious event detection, log forwarding, staff impersonation |
| Infrastructure | Admin SSH access, site admin count, backup-utils, HA replicas |
| Admin Stats | User/org/repo counts, suspended user ratio, disabled orgs |
The output generated by GitHub Quick Review (ghqr) includes:
Outputs are available in Markdown (.md), Excel (.xlsx) (default) and JSON formats.
Create a folder for installing the ghqr binary.
bash -c "$(curl -fsSL https://raw.githubusercontent.com/microsoft/ghqr/main/scripts/install.sh)"
Or download the latest release from the releases page.
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/microsoft/ghqr/main/scripts/install.ps1'))
Or download the latest release from the releases page.
docker pull ghcr.io/microsoft/ghqr:latest
git clone https://github.com/microsoft/ghqr.git
cd ghqr
make
# Option A: Authenticate with the gh CLI (recommended — no env vars needed)
gh auth login
# Option B: Set a Personal Access Token manually
export GITHUB_TOKEN=<your-personal-access-token>
# 2. Scan an organization
ghqr scan -o my-org
# 3. Scan a GitHub Enterprise (Cloud)
ghqr scan -e my-enterprise
# 4. Scan a GitHub Enterprise Server (GHES) instance
gh auth login --hostname ghes.example.com # recommended
# or: export GH_TOKEN=<your-ghes-personal-access-token>
ghqr scan --ghes ghes.example.com
# Option A: Authenticate with the gh CLI (recommended — no env vars needed)
gh auth login
# Option B: Set a Personal Access Token manually
$env:GITHUB_TOKEN="<your-personal-access-token>"
# 2. Scan an organization
.\ghqr scan -o my-org
# 3. Scan a GitHub Enterprise (Cloud)
.\ghqr scan -e my-enterprise
# 4. Scan a GitHub Enterprise Server (GHES) instance
gh auth login --hostname ghes.example.com # recommended
# or: $env:GH_TOKEN="<your-ghes-personal-access-token>"
.\ghqr scan --ghes ghes.example.com
GitHub Quick Review (ghqr) resolves credentials via a chain, similar to Azure's DefaultAzureCredential:
GH_TOKEN environment variableGITHUB_TOKEN environment variablegh CLI config — run gh auth login once and ghqr picks it up automaticallyFor GHES, GITHUB_TOKEN is scoped to github.com only (CVE-2024-53859). Use GH_TOKEN or gh auth login --hostname <ghes-host> instead.
| Scope | Purpose |
|---|---|
read:org | Read organization settings and members |
read:enterprise | Read enterprise settings |
repo | Read repository settings, branch protection, and security features |
read:audit_log | Read audit log configuration |
read:user | Read user information |
copilot | Read Copilot seat and policy information |
Note: Organization code security configurations (
settings.security.code_security_configurationsin the JSON output) are read withread:org, but GitHub also requires the token user to be an organization owner or security manager. Otherwise ghqr records them as not readable (*_readable: falsewith a*_unavailable_reasonofforbidden,not_found, orerror) instead of failing the scan. These configurations replace the deprecated*_enabled_for_new_reposorganization fields, which can reportfalsefor organizations that set defaults through a default code security configuration.
For GitHub Enterprise Server scanning, create a PAT on your GHES instance with these scopes:
| Scope | Purpose |
|---|---|
site_admin | Read server settings, license, admin stats, and audit log |
read:org | Read organization settings and members |
repo | Read repository settings and security features |
read:audit_log | Read audit log events |
The GHES token is read from GH_TOKEN first, then the gh CLI config (run gh auth login --hostname <host>), then GITHUB_TOKEN as a backward-compat fallback.
If your organization uses GitHub Enterprise Cloud with data residency, your API endpoints are on a custom ghe.com subdomain instead of github.com.
Specify your hostname using either:
--hostname / -H flag: ghqr scan -o my-org -H mycompany.ghe.comGH_HOST environment variable: export GH_HOST=mycompany.ghe.com# Scan a single organization
ghqr scan -o my-org
# Scan a GitHub Enterprise (Cloud)
ghqr scan -e my-enterprise
For GitHub Enterprise Cloud with Data Residency, see Data Residency.
To iterate on evaluation rules or re-render reports without re-querying GitHub, replay an existing scan JSON file:
ghqr scan --from-json ghqr_20260417_143426.json
The scan stages are skipped — no GitHub API calls or token are required — and a fresh <input>_replay_<timestamp>.json (plus xlsx/markdown when enabled) is produced. Note: the JSON renderer compacts collaborators and deploy_keys arrays into summaries, so per-collaborator and per-deploy-key rules cannot be re-evaluated from a replayed file.
For demos, report-template development, or load-testing the renderers without a GitHub token, generate a synthetic scan JSON for any number of organizations and repositories:
# 1 org with 5 repos (defaults)
ghqr mock
# 3 orgs, 10 repos each, wrapped in an enterprise; deterministic output
ghqr mock -o 3 -r 10 -e mock-ent --seed 42
# Generate JSON and immediately render markdown + xlsx in one shot
ghqr mock -o 5 -r 20 --profile noisy --render
Flags:
| Flag | Default | Description |
|---|---|---|
-o, --orgs | 1 | Number of organizations to synthesize |
-r, --repos | 5 | Number of repositories per organization |
-e, --enterprise | (none) | Optional enterprise slug wrapping all orgs |
--profile | typical | Distribution profile: clean, typical, or noisy |
--seed | 0 | RNG seed for reproducible output (0 = time-based) |
-O, --output | ghqr_mock_<timestamp>.json | Output JSON path |
--render | false | After writing JSON, replay it through the scan pipeline to produce md/xlsx |
The generator emits only raw entity facts — recommendations and summaries are computed by the existing evaluation stage when the file is replayed via --from-json. This keeps mock data automatically in sync with the rule definitions in internal/recommendations/definitions/. No GitHub API calls are made; no token is required.
Run ghqr -h for all available commands and options.
ghqr supports scanning on-premise GitHub Enterprise Server instances to assess security posture, configuration best practices, and compliance.
Authenticate for your GHES instance — Choose the recommended approach or use a PAT:
# Recommended: authenticate once with the gh CLI
gh auth login --hostname ghes.example.com
# Alternative: set a Personal Access Token
export GH_TOKEN=<your-ghes-personal-access-token>
ghqr resolves the GHES token via:
GH_TOKENenv var →ghCLI config → system keyring →GITHUB_TOKEN(backward compat).
Run a GHES scan — Pass the GHES hostname (without protocol) via the --ghes flag:
# Scan a single GHES instance
ghqr scan --ghes ghes.example.com
# Scan multiple GHES instances
ghqr scan --ghes ghes1.example.com --ghes ghes2.example.com
# Combine GHES scan with GitHub.com enterprise scan
ghqr scan -e my-enterprise --ghes ghes.example.com
# Scan with custom output name
ghqr scan --ghes ghes.example.com -n my-ghes-audit-2026
| Category | Checks |
|---|---|
| Server Version | Installed version detection, supported release verification |
| Authentication | Auth mode (built-in/SAML/LDAP/CAS), open signup, password auth |
| Networking | Subdomain isolation (critical), private mode, TLS enforcement |
| License | Seat utilization, expiration warnings (30/90 days) |
| Advanced Security | GHAS enablement, secret scanning, push protection, code scanning |
| Dependencies | Dependabot alerts and security updates enablement |
| Actions | GitHub Actions enablement, self-hosted runner security guidance |
| Audit Log | Suspicious event detection, log forwarding recommendations |
| Infrastructure | Site admin count, backup-utils verification, HA replica checks |
| Admin Stats | User/org/repo counts, suspended user ratio, disabled orgs |
The GHES audit log scanner detects these additional server-specific events:
staff.fake_login — Admin impersonation of another userstaff.unlock — Admin unlock of a user accountstaff.set_site_admin — Admin privilege escalationuser.suspend / user.unsuspend — User account state changesThese are in addition to the standard events (repo.destroy, org.remove_member, etc.).
Some GHES configuration items cannot be verified automatically via the API. The scan report will flag these for manual review:
GitHub Quick Review includes an MCP server that enables AI assistants to interact with ghqr functionality:
# Start MCP server in stdio mode (for IDE integration)
ghqr mcp
# Start MCP server in HTTP/SSE mode (for remote/web access)
ghqr mcp --mode http --addr :8080
Add to your .vscode/mcp.json:
{
"servers": {
"ghqr": {
"type": "stdio",
"command": "ghqr",
"args": ["mcp"],
"env": {
"GITHUB_TOKEN": "${input:githubToken}"
}
}
}
}
| Tool | Description |
|---|---|
scan | Scan GitHub enterprises, organizations, or repositories for best practices and security recommendations |
MCP scan tool accepts these optional array arguments:
enterprisesorganizationsrepositories (owner/repo)ghes_instances (GHES hostnames, for example ghes.example.com)When using ghes_instances, run gh auth login --hostname <host> or set GH_TOKEN for each GHES instance.
If you encounter any issue while using GitHub Quick Review (ghqr), run with the --debug flag:
ghqr scan -o my-org --debug
If you receive 401 Unauthorized or 403 Forbidden errors:
gh auth status or check GH_TOKEN/GITHUB_TOKEN env varsread:enterprise scope and that SSO is authorized for the enterprise--hostname or set GH_HOST (see Data Residency)If ghqr cannot connect to your GHES instance:
gh auth status --hostname <ghes-host>, or check that GH_TOKEN is set and was created on the GHES instance (not on github.com)ghes.example.com)site_admin scope for full scanning capabilitiessite_admin scopeGitHub API has rate limits (5000 requests/hour for REST, 5000 points/hour for GraphQL). For large enterprises or organizations, ghqr handles rate limiting automatically with exponential backoff.
Make sure you have Go 1.26.x or higher installed.
git clone https://github.com/microsoft/ghqr.git
cd ghqr
make
This project uses GitHub Issues to track bugs and feature requests. Please search existing issues before filing a new one.
Thanks to everyone who has contributed!
Azure DevOps Quick Review - a dedicated tool for Azure DevOps inspired by GitHub Quick Review (ghqr).
This project has adopted the Microsoft Open Source Code of Conduct.
Trademarks This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.
(top 24 of 35)
1,672 followers · starred May 2026
1,520 followers · starred Apr 2026
949 followers · starred Apr 2026
8,408 followers · starred Apr 2026
GitHub Quick Review: Evaluate your enterprise and organizations against GitHub best practices
See the codeGitHub Quick Review (ghqr) is a powerful command-line interface (CLI) tool that analyzes GitHub enterprises, organizations, and repositories to ensure compliance with GitHub best practices and security recommendations. Its main objective is to offer users a comprehensive assessment of their GitHub resources, allowing them to easily identify security gaps, misconfigured settings, and areas for improvement.
GitHub Quick Review (ghqr) evaluates your GitHub resources across the following areas:
| Area | Scope | Examples |
|---|---|---|
| Security | Org, Repo | Dependabot alerts, secret scanning, code scanning, GHAS |
| Access Control | Org, Repo | 2FA enforcement, member privileges, SAML SSO, CODEOWNERS |
| Branch Protection | Repo | Required reviews, status checks, admin enforcement |
| Copilot | Org | Seat usage, content exclusions, policy configuration, MCP settings |
| Governance | Org | IP allow lists, repository creation policies, fork policies |
| Audit Log | Enterprise, Org | Audit log streaming, suspicious event detection |
| Community | Repo | Contributing guide, issue templates, code of conduct |
| Actions | Org, Repo | Workflow permissions, allowed actions, self-hosted runners |
| Dependencies | Repo | Dependabot version updates, security updates |
| Metadata | Repo | Description, topics, visibility, archival status |
| Area | Examples |
|---|---|
| Server Configuration | Version currency, subdomain isolation, TLS, private mode |
| Authentication | Auth mode (SAML/LDAP/CAS), open signup, password authentication |
| License | Seat utilization, license expiration warnings |
| Security | GHAS enablement, secret scanning, push protection, code scanning |
| Dependencies | Dependabot alerts and security updates enablement |
| Actions | GitHub Actions enablement, self-hosted runner security |
| Audit Log | Suspicious event detection, log forwarding, staff impersonation |
| Infrastructure | Admin SSH access, site admin count, backup-utils, HA replicas |
| Admin Stats | User/org/repo counts, suspended user ratio, disabled orgs |
The output generated by GitHub Quick Review (ghqr) includes:
Outputs are available in Markdown (.md), Excel (.xlsx) (default) and JSON formats.
Create a folder for installing the ghqr binary.
bash -c "$(curl -fsSL https://raw.githubusercontent.com/microsoft/ghqr/main/scripts/install.sh)"
Or download the latest release from the releases page.
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/microsoft/ghqr/main/scripts/install.ps1'))
Or download the latest release from the releases page.
docker pull ghcr.io/microsoft/ghqr:latest
git clone https://github.com/microsoft/ghqr.git
cd ghqr
make
# Option A: Authenticate with the gh CLI (recommended — no env vars needed)
gh auth login
# Option B: Set a Personal Access Token manually
export GITHUB_TOKEN=<your-personal-access-token>
# 2. Scan an organization
ghqr scan -o my-org
# 3. Scan a GitHub Enterprise (Cloud)
ghqr scan -e my-enterprise
# 4. Scan a GitHub Enterprise Server (GHES) instance
gh auth login --hostname ghes.example.com # recommended
# or: export GH_TOKEN=<your-ghes-personal-access-token>
ghqr scan --ghes ghes.example.com
# Option A: Authenticate with the gh CLI (recommended — no env vars needed)
gh auth login
# Option B: Set a Personal Access Token manually
$env:GITHUB_TOKEN="<your-personal-access-token>"
# 2. Scan an organization
.\ghqr scan -o my-org
# 3. Scan a GitHub Enterprise (Cloud)
.\ghqr scan -e my-enterprise
# 4. Scan a GitHub Enterprise Server (GHES) instance
gh auth login --hostname ghes.example.com # recommended
# or: $env:GH_TOKEN="<your-ghes-personal-access-token>"
.\ghqr scan --ghes ghes.example.com
GitHub Quick Review (ghqr) resolves credentials via a chain, similar to Azure's DefaultAzureCredential:
GH_TOKEN environment variableGITHUB_TOKEN environment variablegh CLI config — run gh auth login once and ghqr picks it up automaticallyFor GHES, GITHUB_TOKEN is scoped to github.com only (CVE-2024-53859). Use GH_TOKEN or gh auth login --hostname <ghes-host> instead.
| Scope | Purpose |
|---|---|
read:org | Read organization settings and members |
read:enterprise | Read enterprise settings |
repo | Read repository settings, branch protection, and security features |
read:audit_log | Read audit log configuration |
read:user | Read user information |
copilot | Read Copilot seat and policy information |
Note: Organization code security configurations (
settings.security.code_security_configurationsin the JSON output) are read withread:org, but GitHub also requires the token user to be an organization owner or security manager. Otherwise ghqr records them as not readable (*_readable: falsewith a*_unavailable_reasonofforbidden,not_found, orerror) instead of failing the scan. These configurations replace the deprecated*_enabled_for_new_reposorganization fields, which can reportfalsefor organizations that set defaults through a default code security configuration.
For GitHub Enterprise Server scanning, create a PAT on your GHES instance with these scopes:
| Scope | Purpose |
|---|---|
site_admin | Read server settings, license, admin stats, and audit log |
read:org | Read organization settings and members |
repo | Read repository settings and security features |
read:audit_log | Read audit log events |
The GHES token is read from GH_TOKEN first, then the gh CLI config (run gh auth login --hostname <host>), then GITHUB_TOKEN as a backward-compat fallback.
If your organization uses GitHub Enterprise Cloud with data residency, your API endpoints are on a custom ghe.com subdomain instead of github.com.
Specify your hostname using either:
--hostname / -H flag: ghqr scan -o my-org -H mycompany.ghe.comGH_HOST environment variable: export GH_HOST=mycompany.ghe.com# Scan a single organization
ghqr scan -o my-org
# Scan a GitHub Enterprise (Cloud)
ghqr scan -e my-enterprise
For GitHub Enterprise Cloud with Data Residency, see Data Residency.
To iterate on evaluation rules or re-render reports without re-querying GitHub, replay an existing scan JSON file:
ghqr scan --from-json ghqr_20260417_143426.json
The scan stages are skipped — no GitHub API calls or token are required — and a fresh <input>_replay_<timestamp>.json (plus xlsx/markdown when enabled) is produced. Note: the JSON renderer compacts collaborators and deploy_keys arrays into summaries, so per-collaborator and per-deploy-key rules cannot be re-evaluated from a replayed file.
For demos, report-template development, or load-testing the renderers without a GitHub token, generate a synthetic scan JSON for any number of organizations and repositories:
# 1 org with 5 repos (defaults)
ghqr mock
# 3 orgs, 10 repos each, wrapped in an enterprise; deterministic output
ghqr mock -o 3 -r 10 -e mock-ent --seed 42
# Generate JSON and immediately render markdown + xlsx in one shot
ghqr mock -o 5 -r 20 --profile noisy --render
Flags:
| Flag | Default | Description |
|---|---|---|
-o, --orgs | 1 | Number of organizations to synthesize |
-r, --repos | 5 | Number of repositories per organization |
-e, --enterprise | (none) | Optional enterprise slug wrapping all orgs |
--profile | typical | Distribution profile: clean, typical, or noisy |
--seed | 0 | RNG seed for reproducible output (0 = time-based) |
-O, --output | ghqr_mock_<timestamp>.json | Output JSON path |
--render | false | After writing JSON, replay it through the scan pipeline to produce md/xlsx |
The generator emits only raw entity facts — recommendations and summaries are computed by the existing evaluation stage when the file is replayed via --from-json. This keeps mock data automatically in sync with the rule definitions in internal/recommendations/definitions/. No GitHub API calls are made; no token is required.
Run ghqr -h for all available commands and options.
ghqr supports scanning on-premise GitHub Enterprise Server instances to assess security posture, configuration best practices, and compliance.
Authenticate for your GHES instance — Choose the recommended approach or use a PAT:
# Recommended: authenticate once with the gh CLI
gh auth login --hostname ghes.example.com
# Alternative: set a Personal Access Token
export GH_TOKEN=<your-ghes-personal-access-token>
ghqr resolves the GHES token via:
GH_TOKENenv var →ghCLI config → system keyring →GITHUB_TOKEN(backward compat).
Run a GHES scan — Pass the GHES hostname (without protocol) via the --ghes flag:
# Scan a single GHES instance
ghqr scan --ghes ghes.example.com
# Scan multiple GHES instances
ghqr scan --ghes ghes1.example.com --ghes ghes2.example.com
# Combine GHES scan with GitHub.com enterprise scan
ghqr scan -e my-enterprise --ghes ghes.example.com
# Scan with custom output name
ghqr scan --ghes ghes.example.com -n my-ghes-audit-2026
| Category | Checks |
|---|---|
| Server Version | Installed version detection, supported release verification |
| Authentication | Auth mode (built-in/SAML/LDAP/CAS), open signup, password auth |
| Networking | Subdomain isolation (critical), private mode, TLS enforcement |
| License | Seat utilization, expiration warnings (30/90 days) |
| Advanced Security | GHAS enablement, secret scanning, push protection, code scanning |
| Dependencies | Dependabot alerts and security updates enablement |
| Actions | GitHub Actions enablement, self-hosted runner security guidance |
| Audit Log | Suspicious event detection, log forwarding recommendations |
| Infrastructure | Site admin count, backup-utils verification, HA replica checks |
| Admin Stats | User/org/repo counts, suspended user ratio, disabled orgs |
The GHES audit log scanner detects these additional server-specific events:
staff.fake_login — Admin impersonation of another userstaff.unlock — Admin unlock of a user accountstaff.set_site_admin — Admin privilege escalationuser.suspend / user.unsuspend — User account state changesThese are in addition to the standard events (repo.destroy, org.remove_member, etc.).
Some GHES configuration items cannot be verified automatically via the API. The scan report will flag these for manual review:
GitHub Quick Review includes an MCP server that enables AI assistants to interact with ghqr functionality:
# Start MCP server in stdio mode (for IDE integration)
ghqr mcp
# Start MCP server in HTTP/SSE mode (for remote/web access)
ghqr mcp --mode http --addr :8080
Add to your .vscode/mcp.json:
{
"servers": {
"ghqr": {
"type": "stdio",
"command": "ghqr",
"args": ["mcp"],
"env": {
"GITHUB_TOKEN": "${input:githubToken}"
}
}
}
}
| Tool | Description |
|---|---|
scan | Scan GitHub enterprises, organizations, or repositories for best practices and security recommendations |
MCP scan tool accepts these optional array arguments:
enterprisesorganizationsrepositories (owner/repo)ghes_instances (GHES hostnames, for example ghes.example.com)When using ghes_instances, run gh auth login --hostname <host> or set GH_TOKEN for each GHES instance.
If you encounter any issue while using GitHub Quick Review (ghqr), run with the --debug flag:
ghqr scan -o my-org --debug
If you receive 401 Unauthorized or 403 Forbidden errors:
gh auth status or check GH_TOKEN/GITHUB_TOKEN env varsread:enterprise scope and that SSO is authorized for the enterprise--hostname or set GH_HOST (see Data Residency)If ghqr cannot connect to your GHES instance:
gh auth status --hostname <ghes-host>, or check that GH_TOKEN is set and was created on the GHES instance (not on github.com)ghes.example.com)site_admin scope for full scanning capabilitiessite_admin scopeGitHub API has rate limits (5000 requests/hour for REST, 5000 points/hour for GraphQL). For large enterprises or organizations, ghqr handles rate limiting automatically with exponential backoff.
Make sure you have Go 1.26.x or higher installed.
git clone https://github.com/microsoft/ghqr.git
cd ghqr
make
This project uses GitHub Issues to track bugs and feature requests. Please search existing issues before filing a new one.
Thanks to everyone who has contributed!
Azure DevOps Quick Review - a dedicated tool for Azure DevOps inspired by GitHub Quick Review (ghqr).
This project has adopted the Microsoft Open Source Code of Conduct.
Trademarks This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.
(top 24 of 35)
1,672 followers · starred May 2026
1,520 followers · starred Apr 2026
949 followers · starred Apr 2026
8,408 followers · starred Apr 2026