A lightweight macOS menu bar app that displays live webcam feeds from Bay Area mountaintop cameras and fog.today in a floating panel.
- Menu bar app — lives in your menu bar, opens as a floating panel with a single click
- Local tab — fog.today satellite view alongside 4 key Bay Area cameras (Bolinas, Mission Peak, Mt Diablo, Mt Tam)
- More tab — 8 randomly selected cameras from a pool of 32+ AlertCalifornia cameras within 50 miles of San Francisco, shuffled each time you open the tab
- Timelapse playback — animates the last hour of frames for every camera
- Time travel — switch between live timelapse, current frame, and 1-hour-ago snapshot
- Background preloading — all camera data is fetched and cached at launch and refreshed every 60 seconds, so everything loads instantly
- Logo removal — on-device image cropping removes camera overlay logos
- Click-to-open — tap any camera to open its full AlertCalifornia page
- iOS-style UI — squircle (continuous corner radius) rounded rectangles on all image cells and the panel itself
Pulls live feeds and timelapse data from:
- AlertCalifornia public camera network (UC San Diego / CAL FIRE)
- fog.today satellite imagery
Camera coverage spans SF, Peninsula, Marin, East Bay, South Bay, Santa Cruz Mountains, and Sonoma/Petaluma — all within roughly 50 miles of San Francisco.
Download MacCam.dmg from Releases, open it, and drag MacCam to Applications.
Or build from source:
git clone https://github.com/ricburton/MacCam.git
cd MacCam
open MacCam.xcodeproj
Build and run in Xcode (macOS 13+).
| Button | Action |
|---|---|
| Timelapse | Animate all frames from the last hour (default) |
| Now | Show the latest frame, static |
| 1 Hour Ago | Show the oldest cached frame (~1 hour ago), static |
| Refresh | Re-fetch all camera data immediately |
- Pure Swift + SwiftUI hosted in an AppKit
NSPanel borderless+nonactivatingPanelstyle for menu bar popover behaviorCALayer.cornerCurve = .continuousfor iOS-style squircle on the panel- Ephemeral
URLSessionwith cache-busting for fresh frames - AlertCalifornia timelapse API (
1min/1-hour.json) for frame sequences CGImagecropping to remove camera logos (top 6%, bottom 3.5%)- Singleton
CameraCachewith background preloading and 60s refresh timer
MIT
