Self-hosted · local LLM · no cloud

Your news, ranked by a model that runs on your own hardware.

Cruxwire is a personal news dashboard in a single container. A local LLM scores, summarizes, and de-duplicates your feeds, clusters the same story across outlets, and quietly learns what you actually read.

Single container No Python dependencies No accounts, no tracking
cruxwire.home.lan
Cruxwire  · Tuesday, June 23 33 TODAY
Home 60Read Later 32History 12Settings
All 60 AI 24 Dev Tools 1 Tech 5 Productivity Gaming 25
AI

Local-First AI: Why Your Next Model Might Run at Home

AI
Agents Need Guardrails Before They Get Autonomy
Wirefront · 2h
Read laterDone
AI
When Not to Reach for an LLM: A Practical Checklist
The Relay · 2h
Read laterDone
AI
Usage-Based Billing Is Quietly Reshaping SaaS
Wirefront · 3h
Read laterDone
AI
Why 'Just Add AI' Keeps Stalling in Production
Northbound · 6h
Read laterDone

The Home view, a ranked, magazine-style digest.

Why it's different

A news reader that thinks locally and works for you

Most aggregators sort by recency or hand your reading habits to someone else's servers. Cruxwire does the ranking on a model you own, and keeps every byte on your network.

Local LLM scoring

Every article gets a 0–10 relevance score, a one-line summary, and a category from your own Ollama model. Nothing is sent to a third party.

Source-agnostic dedup

The same story across five outlets is clustered by meaning into one card, with the other coverage collapsed underneath. No more reading the same headline twice.

Learns what you read

A per-source affinity multiplier and an embedding-based "taste" boost float up the sources and topics you open, and sink the ones you dismiss. Automatically.

Homelab-native

One Docker container, a local volume, and an Ollama endpoint. No build step, no Python dependencies, no external services. Built for a private network.

What it is

A digest, not a firehose

Cruxwire fetches your RSS and Atom feeds on a schedule, then a background pipeline scores and summarizes each article, clusters duplicate coverage, and carries unread stories forward so nothing important slips off the bottom of the page while you weren't looking.

The result is a single ranked page that reads like a magazine: a hero story, a "Latest" grid, and an "Earlier this week" rail that stays balanced as you clear it.

RSS / Atom Relevance ranking TL;DR summaries Sticky retention
cruxwire.home.lan / read-later
Cruxwire · Read Later32 SAVED
HomeRead Later 32HistorySettings
Wirefront
Time-Series Storage at Scale: Pick a Store Before Cardinality Bites
wirefront.example/time-series-at-scale…
• TL;DRCopyRemove
The Relay
Designing Intelligent UX Without Chasing the Hype
therelay.example/intelligent-ux…
• TL;DRCopyRemove
Wirefront
Most Pilot Projects Stall: The Pattern Behind It
wirefront.example/pilots-that-stall…
• TL;DRCopyRemove

Read Later, saved articles with on-demand TL;DRs.

It tunes itself

Every source earns its place

Cruxwire tracks opens, saves, and dismisses per source and turns them into an affinity multiplier. Sources you engage with get boosted above 1.0×; ones you skip drop toward 0.5×. You can see and override every number in Settings.

Define your own categories with plain-English interest descriptions, those sentences are woven directly into the scoring prompt, so ranking reflects what you actually care about.

Affinity multipliers Editable categories Live settings
cruxwire.home.lan / settings / feeds
Cruxwire · Settings59 FEEDS
FeedsCategoriesFiltersModelsTuningRuns
SourceOpensSavesDismissesAffinity
Wirefront
wirefront.example/feed
11.134.4115.82.00×
The Relay
therelay.example/rss
7.115.393.40.50×
Pinegrove
pinegrove.example/rss
0.91.977.20.50×
Northbound
northbound.example/rss.xml
4.54.667.90.50×

Settings → Feeds, learned per-source affinity.

Under the hood

One pipeline, six steps, no surprises

Every run fetches, carries unread forward, scores, clusters, retains, and writes a fresh digest, atomically.

Fetch feedsRSS / Atom
Carry forwardkeep unread
Score + embedlocal LLM
Clusterdedupe
Retainfloor / ceiling
Write digestdigest.json

Run your own newsroom this afternoon

Two files, one Ollama endpoint, and docker compose up. Cruxwire seeds a starter feed list and generates your first digest in about a minute.