Most site blockers work by blacklisting distractions. That never worked for me, the internet is too big, and there’s always something new to waste time on.
I wanted the opposite: allowlist‑only browsing. Block everything by default, and explicitly allow only what I need.
So I built Sinkzone: a local DNS forwarder with two modes:
Monitor mode: lets all traffic through, but logs every domain so you can decide what to allow.
Focus mode: only allowlisted domains resolve; everything else is blocked (NXDOMAIN).
It’s open source, written in Go, and runs locally on macOS, Linux, and Windows. Works a bit like Pi‑hole, but instead of blocking ads, it blocks everything unless you say otherwise.
I’m curious if this would be useful in your workflow. If you try it, please let me know what breaks, what works well, and what you’d improve.
Currently, when I need to focus, I use a separate device configured to block everything except 2-3 domains I really need to minimize distractions. What really makes Sinkzone interesting is the scheduling with focus mode which can be incredible useful. My current firewall, OpenSnitch only lets you toggle all rules at once, so Sinkzone could be useful for allowing just the focus domains.
I think a useful feature to consider is having different profiles which would essentially be collections of domains to allow. So you could have "focus", but also "work" or "kids" as well allowing for more flexibility.
As I previously mentioned, I'm currently using OpenSnitch [1] as a system-level firewall that has a similar allowlist-only functionality. While the popups to allow/reject a connection initially disturb your workflow, after a short period of usage, you end up with a small collection of rules and you'll pretty much only see them again when browsing new websites. The advantage over DNS-level blocking is that you also get to block per process and not just device (or network). Since it uses eBPF, processes can't get around it by using a different DNS server or something. I'm really missing profiles and scheduling though, so I hope you can build a viable alternative to switch to!
[1]: https://github.com/evilsocket/opensnitch
reply