PureSnitch Install
v0.1.0 — signed, notarized, free

See what your Mac is talking to.
Block what you don't trust.

Open-source application firewall for macOS. Built in the same style as Little Snitch. Free. MIT-licensed. Zero telemetry.

macOS 14+ Apple Silicon Signed + Notarized MIT License No telemetry
PureSnitch Network Monitor — world map, per-process bandwidth, summary panel

Why this exists

Three choices.
None of them great.

$59

Little Snitch

Gold standard UI. World map, rules, alerts. $59 per Mac, every Mac.

Free

LuLu

Excellent per-process kernel filtering. Spartan UI. No map, no graph, no blocklists.

Bundled

macOS Firewall

Blocks inbound only. Outbound traffic walks right out the front door.

PureSnitch is the fourth choice.

Little Snitch UI muscle memory. LuLu's price. Native SwiftUI, not a port. Signed and notarized by Apple. Source on GitHub, MIT, zero telemetry. Built because no one else had built it.

Features

Everything you'd expect.
Nothing you wouldn't.

Network Monitor with world map

Live map of every active connection. Sort by process, by domain, by country. Click any process to see its last five minutes of traffic.

Rules Manager (LS-style)

All Rules, Active, Deny, Temporary, Unapproved categories. Glob hostnames, CIDR, port. Priority-ordered. Search every field.

Connection Alerts

Default-deny pops a clean popup. Allow / Deny. Remember. Scope: process / domain / IP / port. Duration: 5 min / 1 hr / forever.

DNS over HTTPS

Built-in DoH to Cloudflare, Quad9, Google, or any endpoint. Local DNS proxy on 127.0.0.1:53 — every getaddrinfo passes through.

Blocklists out of the box

1Hosts, OISD, StevenBlack, HaGeZi. Subscribe, refresh on schedule, audit matches. Bring your own list URLs too.

pfctl kernel-level blocking

A puresnitch anchor in pfctl carries IP / CIDR / port rules. Kernel-level, regardless of which process initiated the connection.

Profiles that auto-switch

Default, Home, Public Wi-Fi, Lockdown. Different rule sets per network. Switches automatically when the SSID changes.

Menubar status item

Live up/down throughput. 5-minute traffic graph. Recent activity. Denied-count badge. One-click mode picker.

Zero telemetry

No analytics SDK. No crash reporter. No license check. Outbound is your DoH resolver + optional IP-to-country lookup (toggle-able).

How it works

Three things move bytes.

PureSnitch is a SwiftUI app talking over XPC to a small privileged daemon. The daemon does the actual work.

01 / DNS

DNS interception

A local DNS proxy on 127.0.0.1:53 answers every query. Blocklisted domains return NXDOMAIN; the rest forwards over DoH to the resolver you picked.

02 / pf

pfctl anchor

A puresnitch anchor in /etc/pf.conf carries IP, CIDR and port rules. Kernel-level enforcement, independent of which process started the connection.

03 / proc

Process observability

nettop streams per-process bandwidth, lsof snapshots active connections every 2s. Both feed the GUI's process list, map and graphs.

┌─────────────────────────────────────────────────────────┐
│                     PureSnitch.app                      │
│  ┌───────────────────────────────────────────────────┐  │
│  │  SwiftUI GUI                                      │  │
│  │  · Menubar status item  · Network Monitor window  │  │
│  │  · Rules Manager       · Connection Alert popups  │  │
│  └────────────────────────┬──────────────────────────┘  │
│                           │ XPC (Mach service)          │
│  ┌────────────────────────▼──────────────────────────┐  │
│  │  PureSnitchHelper (root daemon)                   │  │
│  │  · pfctl anchor   · DNS proxy   · DoH upstream    │  │
│  │  · blocklist sync · nettop/lsof · SQLite store    │  │
│  └───────────────────────────────────────────────────┘  │
└────────────────────────────┬────────────────────────────┘
                             │
        ┌────────────────────▼────────────────────┐
        │            macOS networking            │
        │   pfctl  ·  DNS  ·  bpf  ·  ess  ·  …  │
        └─────────────────────────────────────────┘

Comparison

PureSnitch vs the alternatives

PureSnitch Little Snitch LuLu macOS Firewall
PriceFree$59 / MacFreeBundled
LicenseMIT, open sourceCommercialGPL, open sourceApple, closed
World map / traffic graph
Rules manager (LS-style)basic
DNS proxy + DoH
Blocklists out of the box1Hosts, OISD, StevenBlack, HaGeZi
pf-based IP/CIDR blockingn/abasic
Per-process kernel filteringgated (NE entitlement)
Telemetrynonenonenonen/a
Auditable sourceyesnoyesno

If per-process kernel filtering is a hard requirement today, use LuLu — it's free, open source and has the Network Extension entitlement. If you want the Little Snitch UI without paying $59, PureSnitch is for you.

Screenshots

A real Mac app.

Network Monitor

Network Monitor

Per-process bandwidth, world map, summary pane.

Rules Manager

Rules Manager

All Rules / Active / Deny / Temporary / Unapproved, Rule Groups, Blocklists.

Install

Two minutes.

Homebrew

brew tap momenbasel/puresnitch
brew install --cask puresnitch

Direct download

Signed and notarized DMG from the Releases page. Drag into /Applications.

Download .dmg
First launch: macOS will surface the privileged helper in System Settings → General → Login Items & Extensions. Toggle "PureSnitchHelper" on. PureSnitch never asks for your password during normal operation.

Build from source

brew install xcodegen
git clone https://github.com/momenbasel/puresnitch.git
cd puresnitch
xcodegen generate
xcodebuild -project PureSnitch.xcodeproj -scheme PureSnitch \
  -configuration Release -derivedDataPath build build
open build/Build/Products/Release/PureSnitch.app

FAQ

Honest answers.

Is this a Little Snitch clone?+

An independent open-source alternative with a deliberately similar UI. The blocking engine, DNS proxy and matcher are all written from scratch. No Little Snitch source, assets or proprietary plist formats are used. "Little Snitch" is a trademark of Objective Development Software GmbH; this project is not affiliated.

Does PureSnitch send my traffic anywhere?+

No. Your DNS queries leave only as far as the DoH upstream you pick (Cloudflare by default — override in Settings). No telemetry, no analytics, no phone-home. IP→country lookups for the world map go to ip-api.com (free tier) and can be disabled.

Why isn't per-process blocking at parity with Little Snitch?+

Per-process blocking requires Apple's com.apple.developer.networking.networkextension entitlement, which is application-gated. The hook points exist in Sources/NetExt/; the entitlement must be granted by Apple. Until then, blocking is DNS-level + packet-level (pfctl), which catches anything that resolves a hostname — essentially everything except hardcoded-IP malware.

Will this run on Intel Macs?+

The release DMG is arm64 only. To build for Intel, set ARCHS = arm64 x86_64 in project.yml and rebuild.

Does it work alongside Pi-hole / AdGuard Home / NextDNS?+

Yes. Point PureSnitch's DoH upstream at your own DoH endpoint and PureSnitch becomes a per-device enforcement layer on top of your network-wide blocker.

Tailscale, WireGuard, ProtonVPN?+

pfctl rules apply at the kernel level so they work alongside VPN tunnels on utun* interfaces. The DNS proxy is a loopback bind, so it stays out of the way of VPN-pushed DNS unless you opt in via the "use PureSnitch as system DNS" toggle.

Take your Mac's outbound traffic back.

PureSnitch is free. Read the source. Fork it. Audit it.