macOS Widgets Stats from Website v0.12.2 · release-ready

NATIVE · WIDGETKIT · MACOS 13+

Any number. Any webpage. On your desktop.

A native macOS widget that scrapes any value from any logged-in page — your Codex spend, your AWS bill, your bank balance, the number on whatever dashboard you keep refreshing — and pins it to your desktop. Configure it once, glance forever.

MIT-licensed. Direct-download releases are signed, notarized, and Sparkle-updated once the first public release is approved.

01 · WHY

Stop refreshing the dashboard.

You have a number you check too often. The Codex usage page. Your AWS bill. The OpenAI dashboard. Your bank balance. Maybe five different ones, scattered across five different tabs in five different sessions. Each glance costs a context switch you didn't ask for.

Every dashboard already knows the value. It's right there in the DOM. The friction isn't computing the number — it's getting your eyes on it without leaving what you're doing.

The fix: a native macOS widget that signs into the page as you, finds the value, and pins it to your desktop. Configure once, glance forever.

02 · HOW IT WORKS

Three steps. Then never again.

  1. 01

    Add the tracker.

    Open the app, click + Add tracker, point it at the URL of whatever dashboard, account page, or admin panel holds the number you care about.

  2. 02

    Click the value.

    The in-app browser opens. Sign in like you normally would. Hit Identify element, hover the value until it lights up, click. The app captures the selector and a screenshot region — that's the entire setup.

  3. 03

    Watch it update.

    Pick a widget template, drop it on your desktop or in Notification Centre, and the value refreshes in the background. Sites change layout? The app's self-heal flow walks you through re-picking the element — or hand it to your AI agent over MCP.

03 · WHAT YOU GET

Built for the way macOS actually works.

Track any number

If a value lives in the DOM, the widget can show it. No API. No vendor list. Your trackers are configured per-page by you.

12 curated templates

Big number, sparkline, gauge ring, watchlist, dashboard 3-up, snapshot tile, mega grid. Small / medium / large / extra-large. See the catalog →

Multi-widget configurations

Compose as many widgets as you want, each with its own template, size, and tracker bindings. One stack for AI spend, another for finances, another for your DAW exports.

Headless WKWebView

Background scrapes use the same persistent browser profile as the in-app sign-in. Cookies, sessions, and passkeys persist across launches. No third-party server, no Chromium bundle.

Persistent sign-in

One named WKWebsiteDataStore shared between the visible browser and the headless scraper. You sign in once. The widget keeps reading.

Embedded MCP server

Your agent — Codex CLI, Claude Code, anything that speaks MCP — can list trackers, trigger scrapes, fix selectors, and compose widgets, end-to-end. More →

Self-heal flow

Sites change layout. The widget keeps showing the last-known value, then nudges you to re-pick the element — or applies a regex fallback so something always lands on screen.

App Group data plane

Trackers, history, and snapshots live in a shared App Group container. Main app writes; widget extension reads; nothing crosses the network unless you point a tracker at one.

Native, no Electron

SwiftUI + WidgetKit. Real macOS widgets, real launchd-friendly background activity, real OS-tier privacy. Tiny binary, zero runtime overhead.

04 · TEMPLATE GALLERY

Twelve templates. Pick a shape, bind your trackers.

Each template is laid out to Apple's verified WidgetKit dimensions (155 / 329 / 690 pt wide), with HIG-compliant margins and Dynamic Type-friendly typography.

Small155 × 155 pt

Medium329 × 155 pt

Large329 × 345 pt

Extra-Large690 × 318 pt · macOS only

05 · INSTALL

Download, build, or follow the release channel.

The renamed repo is wired to GitHub Releases, a stable latest ZIP alias, and a Sparkle appcast. The first public ZIP appears after the signing/notarization secrets are added and a release run is approved.

PRIMARY · DIRECT

Latest signed ZIP

Stable link that follows whichever GitHub Release is marked latest. Existing installs use Sparkle from the same release pipeline.

Download MacosWidgetsStatsFromWebsite-latest.zip Requires the first approved public release
DEV · SOURCE

Build from source

Clone, regenerate the Xcode project with XcodeGen, then build the app, widget extension, or CLI schemes locally.

git clone https://github.com/EthanSK/macos-widgets-stats-from-website &&
cd macos-widgets-stats-from-website && brew install xcodegen && xcodegen generate
FUTURE · DISTRIBUTION

App Store / Homebrew

Mac App Store/TestFlight needs separate App Store Connect setup. A Homebrew tap can follow once the direct signed release is stable.

Assessed, not enabled yet

06 · MCP INTEGRATION

Hand the trackers to your agent.

The main app embeds an MCP server. Any external client — Codex CLI, Claude Code, or any tool that speaks MCP — connects over stdio or a UNIX socket and operates the entire tracker fleet.

~/.codex/config.toml
# MCP server config for Codex / Claude Code
[mcp_servers.macos_widgets_stats_from_website]
command = "/Applications/macOS Widgets Stats from Website.app/Contents/MacOS/macos-widgets-stats-from-website"
args = []
enabled = true

Tool catalog

  • list_trackersAll trackers with current values + status.
  • add_trackerAdd a tracker by URL + selector.
  • identify_elementHuman-in-the-loop: opens the in-app browser at url, prompts you to pick, agent polls.
  • trigger_scrapeForce-refresh now.
  • update_selectorApply a self-heal fix from the agent.
  • list_widget_configurationsCompose widgets, change templates, reorder.
  • export_selector_packSerialize a tracker for sharing.

The app never spawns AI binaries. Agent involvement always runs in your own agent's session, with your own API keys.

07 · PRINCIPLES

What the app refuses to do.

No third-party server.

Cookies, sessions, and scraped values stay on your Mac. The app's only network calls are the ones you point it at.

No AI binaries bundled.

Agent involvement is always opt-in via MCP, in your client. The app doesn't ship Codex, Claude, or any other model.

No vendor lock-in.

There is no curated "Codex template", "Claude template", "AWS template". You point a tracker at any URL with a value. The 12 templates are about shape, not content.

No fake refresh budget.

macOS WidgetKit has no daily reload cap (it's iOS-only). The app refreshes the widget whenever a meaningful new reading lands — not on an arbitrary throttle.