Make room for what you want to do.

Steadfast blocks distracting websites and apps on your Mac. Pick what to block, choose how long — and once it starts, it holds. Even if you quit.

Free and open source · Apple silicon · macOS 26 or later

i was spending about 6 hours a day on x.

so i built an app that locks me out.

How it works

Set it once. Then it holds.

01

Pick what to block.

Start with YouTube, Instagram, X, Reddit, TikTok or Netflix, add any of fourteen categories, or type any domain. Subdomains come with it. Add apps too — they close as soon as they start.

Steadfast asking ‘What distracts you?’ with X / Twitter selected

02

Choose how long.

Thirty minutes, a few hours, or a custom length up to 365 days. Name what the time is for if you like — it stays in view while the block runs.

New block: Ship my app, five websites, 2 hours

03

Commit.

Review exactly what’s blocked and when it ends. Nothing starts until you press the button.

Start Ship my app? Five websites, with the button Block for 2 hours

04

Make room.

Your purpose and unlock time stay front and centre. Close the window — the block keeps running.

Active blocks: Ship my app, 2 h left, five websites blocked

No pause button.
On purpose.

Once a block starts, you can’t pause it, shorten it or end it early in the app. It keeps working even if you quit — a separate background service holds your blocks and schedules, not the window.

Blocked apps that are already open get ten seconds to save, then close. Later launches stop before the app’s own code runs.

Steadfast’s menu bar panel: Blocking, 2 h left, Quit Steadfast Notice: Spotify is blocked. Steadfast unlocks it at 07:21. Making room for: Ship my app

Features

Everything it needs.
Nothing it doesn’t.

Daily website limits.

Give a site a daily budget. When it’s used up, the site is blocked until midnight — even if the app quits.

Scheduled routines.

Save a setup and run it weekly. Scheduled blocks start with the window closed and resume after sleep.

Routines: morning focus runs weekdays at 09:00; next tomorrow at 09:00

No account.
No analytics.

Your choices and history stay on this Mac.

Activity stays on your Mac.

An optional local record of app and website time. No screenshots, page titles or full addresses — and nothing is uploaded.

Where your time goes: Xcode 1 h 27 min, Google Chrome 1 h 5 min, Messages 22 min, Music 12 min

Your year, in blocks.

Progress draws the year as a ring of days with blocks. It counts coverage — not focus, and not time saved.

Progress: a ring of the year, 41 days with blocks this year

Fast to start again.

Reuse your last setup, start a favourite routine from the menu bar, or sync routines between Macs through a private shared folder.

⌘N New block ⌘↩ Start ⇧⌘N New routine ⌘F Find a website

Straight answers

What it is, and what it isn’t.

What Steadfast does

  • Blocks websites across browsers through your Mac’s own resolver, including subdomains.
  • Closes blocked apps at launch, matched by bundle identifier — renamed copies too.
  • Keeps blocks running after you close or quit the app.
  • Keeps everything local. No account, no analytics, no remote API.

What it doesn’t pretend to do

  • It’s a DNS blocker, not a packet filter. Encrypted DNS, a VPN’s DNS, cached addresses or direct IP connections can get around it.
  • It can’t stop your Mac’s administrator. It holds a choice you made; it doesn’t try to defeat you.
  • It doesn’t measure focus or promise productivity. That part is still yours.

Get Steadfast.

Free and open source. Paste this into Terminal.

$ curl -fsSL https://github.com/kartikkabadi/steadfast/releases/latest/download/install.sh | /bin/bash

The installer verifies the download, then asks for administrator access to install the background service. The release uses a self-signed certificate and isn’t notarized by Apple — read the installer first if you prefer.

Mac with Apple silicon macOS 26 or later License MIT