Scan timing: clone 2.75s · analysis 6.69s · 0.4 MB · GitHub API rate-limit (preflight)
https://github.com/pi-hole/pi-hole
· scanned 2026-06-05 09:51 UTC (5 days, 17 hours ago)
· 10 languages
39 raw signals (19 security + 20 graph) 99th percentile · Python · tiny (<2K LoC) System graph score 81 (higher by 7)
Last scanned 5 days, 17 hours ago · v2 · 14 actionable findings from 2 signal sources. 15 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
| Component | Sub-score | Weight | Contribution |
|---|---|---|---|
structure_score |
55.0 | 0.15 | 8.25 |
security_score |
100.0 | 0.25 | 25.00 |
testing_score |
100.0 | 0.20 | 20.00 |
documentation_score |
95.0 | 0.15 | 14.25 |
practices_score |
84.0 | 0.15 | 12.60 |
code_quality |
75.8 | 0.10 | 7.58 |
| Overall | 1.00 | 87.7 |
All 204 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.
| Label | Layer | Status | Path |
|---|---|---|---|
README.md |
software | healthy | README.md |
CONTRIBUTING.md |
software | healthy | CONTRIBUTING.md |
gravity.sh |
software | healthy | gravity.sh |
basic-install.sh |
software | healthy | automated install/basic-install.sh |
uninstall.sh |
software | healthy | automated install/uninstall.sh |
_fedora_41.Dockerfile |
software | healthy | test/_fedora_41.Dockerfile |
__init__.py |
software | healthy | test/__init__.py |
conftest.py |
software | healthy | test/conftest.py |
_centos_10.Dockerfile |
software | healthy | test/_centos_10.Dockerfile |
_alpine_3_21.Dockerfile |
software | healthy | test/_alpine_3_21.Dockerfile |
README.md |
software | healthy | test/README.md |
test_any_utils.py |
software | healthy | test/test_any_utils.py |
_alpine_3_23.Dockerfile |
software | healthy | test/_alpine_3_23.Dockerfile |
_ubuntu_20.Dockerfile |
software | healthy | test/_ubuntu_20.Dockerfile |
_ubuntu_24.Dockerfile |
software | healthy | test/_ubuntu_24.Dockerfile |
_centos_9.Dockerfile |
software | healthy | test/_centos_9.Dockerfile |
test_any_automated_install.py |
software | healthy | test/test_any_automated_install.py |
test_centos_fedora_common_support.py |
software | healthy | test/test_centos_fedora_common_support.py |
_fedora_42.Dockerfile |
software | healthy | test/_fedora_42.Dockerfile |
_debian_12.Dockerfile |
software | healthy | test/_debian_12.Dockerfile |
setup.py |
software | warning | test/setup.py |
_fedora_40.Dockerfile |
software | healthy | test/_fedora_40.Dockerfile |
_debian_11.Dockerfile |
software | healthy | test/_debian_11.Dockerfile |
_debian_13.Dockerfile |
software | healthy | test/_debian_13.Dockerfile |
_fedora_43.Dockerfile |
software | healthy | test/_fedora_43.Dockerfile |
requirements.txt |
software | healthy | test/requirements.txt |
_ubuntu_22.Dockerfile |
software | healthy | test/_ubuntu_22.Dockerfile |
_alpine_3_22.Dockerfile |
software | healthy | test/_alpine_3_22.Dockerfile |
gravity.db.sql |
software | healthy | advanced/Templates/gravity.db.sql |
pihole-FTL-prestart.sh |
software | healthy | advanced/Templates/pihole-FTL-prestart.sh |
pihole-FTL-poststop.sh |
software | healthy | advanced/Templates/pihole-FTL-poststop.sh |
gravity_copy.sql |
software | healthy | advanced/Templates/gravity_copy.sql |
version.sh |
software | healthy | advanced/Scripts/version.sh |
updatecheck.sh |
software | healthy | advanced/Scripts/updatecheck.sh |
list.sh |
software | healthy | advanced/Scripts/list.sh |
piholeDebug.sh |
software | healthy | advanced/Scripts/piholeDebug.sh |
update.sh |
software | healthy | advanced/Scripts/update.sh |
piholeNetworkFlush.sh |
software | healthy | advanced/Scripts/piholeNetworkFlush.sh |
query.sh |
software | healthy | advanced/Scripts/query.sh |
api.sh |
software | healthy | advanced/Scripts/api.sh |
piholeLogFlush.sh |
software | healthy | advanced/Scripts/piholeLogFlush.sh |
piholeCheckout.sh |
software | healthy | advanced/Scripts/piholeCheckout.sh |
utils.sh |
software | healthy | advanced/Scripts/utils.sh |
gravity-db.sh |
software | healthy | advanced/Scripts/database_migration/gravity-db.sh |
12_to_13.sql |
software | healthy | advanced/Scripts/database_migration/gravity/12_to_13.sql |
3_to_4.sql |
software | healthy | advanced/Scripts/database_migration/gravity/3_to_4.sql |
14_to_15.sql |
software | healthy | advanced/Scripts/database_migration/gravity/14_to_15.sql |
19_to_20.sql |
software | healthy | advanced/Scripts/database_migration/gravity/19_to_20.sql |
7_to_8.sql |
software | healthy | advanced/Scripts/database_migration/gravity/7_to_8.sql |
2_to_3.sql |
software | healthy | advanced/Scripts/database_migration/gravity/2_to_3.sql |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
run_bash |
software | healthy | test/conftest.py:15 |
host |
software | healthy | test/conftest.py:31 |
mock_command |
software | healthy | test/conftest.py:48 |
mock_command_passthrough |
software | healthy | test/conftest.py:77 |
mock_command_run |
software | healthy | test/conftest.py:114 |
mock_command_2 |
software | healthy | test/conftest.py:143 |
run_script |
software | healthy | test/conftest.py:172 |
test_key_val_replacement_works |
software | healthy | test/test_any_utils.py:1 |
test_getFTLPID_default |
software | healthy | test/test_any_utils.py:18 |
test_setFTLConfigValue_getFTLConfigValue |
software | healthy | test/test_any_utils.py:28 |
test_supported_package_manager |
software | healthy | test/test_any_automated_install.py:16 |
test_selinux_not_detected |
software | healthy | test/test_any_automated_install.py:33 |
get_directories_recursive |
software | healthy | test/test_any_automated_install.py:47 |
test_installPihole_fresh_install_readableFiles |
software | healthy | test/test_any_automated_install.py:56 |
test_update_package_cache_success_no_errors |
software | healthy | test/test_any_automated_install.py:186 |
test_update_package_cache_failure_no_errors |
software | healthy | test/test_any_automated_install.py:200 |
test_FTL_detect_no_errors |
software | healthy | test/test_any_automated_install.py:228 |
test_FTL_development_binary_installed_and_responsive_no_err… |
software | healthy | test/test_any_automated_install.py:267 |
test_IPv6_only_link_local |
software | healthy | test/test_any_automated_install.py:288 |
test_IPv6_only_ULA |
software | healthy | test/test_any_automated_install.py:306 |
test_IPv6_only_GUA |
software | healthy | test/test_any_automated_install.py:329 |
test_IPv6_GUA_ULA_test |
software | healthy | test/test_any_automated_install.py:352 |
test_IPv6_ULA_GUA_test |
software | healthy | test/test_any_automated_install.py:376 |
test_validate_ip |
software | healthy | test/test_any_automated_install.py:400 |
test_address |
software | healthy | test/test_any_automated_install.py:405 |
test_package_manager_has_pihole_deps |
software | healthy | test/test_any_automated_install.py:441 |
test_meta_package_uninstall |
software | healthy | test/test_any_automated_install.py:456 |
mock_selinux_config |
software | healthy | test/test_centos_fedora_common_support.py:8 |
test_selinux_enforcing_exit |
software | healthy | test/test_centos_fedora_common_support.py:24 |
test_selinux_permissive |
software | healthy | test/test_centos_fedora_common_support.py:40 |
test_selinux_disabled |
software | healthy | test/test_centos_fedora_common_support.py:54 |
| Label | Layer | Status | Path |
|---|---|---|---|
1.2.3.4 |
network | healthy | gravity.sh |
5.6.7.8 |
network | healthy | gravity.sh |
8.8.8.8 |
network | healthy | automated install/basic-install.sh |
8.8.4.4 |
network | healthy | automated install/basic-install.sh |
208.67.222.222 |
network | healthy | automated install/basic-install.sh |
208.67.220.220 |
network | healthy | automated install/basic-install.sh |
4.2.2.1 |
network | healthy | automated install/basic-install.sh |
4.2.2.2 |
network | healthy | automated install/basic-install.sh |
8.26.56.26 |
network | healthy | automated install/basic-install.sh |
8.20.247.20 |
network | healthy | automated install/basic-install.sh |
9.9.9.9 |
network | healthy | automated install/basic-install.sh |
149.112.112.112 |
network | healthy | automated install/basic-install.sh |
9.9.9.10 |
network | healthy | automated install/basic-install.sh |
149.112.112.10 |
network | healthy | automated install/basic-install.sh |
9.9.9.11 |
network | healthy | automated install/basic-install.sh |
149.112.112.11 |
network | healthy | automated install/basic-install.sh |
1.1.1.1 |
network | healthy | automated install/basic-install.sh |
1.0.0.1 |
network | healthy | automated install/basic-install.sh |
127.0.0.1 |
network | healthy | automated install/basic-install.sh |
192.168.1.1 |
network | healthy | test/test_any_automated_install.py |
255.255.255.255 |
network | healthy | test/test_any_automated_install.py |
255.255.255.256 |
network | healthy | test/test_any_automated_install.py |
255.255.256.255 |
network | healthy | test/test_any_automated_install.py |
255.256.255.255 |
network | healthy | test/test_any_automated_install.py |
256.255.255.255 |
network | healthy | test/test_any_automated_install.py |
00.0.0.0 |
network | healthy | test/test_any_automated_install.py |
010.0.0.0 |
network | healthy | test/test_any_automated_install.py |
001.0.0.0 |
network | healthy | test/test_any_automated_install.py |
| Label | Layer | Status | Path |
|---|---|---|---|
12_to_13.sql |
data | healthy | advanced/Scripts/database_migration/gravity/12_to_13.sql |
3_to_4.sql |
data | healthy | advanced/Scripts/database_migration/gravity/3_to_4.sql |
14_to_15.sql |
data | healthy | advanced/Scripts/database_migration/gravity/14_to_15.sql |
19_to_20.sql |
data | healthy | advanced/Scripts/database_migration/gravity/19_to_20.sql |
7_to_8.sql |
data | healthy | advanced/Scripts/database_migration/gravity/7_to_8.sql |
2_to_3.sql |
data | healthy | advanced/Scripts/database_migration/gravity/2_to_3.sql |
8_to_9.sql |
data | healthy | advanced/Scripts/database_migration/gravity/8_to_9.sql |
13_to_14.sql |
data | healthy | advanced/Scripts/database_migration/gravity/13_to_14.sql |
17_to_18.sql |
data | healthy | advanced/Scripts/database_migration/gravity/17_to_18.sql |
18_to_19.sql |
data | healthy | advanced/Scripts/database_migration/gravity/18_to_19.sql |
11_to_12.sql |
data | healthy | advanced/Scripts/database_migration/gravity/11_to_12.sql |
5_to_6.sql |
data | healthy | advanced/Scripts/database_migration/gravity/5_to_6.sql |
10_to_11.sql |
data | healthy | advanced/Scripts/database_migration/gravity/10_to_11.sql |
9_to_10.sql |
data | healthy | advanced/Scripts/database_migration/gravity/9_to_10.sql |
15_to_16.sql |
data | healthy | advanced/Scripts/database_migration/gravity/15_to_16.sql |
1_to_2.sql |
data | healthy | advanced/Scripts/database_migration/gravity/1_to_2.sql |
4_to_5.sql |
data | healthy | advanced/Scripts/database_migration/gravity/4_to_5.sql |
6_to_7.sql |
data | healthy | advanced/Scripts/database_migration/gravity/6_to_7.sql |
16_to_17.sql |
data | healthy | advanced/Scripts/database_migration/gravity/16_to_17.sql |
| Label | Layer | Status | Path |
|---|---|---|---|
group |
data | healthy | advanced/Templates/gravity.db.sql |
domainlist |
data | healthy | advanced/Templates/gravity.db.sql |
adlist |
data | healthy | advanced/Templates/gravity.db.sql |
adlist_by_group |
data | healthy | advanced/Templates/gravity.db.sql |
gravity |
data | healthy | advanced/Templates/gravity.db.sql |
antigravity |
data | healthy | advanced/Templates/gravity.db.sql |
info |
data | healthy | advanced/Templates/gravity.db.sql |
domainlist_by_group |
data | healthy | advanced/Templates/gravity.db.sql |
client |
data | healthy | advanced/Templates/gravity.db.sql |
client_by_group |
data | healthy | advanced/Templates/gravity.db.sql |
regex_blacklist_by_group |
data | healthy | advanced/Scripts/database_migration/gravity/2_to_3.sql |
regex_whitelist |
data | healthy | advanced/Scripts/database_migration/gravity/2_to_3.sql |
regex_whitelist_by_group |
data | healthy | advanced/Scripts/database_migration/gravity/2_to_3.sql |
| Label | Layer | Status | Path |
|---|---|---|---|
automated install |
software | healthy | automated install |
test |
software | healthy | test |
advanced |
software | healthy | advanced |
Templates |
software | healthy | advanced/Templates |
Scripts |
software | healthy | advanced/Scripts |
database_migration |
software | healthy | advanced/Scripts/database_migration |
gravity |
software | healthy | advanced/Scripts/database_migration/gravity |
bash-completion |
software | healthy | advanced/bash-completion |
.github |
software | healthy | .github |
workflows |
software | healthy | .github/workflows |
| Label | Layer | Status | Path |
|---|---|---|---|
port:53 |
network | healthy | gravity.sh |
port:443 |
network | healthy | gravity.sh |
port:80 |
network | healthy | gravity.sh |
port:2001 |
network | healthy | automated install/basic-install.sh |
port:4860 |
network | healthy | automated install/basic-install.sh |
port:2620 |
network | healthy | automated install/basic-install.sh |
port:119 |
network | healthy | automated install/basic-install.sh |
port:2606 |
network | healthy | automated install/basic-install.sh |
port:4700 |
network | healthy | automated install/basic-install.sh |
port:10 |
network | healthy | .github/dependabot.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
smoke-tests |
cicd | healthy | .github/workflows/test.yml |
distro-test |
cicd | healthy | .github/workflows/test.yml |
main |
cicd | healthy | .github/workflows/merge-conflict.yml |
analyze |
cicd | healthy | .github/workflows/codeql-analysis.yml |
stale |
cicd | healthy | .github/workflows/stale_pr.yml |
sync-branches |
cicd | healthy | .github/workflows/sync-back-to-dev.yml |
stale_action |
cicd | healthy | .github/workflows/stale.yml |
remove_stale |
cicd | healthy | .github/workflows/stale.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::test |
cicd | healthy | .github/workflows/test.yml |
gha::merge-conflict |
cicd | healthy | .github/workflows/merge-conflict.yml |
gha::codeql-analysis |
cicd | healthy | .github/workflows/codeql-analysis.yml |
gha::stale_pr |
cicd | healthy | .github/workflows/stale_pr.yml |
gha::sync-back-to-dev |
cicd | healthy | .github/workflows/sync-back-to-dev.yml |
gha::stale |
cicd | healthy | .github/workflows/stale.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
password_literal::advanced/Scripts/api.sh |
security | healthy | advanced/Scripts/api.sh |
password_literal::advanced/Scripts/api.sh |
security | healthy | advanced/Scripts/api.sh |
password_literal::advanced/Scripts/api.sh |
security | healthy | advanced/Scripts/api.sh |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-ua6tenw4 |
software | healthy | /tmp/repobility-clone-ua6tenw4 |
| Label | Layer | Status | Path |
|---|---|---|---|
GITHUB_TOKEN |
cicd | healthy | — |
This page is publicly accessible at:
https://repobility.com/scan/522666b1-eddf-4a06-9f55-9898ff81e4c1/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/522666b1-eddf-4a06-9f55-9898ff81e4c1/
Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.