Retro dial-up internet manager for the macOS menu bar — because connecting to the internet should be a deliberate act, not an automatic reflex.
56k Screech lives in the menu bar and actually controls your Mac's Wi-Fi. When the internet isn't turned on via DialUp, it simply doesn't work. No silent syncs, no background notifications, no cloud quietly refreshing without your knowledge.
And of course — connecting is accompanied by an authentic dial-up sound ritual. 📟
56k Screech is menu-bar-only: it never shows a Dock icon or a Cmd+Tab entry.
| 📡 | Real Wi-Fi on/off (networksetup), reconciled every second against the actual radio state (catches manual toggles from the system menu too) |
| 🔊 | Dial-up handshake sound — bundled recording, with a ~12s procedurally generated fallback if it (or afplay) is unavailable |
| ⏱ | Live connection timer |
| ⚡ | Real-time download / upload speed |
| 📦 | Data transferred in the current session |
| 💰 | Cost per session — currency and price/hour are live-editable in Settings |
| 📊 | Stats: today / 7 days / 30 days / all time, plus the last 5 sessions |
| 🔔 | Notification Center alert (with a chime) after you've been online past a configurable time limit — includes a one-tap "Disconnect" button |
| 😴 | Billing and the alert timer pause across system sleep — waking up doesn't inflate your session cost or fire an overdue alert the instant you're back |
| ⚙️ | In-menu Settings: currency, price/hour, modem sound on/off, alerts on/off + limit, Wi-Fi interface picker |
| 🚀 | LaunchAgent for automatic startup |
The menu bar icon itself reflects connection state: 📵 offline, 📡 connecting, 📶 connected (idle), 🌐 connected (actively transferring data).
pip install 56k-screechgit clone https://github.com/muzzug/screech.git
cd screech
pip install -e .screech
# or, without the installed entry point:
python -m screech.appThe 📵 icon appears in the menu bar. Click → "Connect to internet".
The modem sound plays in full before Wi-Fi actually turns on — that's the ritual, not a hang. Expect a several-second delay between clicking Connect and the radio (and the status row) actually going live.
screech install-launchagentUninstall:
screech uninstall-launchagentMost settings are edited live from the app itself — click the Settings section in the menu to expand it:
- Currency and Price/hour — used to compute the cost shown live and recorded per session
- Modem sound — turn the dial-up handshake on/off
- Alerts — toggle on/off, plus a Limit (min) for how often you get a Notification Center reminder while connected
- Wi-Fi Interface — pick the right Wi-Fi device from a submenu populated
from
networksetup -listallhardwareports, instead of editing code; this is the fix if 56k Screech "does nothing" (or reports it couldn't turn Wi-Fi on) when you click Connect
Alerts use macOS Notification Center, so the first time you connect you'll be asked to grant 56k Screech permission under System Settings → Notifications. Each alert plays the standard notification chime — if you'd rather it stayed silent, turn off the sound for 56k Screech there.
Settings are persisted to:
~/Library/Application Support/56k Screech/config.json
Session history (used for the Stats section) is stored in:
~/Library/Application Support/56k Screech/sessions.db
A Reset Stats… item at the bottom of the Stats section permanently erases all recorded session history.
MIT © Ondřej "Muzzug" Kadlec