Skip to content

kmatzen/lede

Repository files navigation

Lede

Watch your inboxes. Surface what matters.

A macOS menu-bar app that pulls notifications from Gmail, GitHub, Slack, and Outlook (plus Google + Outlook calendars), triages them with Claude, and pins the few items that actually need your attention to a floating panel.

Site: kmatzen.com/lede · Download: latest release · Privacy: PRIVACY.md

Install

Download Lede-X.Y.Z.dmg from the latest GitHub release, drag Lede.app to /Applications, and double-click to launch. The build is signed with a Developer ID and notarized by Apple, so Gatekeeper won't complain.

The first launch opens a 3-step welcome panel: connect Claude, connect a source, and you're done. After that the bell sits in your menu bar and refreshes every five minutes.

What's in the box

  • Five sources: GitHub notifications, Gmail (headers + snippet via the gmail.metadata scope), Slack mentions / DMs / unread channels, Outlook unread mail, and upcoming events from Google + Outlook calendars.
  • Multi-account: connect multiple Google, Microsoft, GitHub, or Slack accounts at once. Each account is its own credential, with its own row in Settings.
  • Two-stage triage: Haiku scores every item 0–10; Sonnet writes a 2-sentence briefing over the top items. Items you've already seen don't get re-scored.
  • Priority accordion with Critical / High / Medium / Low tiers, native notifications for the highest-scoring items, click-to-open, dismiss-to-hide, snooze, and quiet hours.
  • Cost-aware: per-model token tally and a "$X used this month" line in About. Typical usage runs well under $1/month.
  • Privacy-first: tokens in your Keychain, summaries cached on your Mac, no analytics, no servers we run. Details in PRIVACY.md.
  • Auto-update via Sparkle.

Build from source

macOS 14+, Xcode 15+ or a recent swift toolchain:

make run

That builds, signs with a stable identity, bundles into .build/debug/Lede.app, and launches it. State lives in ~/Library/Application Support/Lede/.

Tests:

swift test

Releases are cut by pushing a vX.Y.Z tag — GitHub Actions does the notarize / DMG / Sparkle-sign / publish dance. See SHIPPING.md.

Configuration

After install, click the bell → gear icon. The Settings panes walk you through each connection. A few notes:

  • Claude: paste an Anthropic API key from claude.com/settings. The optional subscription OAuth path is gated behind ~/Library/Application Support/Lede/config.json containing {"enableSubscriptionOAuth": true} — off in shipped builds because it's outside Anthropic's TOS for third-party apps.
  • Google (Gmail + Calendar): one-click Connect Google. The app's OAuth client is embedded; you'll see a one-time consent screen.
  • Microsoft (Outlook + Calendar): one-click Connect Microsoft, same pattern.
  • GitHub: OAuth device flow, no token to paste. PAT fallback under "Use a personal access token instead."
  • Slack: requires a one-time app registration in your workspace because Slack doesn't allow generic third-party reading apps. The Settings pane shows a step-by-step with a "Copy manifest" button.

Architecture

CoreEngine (@MainActor)
 ├── NotificationSource     (GitHub, Gmail, GoogleCalendar, Slack, Outlook, OutlookCalendar)
 ├── TriagePipeline          (content-hash cache → Haiku triage → Sonnet synthesis)
 │    └── AnthropicClient    (x-api-key OR OAuth bearer; 429 retry; prompt caching)
 ├── Notifier                (UNUserNotifications, click-to-open URL)
 ├── UpdateController        (Sparkle 2.x)
 └── Storage (actor)         (JSON state; secrets in Keychain)

All secrets live in the macOS Keychain under service com.lede.app. Triage cache, dismissed/notified sets, source health, and monthly usage live as JSON in the app's Application Support folder. The activity log (lede.log) is auto-truncated to 1MB.

Project layout

Sources/Lede/         — the app (~5K LOC of Swift)
Tests/LedeTests/      — unit tests
Resources/            — Info.plist, AppIcon.icns, entitlements, Slack manifest
docs/                 — the website at kmatzen.com/lede
scripts/              — dev cert + icon generation
.github/workflows/   — CI (build + test) and Release (tag → notarized DMG)
SHIPPING.md           — release ops: how to cut a release, required secrets
PRIVACY.md            — privacy policy (also rendered on the website)

License

MIT © 2026 Kevin Blackburn-Matzen.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors