Skip to content

LunarCast

Field Value
Status Live on the App Store (2026-04-14) — active (maintenance + feature work)
Type Native iOS podcast client
Site https://lunarcast.app
App Store (US) https://apps.apple.com/us/app/lunarcast/id6761336207

Description

LunarCast is a native iOS podcast app positioned as calm listening: no ads, no aggressive discovery, optional curated feeds, RSS for any show, emphasis on playback and settings, and news kept separate from the player. It is a no-nonsense player that does not push shows on the user; it ships with a starter library aimed at people who already like moonshot / long-form tech content, without turning the whole product into a discovery engine.

Product principles

  • Calm UX — listening and controls first; separate space for news so it does not interrupt the player.
  • No account wallCloudKit sync without sign-up or sign-in.
  • Open inputs — add shows via RSS; optional curated feeds for those who want them.
  • No ad stack — clean playback positioning at launch.

Preloaded starter content (default library)

Ships populated with example subscriptions (user can change or remove):

  • Moonshots
  • Lex Fridman
  • The Innermost Looppodcast plus newsfeed article channel (news not mixed into the player experience)
  • A curated list of Elon Musk interviews across multiple podcasts (one coherent entry point, not algorithmic recommendations)

Tech & data

  • Platform: iOS (native). Source: moonlex/Moonmind (Xcode target Moonmind, App Store name LunarCast).
  • Sync: CloudKit (no separate account system).

Business

  • Launch: Free for everyone.
  • Later: Possible monetization if adoption warrants — TBD; core positioning stays no-BS listening.

Launch narrative

Origin: Frustration with the stock Apple podcast app while listening to Moonshots (late episodes, queue clutter, weak relisten flow) → build a calm player that respects the user’s queue and library. Public story + drafted X thread live in raw/lunarcast-summary.md.

Post-launch updates

  • 2026-04-16: Search bug fixed, build submitted to the App Store, approved in a few hours (fast review turnaround).
  • 2026-05-21: Subscription caching improved — library reads local-first; background RSS refresh instead of blocking reload on every open. Output device switching — route playback to AirPlay or other external outputs. Audience is tiny (me + my son); changes are daily-driver UX, not growth.

Raw sources

  • raw/lunarcast-summary.md

Marketing / Crusty (planned)

  • Goal: crusty acts as autonomous marketing for LunarCast — recurring X posts (listening tips, App Store + lunarcast.app links, changelog highlights), Grok-backed copy on Crusty's xAI-only stack, same X API–first pattern as intended for ayerobot-comic (possibly a different handle or your main account — TBD). Note: @ayerobotcomic unattended loop is paused (2026); LunarCast promo can still follow API or manual cadence — see projects/aye-robot-crusty-paused-x-automation.
  • Easiest path: define X contract (API vs manual) for Crusty, then clone scheduler + templates for LunarCast; keep human review until tone is locked.

Active maintenance (2026-05-20 → 2026-05-21)

2026-05-21 — shipped: Subscription caching and output device switching landed in a build.

  • Caching: Library reads local store first; feeds refresh in the background on a sane interval — no full show reload blocking every cold start.
  • Output routing: User can switch playback to AirPlay or other external output devices without leaving the player flow.
  • Scope: Two-user household (Darcy + son) — polish for calm listening UX.

2026-05-20 — original problem statement (resolved by above):

Subscription / library stability: App had been forcing a full reload of subscribed shows too often — e.g. reopening the app or returning to the library re-fetched instead of showing cached subscriptions + last-known episodes immediately. Goal: persist the user's show list and recent episode metadata locally (SwiftData / Core Data or equivalent), refresh feeds in the background on a sane interval, and only block the UI on first subscribe or explicit pull-to-refresh — not on every cold start. CloudKit sync should merge deltas, not require a network round-trip before the library renders.

Likely fix shape (engineering notes, not prescriptive):

  • Read path: library UI reads from local store first; network fetch updates the store asynchronously.
  • Write path: new RSS subscribe writes locally immediately, then kicks off background parse.
  • Stale-while-revalidate: show last synced timestamp; optional subtle "refreshing…" rather than empty state.
  • Regression check: airplane mode after one successful sync should still show My Shows with playable cached episodes.

Next on the stack — transcribe, query, share (2026-06)

Counterpoint: Apple Podcasts already ships searchable transcripts (tap to jump). LunarCast only wins if it differentiates on calm / offline / local-first / no-sign-in — not platform parity. Transcription is compute-heavy; poor accuracy or battery drain kills the calm thesis.

Moat: On-device transcript you own, tied to your subscribed library — deepen listening, not discovery.

Phase 1 — Core transcription (1–2 weeks)

  • Apple Speech framework (SpeechAnalyzer / SpeechTranscriber — WWDC 2025 on-device advances) as primary.
  • Flow: download episode audio → background transcribe; WhisperKit fallback for older iOS or accuracy edge cases.
  • Store transcript locally; CloudKit sync metadata (no account wall).
  • Trigger: first full listen/download or user-initiated; respect battery (limits on background work).
  • Timestamped transcript (word-level where possible).
  • Episode view: search bar → highlight + jump to playback time.
  • Offline-first — local index only for v1.

Phase 3 — Sharing

  • Export transcript (text / Markdown).
  • Share clip (audio segment + timed text) or social snippet from search hit.
  • No rehosting — respect RSS/podcast owner rights.

Phase 4 — Implementation notes

  • AVFoundation audio handling + Speech APIs.
  • Tie to existing local-first cache (Post-launch updates).
  • Test on starter shows (Moonshots, Lex, long-form accents).

Phase 5 — Polish & ship

  • Player UI: transcript toggle; library affordances.
  • App Store build; iterate with two-user household (me + son).
  • Later: unlimited transcripts premium; Crusty promo deferred (Marketing / Crusty).

Kill criteria: If transcript quality or battery cost fails daily-driver bar, pivot or scope down to search-only on cached text without full NotebookLM-style Q&A in v1.

Known gaps / next updates

  • Transcribe + query + share — active next major version (see above).
  • Post-launch: iterate from App Store reviews and user feedback; keep tools-and-repos URLs current if listings change region or ID.