← All work
Case Study·Live (open source)

UsageOwl

Open-source macOS menu bar app tracking AI subscription limits.

Visit usageowl.com
UsageOwl — preview cardUsageOwl — live site

The Problem

Flat-rate AI coding subscriptions hide their own limits — you find out mid-task, when a long run dies against the rate-limit wall. I wanted every provider's remaining quota in one glance.

What I Built

A zero-dependency Swift/SwiftUI menu bar app — five providers (Claude, ChatGPT/Codex, Kimi, Copilot, Moonshot) behind one plugin protocol — with 25/50/75/90% threshold alerts, reset countdowns, a transcript-priced spend engine, an offscreen-WebKit auth transport, and a signed, notarized 1.3 MB universal DMG.

Stack

SwiftSwiftUIWebKitSwiftPMNext.js 15GSAPCloudflare Pages

What it is

UsageOwl (usageowl.com) is a free, MIT-licensed macOS menu bar app that watches usage limits across AI coding subscriptions — Claude Code, ChatGPT/Codex, Kimi, GitHub Copilot, and Moonshot — with threshold alerts at 25/50/75/90% and to-the-minute reset countdowns. v1.0 shipped in July 2026 as a signed, notarized 1.3 MB universal DMG, open source at github.com/usageowl/usageowl.

Architecture

A Swift 5.10 / SwiftUI app with zero external dependencies — SwiftPM only, no Xcode project. Each provider is one Swift file behind a shared protocol, fetched concurrently and composed into a single template menu-bar image. Because Cloudflare binds session cookies to TLS fingerprints, authenticated calls run as fetch() inside a persistent offscreen WKWebView rather than URLSession — credentials never leave the Mac. A memchr-scanning spend engine prices Claude Code transcripts per model, deduping records a naive count over-reports by ~2.3x.

Why it skips the App Store

Auto-detection works by reading the credential files CLI tools already keep on disk — exactly what App Store sandboxing forbids — so UsageOwl ships as a Developer ID-signed, notarized DMG from a release script that refuses to publish unnotarized builds. Privacy is a merge policy, not a marketing line: no telemetry, no backend, and PRs adding outbound calls don't get merged.

Outcomes

  • v1.0 shipped: Developer ID-signed, Apple-notarized universal DMG, 1.3 MB
  • 5 providers, each a single Swift file behind one shared protocol
  • Spend engine dedupe fixes a naive transcript count that over-reports ~2.3x
  • MIT-licensed, zero telemetry, zero third-party dependencies
← Previousstaqd.aiNext →BitMEX Blog

Last updated: 2026-07-28