A chronology-first macOS RSS reader with local or user-selected cloud classification.
Articles synced from Feedbin appear in strict newest-first order. The selected classification engine assigns each article to one of your user-defined main categories, but it never reorders the timeline.
- Feedbin sync (full article content via the Feedbin API)
- Strict chronological timeline — newest first, within and across categories
- One main category per article, from a user-defined taxonomy
- Three classification providers:
- Apple Foundation Models — zero-config and fully on-device.
- OpenAI API — bring your own API key.
- Vercel AI Gateway — use Typesafe JEV with your AI Gateway key. Article titles, text, and category definitions go through Vercel to Typesafe.
- Full keyboard navigation
- Native macOS look and feel
- SwiftUI + SwiftData
- Apple Foundation Models / OpenAI API / Vercel AI Gateway (JEV)
- Swift 6, strict concurrency
- macOS 26.2+
Requires Xcode 26 and a Feedbin account.
make test-all # lint + build + unit tests
make build # build only
make test-focus # owner-run focus check
make test-ui UI_TEST=FeederUITests/FeederUITests/testVercelSettingsKeyboardSmoke # owner-run settings checkOpen Feeder.xcodeproj in Xcode to run.
After every make install, macOS shows one native keychain dialog per stored
credential — typically the Feedbin token and, if configured, the selected cloud provider's API key:
"Feeder wants to use your confidential information stored in
<key>in your keychain. Allow / Always Allow / Deny."
This is macOS's keychain access prompt, not an in-app dialog. Click Always Allow on each prompt for the current binary.
Why it re-prompts after each rebuild. The install target uses ad-hoc
signing (CODE_SIGN_IDENTITY="-"), which produces a fresh code-signing
identity (different CDHash) on every build. macOS keychain ACLs are bound to a
specific code-signing identity, so a freshly built binary is treated as a
different application even though the bundle ID is unchanged — the previous
"Always Allow" grant does not carry over.
For end users. This is a development-only phenomenon. A user who installs
the app once and does not rebuild sees each prompt exactly once and never
again. See STACK.md § 8 Logging & privacy for how secrets are stored.
Personal project, work in progress.