Mac Apps
audible-viewer-mac
What It Does
Section titled “What It Does”Native macOS audiobook player with synchronized word-level captions. Logs into Audible, pulls the library, plays AAXC audio, and renders pre-baked WhisperX transcripts as scrolling text with the current word highlighted. ADHD-friendly listen-and-read on the desktop.
When To Use
Section titled “When To Use”- When you want a real Mac player with native titlebar, AppKit-grade text rendering, AVPlayer audio sync, and dock/menu integration.
- When you want pre-baked transcripts with word-level timing accuracy that on-device live transcription cannot match.
- When the iPhone counterpart (
audible-viewer-ios) is too small a screen for sustained reading.
How It Works
Section titled “How It Works”The Mac app is the front. The Python sidecar in ~/apps/audible-viewer/ is the backend:
- Run the sidecar locally:
cd ~/apps/audible-viewer && python3 server.py 8080 - Launch
AudibleViewer.app. It hitshttp://127.0.0.1:8080for the library list, transcripts, audio, and cover art. - Pick a book. Audio streams via
AVPlayer. Transcript renders in SwiftUI with the current word highlighted.
Eventually the sidecar will be bundled inside the .app bundle and spawned on launch — currently it is run by hand.
Where It Lives
Section titled “Where It Lives”- Repo:
~/apps/audible-viewer-mac/ - Backend repo:
~/apps/audible-viewer/(Python sidecar — keeps doing the heavy lifting with WhisperX) - Project file generated by xcodegen from
project.yml— never editAudibleViewer.xcodeprojdirectly. - Tech: Swift 5.9, macOS 14+, SwiftUI, AVFoundation, Combine.
cd ~/apps/audible-viewer-macxcodegen generatexcodebuild -project AudibleViewer.xcodeproj -scheme AudibleViewer -configuration Debug buildopen ~/Library/Developer/Xcode/DerivedData/AudibleViewer-*/Build/Products/Debug/AudibleViewer.appOr open the xcodeproj in Xcode and hit Run.
Why Native Instead Of Tauri Or Electron
Section titled “Why Native Instead Of Tauri Or Electron”Picked Swift on 2026-05-03 specifically for the Mac polish — real titlebar, real toolbar, AppKit-grade text rendering for captions, native AVPlayer for sub-frame audio sync, dock icon, menu bar, real shortcuts. The web player in ~/apps/audible-viewer/ keeps living, but as the backend / server. The Mac app is the front.
Phases
Section titled “Phases”- Scaffold (current) — talks to localhost:8080, plays audio, renders transcript with word-level highlight.
- Audible login — Python sidecar grows
audible-cliintegration, app surfaces a Connect Audible flow. - Bundled sidecar — Python server ships inside the .app bundle, spawned on launch.
- Polish — dock badges for in-flight imports, library art grid, theme parity with the web version.
Known Gaps / Quirks
Section titled “Known Gaps / Quirks”- Today the sidecar must already be running on
localhost:8080before the app launches. Bundling is on the roadmap, not done yet. - Captions UI is rewritten in SwiftUI and does not match the web
index.htmlrendering pixel-for-pixel — intentional, the goal is to feel native. - The Mac app does not re-implement WhisperX; the Python side keeps doing the heavy lifting.