Open source. Self-hosted. Yours.

A reading list
with an end.

Keep the sources you love. Lose the backlog. Cyris turns your RSS feeds and newsletters into a focused AI digest — so you can catch up, then get on with your day.

Cyris / Morning editionIllustrative digest

The world, a little quieter.

A few things worth your attention. The rest can wait.

Sometimes the best system is the one you delete.

A team trades a complex data pipeline for a simpler design. The useful takeaway: measure the work before adding another layer.

Long-form essay · Summarized

Smaller models, bigger possibilities.

Related coverage grouped into one entry, rather than another stack of tabs.

Keep the context. Skip the repetition.End of digest.

Sample content & layout — not a live digest.

Less collecting. More understanding.

Your corner of the internet.
Edited for your attention.

01 / Bring your sources

Follow people, not an algorithm.

Add the feeds and newsletters you trust. Your source list sets the agenda — not a recommendation engine.

RSS feedsNewsletters
02 / Set the depth

Not every source needs a deep read.

Use filter for high-volume sources, summarize for thoughtful essays, and fan for groups and newsletters you follow.

fan: keep up with your favorites. No AI scoring, filtering, or summarization. Each source gets its own Following section, with original titles, short excerpts, and links in feed order.

filtersummarizefan
03 / Read, then leave

A digest. Not another inbox.

Related news becomes one entry. Essays get room for context. Read the digest, then follow the original links when you want to go deeper.

Topic clustersHTML output

A filter, not a black box

Less noise.
Not less control.

See what didn’t make the cut.

Every digest links an uncapped listing of articles judged in that run, plus those still pending, grouped by source. Earlier runs keep their own listings.

Make “less of this” mean something.

With digest votes configured, accept or reject an article directly. Optional similarity filtering can suppress future articles close to your downvotes.

Keep the final say.

Review borderline articles in the triage UI. On the cloud setup, change sources, digest hours, and your AI provider in settings — without redeploying.

Your choice of AI

AnthropicGoogle GeminiOpenAICloudflare Workers AI

Same pipeline. Your choice of home.

Start small. Make it part of your day.

On your machine

Read your first digest.

Local files, your own schedule, no cloud deployment required.

  • Python 3.12+, uv, and your provider credentials
  • RSS fetched when you run the pipeline
  • JSON storage and HTML output on disk
Local quickstart

On Cloudflare

Let your digest come together.

A scheduled container, D1 storage, and an HTML archive on Pages.

  • Requires Workers Paid; usage charges may apply
  • Optional Workers for RSS buffering, votes, and email
  • Email-only newsletters require your own domain
Cloud setup guide
Local quickstart — from source to digest

Copy the example files, then edit your provider credentials and sources before running. Keep the store backend set to json for local use.

git clone https://github.com/musingfox/cyris.git
cd cyris
uv sync --dev

cp cyris.toml.example cyris.toml
cp .env.example .env
cp sources.example.yaml sources.yaml

# Edit the copied files with your settings, API key, and sources.
uv run cyris doctor
uv run cyris run

AI processing uses your provider account. Without a configured key, the pipeline falls back to plain excerpts. Read the full setup instructions ↗