A self-tuning Pi-hole companion that automatically builds lean, region-aware blocklists based on real network behavior.
Tune My Hole analyzes historical DNS traffic from Pi-hole's FTL (Faster Than Light) query database, correlates observed domains with known malicious and tracking sources, and produces a small, high-confidence local blocklist.
This project favors signal over volume and intent over automation. No list hoarding. No guesswork. Just evidence-based blocking.
Instead of blindly blocking millions of domains, this approach produces a small, auditable rule set based on what your network actually resolves. The result is fewer breakages, faster lookups and blocking decisions you can reason about.
The analysis runs entirely offline. Query data never leaves your Pi-hole and blocking decisions remain predictable and transparent.
Tune My Hole is a Pi-hole companion agent that installs once and runs automatically.
systemd (recommended) or cronDownload the binary matching your system from the Releases:
sudo curl -L \
https://github.com/0x48piraj/tune-my-hole/releases/download/v0.1.0/tune-my-hole-aarch64-unknown-linux-gnu \
-o /usr/local/bin/tune-my-hole
sudo chmod +x /usr/local/bin/tune-my-hole
Note: Replace the target with
armv7-unknown-linux-gnueabihffor 32-bit Raspberry Pi OS.
Run once:
sudo tune-my-hole init
This will:
/etc/pihole/tune-my-hole.d/Tune My Hole now runs automatically.
Tune My Hole consumes one or more Pi-hole compatible domain blocklists.
Reference lists live in:
/etc/pihole/tune-my-hole.d/
Example (using oisd blocklist):
sudo curl -sSL https://big.oisd.nl -o /etc/pihole/tune-my-hole.d/oisd.txt
You can add multiple lists. Tune My Hole will combine them automatically.
Reference lists are inputs only and are never modified.
You normally don't need this, but you can run it manually:
sudo tune-my-hole run
This will:
Check what Tune My Hole has done:
tune-my-hole status
Example output:
Tune My Hole
────────────────────────
Managed domains: 4,832
Last run: 2026-02-09T03:00:00Z
Blocklist path: /etc/pihole/tune-my-hole.list
[!] No reference lists found.
Drop blocklists into:
/etc/pihole/tune-my-hole.d/
To completely remove Tune My Hole:
sudo tune-my-hole uninstall
This removes:
systemd timer / cron jobUser blocklists and Pi-hole data are untouched.
Tune My Hole:
No list hoarding. No blind automation. Just evidence-based blocking.
Small tuned lists > big lists.
Blindly stacking massive third-party blocklists is a common pattern and it mostly fails at what it claims to do. Huge lists consume memory, slow down lookups, increase rule churn and introduce false positives all while blocking large numbers of domains that your network will never resolve.
At the same time, keeping a tiny static list without context is just as ineffective. Blocking should be informed by actual network behavior, not guesswork or list hoarding.
Tune My Hole takes a disgustingly straightforward approach:
The goal is not maximum block count. The goal is correctness, performance and privacy.
$ claude mcp add tune-my-hole \
-- python -m otcore.mcp_server <graph>