
Set the sites, keywords, and paths you want gone, then start a lock. A background daemon holds it until your timer runs out. Closing the browser doesn’t end it. Killing the extension doesn’t end it. Nothing does, until the clock says so.
Free, open source. Verified on Linux Mint + XFCE.
I’d install one, feel safe for a week, then find the exit: quit the app, pull the extension, reboot, wait out a grace period. Every blocker I tried assumed my willpower could be trusted right when things got hard — which is exactly the moment it can’t be. So I stopped looking for a better toggle and built something that doesn’t give me one.
The daemon survives you trying to get out of it.
It runs outside the browser. Closing Chrome doesn’t touch it. Removing the extension doesn’t touch it. If the browser or extension disappears while a lock is supposed to be active, the daemon closes the browser itself rather than let the protection quietly lapse.
Actively developed in the open — commits, issues, and roadmap on GitHub.
No cuts. The daemon reopens the blocked tab the moment the browser comes back — the lock never lapses.
Four steps, and only the first two are yours.
Domains, keywords, paths, subreddits — whatever you want gone, added however specific you need.
Pick a length, or lock with no end time at all. This is the last decision you get to make.
Runs outside the browser. Refuses to shut down while a lock is active, and closes browser processes rather than let it lapse.
No unlock button, because there isn’t one. When the timer ends, the blocked tab returns to where it was headed.
MindGate ships as an unpacked extension you load yourself. That isn’t a corner cut — Chrome Web Store submission is running in parallel, but v1 doesn’t wait on a review queue. It’s open source top to bottom, so you can read exactly what you’re about to run before you run it.
Installs git if it’s missing, downloads MindGate, and runs the setup. You’ll be asked for your password.
Open chrome://extensions and flip on Developer mode, top right of the page.
Click Load unpacked and select the extension folder the installer created. MindGate is now watching.
The extension is the only thing that knows what’s blocked. The daemon is the only thing that can’t be talked out of it.
Block a domain and every subdomain under it with a single rule.
Matched against the URL and the visible page text — on first load and on in-page navigation.
Block a specific path prefix under a domain, without touching the rest of the site.
A legacy rule type, matched directly against Reddit URLs.
Two processes, one job split in half. The extension is a sensor — the only thing that knows what’s blocked, matching URLs and page text as you browse. The daemon is the enforcer — it holds the lock and doesn’t trust the browser to still be there.
While locked, the daemon refuses its own shutdown command. It runs as a systemd service watching for the browser process — if Chrome or the extension disappears mid-lock, the daemon closes running browser processes rather than let protection quietly lapse.
What each piece actually does, and where it’s actually been tested.
Linux Mint (Debian-based) + XFCE, hands-on tested.
Daemon and watchdog only depend on systemctl, not a specific distro — untested.
Tested directly.
Share the same extension APIs, but each needs its own native-messaging host registration and its own copy of the extension loaded.
WebExtension and MV3 support differs enough to be separate work, not a port.
By design, not bugs — conscious scope boundaries, not gaps waiting to be silently fixed.
MVP1 protects against accidental or impulsive bypass — not a determined effort to route around the whole OS.
Stay in the loop
No accounts in the product itself — this is just an update list. Unsubscribe anytime.
Full boundary list — what’s defended against and what isn’t — lives in SCOPE.md.