Skip to content

LunarCast

Field Value
Status Live — demand-gated (2026-06-14) — no new features until user demand justifies it
Availability Free · publicApp Store, lunarcast.app, open source on GitHub
Portfolio One of two live iOS apps on the App Store (with projects/metronaut)
Type Native iOS podcast client
Repo dmoniker/moonlex (MIT, open source)
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: dmoniker/moonlex — Xcode target moonmind, App Store name LunarCast.
  • Sync: CloudKit (no separate account system).
  • Secrets: optional Podcast Index keys live in gitignored LocalSecrets.swift (not in the public repo).

Business

  • Free for everyone — no paywall, no ads, no IAP today.
  • Actively supported — App Store updates and issue response via lunarcast.app/support.
  • Later: Possible monetization only 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.
  • 2026-06-07: App Store update shipped (open-source repo hygiene + rotated Podcast Index credentials in local build). lunarcast.app footer links GitHub. Posture: free, publicly available, actively maintained.
  • 2026-06-21: Metronaut joined LunarCast as Darcy's second live iOS app on the App Store → projects/metronaut

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)

Share: Episode sharing is live (2026-06-07).

Deferred — transcription + AI episode tools (2026-06-13)

Status: Demand-gated (2026-06-14)not building new features until user demand justifies the work. Removed from top-priority product building alongside Happy Body and Rusty Cage (now life & identity).

Original vision: Transcripts + AI to discuss the episode, extract to-do lists, actionable takeaways, NotebookLM-style querying — the real product leap beyond Apple Podcasts' tap-to-jump transcripts.

Why deferred (not killed):

  • LunarCast is free with no IAP today — any cloud LLM feature implies open-ended token cost subsidized by Darcy for all users. Not acceptable at current scale/posture.
  • On-device transcription alone (Apple Speech / WhisperKit) is feasible but doesn't deliver the vision without a capable local model for summarization, Q&A, and action extraction.
  • Gate: Revisit when Apple ships on-device models (Foundation Models / Apple Intelligence class) powerful enough for episode discussion + structured takeaways entirely on devicezero marginal API cost, aligned with calm / no-sign-in / local-first thesis.

Until then: Demand-gated — bug fixes only if something breaks. No feature sprints, no calm-UX polish unless a user reports pain.

Preserved plan (when gate clears):

Phase Scope
1 — Transcribe Apple Speech primary; WhisperKit fallback; local store + CloudKit metadata
2 — Search Timestamped transcript; jump-to-playback
3 — Local AI On-device only: discuss episode, to-dos, takeaways — no cloud tokens for free tier
4 — Share/export Text/Markdown export; clip sharing; respect RSS rights

Counterpoint (unchanged): Apple Podcasts already has searchable transcripts. LunarCast only wins with local-first + owned data + AI depth — not parity transcribe-only.

Kill criteria (if gate never clears affordably): Stay a calm player; do not ship half-baked cloud AI or a paid tier just to fund tokens unless adoption explicitly warrants it.

Archive — pre-deferral engineering notes (2026-06)

Inactive until Apple local-model gate clears. Transcription is compute-heavy; moat = on-device transcript you own.

  • Phase 1: Apple Speech; background transcribe; WhisperKit fallback; local + CloudKit metadata.
  • Phase 2: Timestamped search; offline index.
  • Phase 3: Sharing — export text/Markdown; share clip; no rehosting.
  • Phase 4: AVFoundation + Speech; tie to local-first cache.
  • Phase 5: Transcript toggle UI; App Store ship; two-user household test.

Known gaps / next updates

  • Transcription + local AIdeferred (see above); not active engineering.
  • Post-launch: iterate from App Store reviews and user feedback; keep tools-and-repos URLs current if listings change region or ID.