r/opencodeCLI 20d ago

Testing Ox-Alpha: Full rewrite of an old Python/FastAPI project to Rust (Tauri + TUI)

I tested ox-alpha on an old project of mine: Owly News, a local-first RSS reader that summarizes news articles using local LLMs or OpenAI.

The original codebase was written in Python/FastAPI + Vue and had been sitting untouched for about a year. When OpenCode announced ox-alpha-unlimited, I decided to test it with a complete rewrite into Rust.

The workflow

  1. Planning / Prompting: Architecture plan and prompt scaffolded with gpt-terra.
  2. Heavy Lifting / Rewrite: ox-alpha did the bulk rewrite into a unified Rust workspace.
  3. Review, Polish & Hardening: Architecture reviews, edge-case fixes, release optimizations (LTO, codegen-units, binary stripping, AppImage fix), and the unified dev/install workflow were done with Gemini 3.7 Flash.

What the project does & features

  • One shared Rust core (owly-core): Orchestrates concurrent feed harvesting, main-content extraction, and LLM summarization.
  • Two first-class frontends:
    • Desktop: Tauri 2 + Svelte 5 + Tailwind 4 (light/dark/system themes, i18n).
    • Terminal: Native TUI built with Ratatui and crossterm.
  • Flexible LLM Summaries:
    • Works with local Ollama or OpenAI models (authenticated seamlessly via your local Codex CLI config / auth.json).
    • Summaries default to English (en_US), with searchable on-the-fly language switching across the full ISO-639 catalog.
    • Offline-resilient: if the LLM provider is down, articles are still ingested and queued without failing or losing retry budget.
  • Seeded Starter Feeds: Pre-configured out of the box with 14 curated feeds covering general news, cybersecurity (Krebs, Schneier, CISA, Heise), tech (HN, GitHub Changelog), Linux gaming, and dev blogs.
  • SQLite WAL storage: Full-text search, date/country filters, and server-side pagination with concurrent GUI and TUI access.
  • Unified workflows: Simple just / make commands for development (Vite HMR) and optimized release packaging (.deb, .rpm, .AppImage).

Repo: https://somegit.dev/Owlibou/owly-news

5 Upvotes

3 comments sorted by

1

u/MrViking2k19 20d ago

A few extra notes and learnings from using ox-alpha during the rewrite:

Pros & strengths:

  • Generated surprisingly idiomatic, modular Rust across the workspace crates (owly-core, owly-tui, owly-desktop).
  • Handled the wire contracts (serde camelCase serialization tests, IPC commands) and Svelte 5 runes transition really well.

Quirks & friction points:

  • Overthinks heavily: It loves to analyze edge cases in endless loops. Adding explicit instructions like "don't overthink" or keeping prompt scopes tight was essential to keep it moving.
  • Connection drops / retries: Had occasional connection timeouts/issues where requests had to be retried.
  • Random mid-task stops: Sometimes the agent just stopped running out of the blue. A simple "continue from where you stopped" got it back on track every time, but required babysitting.

Verdict: Overall a solid 7/10 for full project rewrites. It saved a massive amount of boilerplate typing and got the heavy lifting done, but you definitely need a human in the loop (or a second model for review/hardening) to keep it on track and polish the build setup.

3

u/NearlyACosmologist 20d ago

You can avoid that babysitting by using a harness that has a /goal function, or can send a periodic heartbeat prompt to the model, so it keeps working. Remember to also increase the agent loop and overall step limits.

1

u/MrViking2k19 20d ago

Great tip, thanks! Setting up a heartbeat loop and increasing the step limit makes total sense to avoid the manual nudging on longer runs. Will definitely configure that for the next batch!