~/cases/owly-newsActive

Owly News

One Rust core and two interfaces, with optional AI around the reader.

Solo Engineer · Open Source Project · 2025 - present

→Architecture

owly-core owns domain behavior, SQLite persistence, refresh orchestration, events and the summarizer boundary. Tauri/Svelte and ratatui stay at the edges.

→Graceful degradation

Provider health gates summarization; unavailable providers leave articles retryable while feeds remain usable.

→Trade-offs

A shared core prevents behavioral drift, but frontend adapters must preserve the core boundaries.

  • Feeds enter the shared Rust core through ingest and refresh.
  • SQLite, search and events remain in owly-core.
  • Tauri/Svelte and ratatui frontends consume the same behavior; summarization is optional.
Owly News · shared core

→Decisions & trade-offs

DecisionWhyTrade-off
Summarization behind a traitThe feed reader remains useful when an LLM is unavailable.Pending work and retries need explicit state.

→Result

  • The architecture documents bounded refresh concurrency, SQLite WAL, typed Tauri events and a pure TUI state machine.

→Evidence

Shared behavior
Rust core

Desktop and terminal frontends

Local persistence
SQLite

WAL and concurrent access

LLM boundary
Optional

Feeds continue without summarization

→What I'd change today

AI is most useful here as a replaceable capability around a dependable reader core.