Review the full article list
Open an issue’s article list to review accepted, rejected, and pending items by source.
Open source, self-hosted
Use Cyris to collect your RSS feeds and newsletters into one digest. Read selected articles first and check the full list for more. Run Cyris on your computer or deploy it to Cloudflare.
How it works
Choose your sources and processing depth. Start with the digest, then consult the full list when you need it.
RSS feeds and newsletters
Filter, summarize, or keep excerpts
Highlights, plus this run’s articles and pending items
For sources set to filter and tagged news, read reports on the same topic in one summary. Open the originals for details.
Article review
Open an issue’s article list to review accepted, rejected, and pending items by source.
Mark this article as accepted. With similarity filtering enabled, a new article at least as similar to an upvoted article as to a downvoted one passes this filter.
Mark this article as rejected. With similarity filtering enabled, future articles are excluded when their similarity to a downvoted article reaches the threshold and exceeds their similarity to an upvoted one.
To apply votes to future articles, configure an embedding model and enable Vote similarity. Without it, votes only change the accepted or rejected state of the article you vote on.
Sign-in is required to vote. On a custom domain, we recommend Cloudflare Access to restrict who can vote; Access is not available on workers.dev URLs.
Choose an AI provider, or none
Deployment
Copy the example files and choose your sources. Set provider = "none" for plain excerpts, or supply credentials for your selected AI provider. Keep the store backend set to json for local use.
git clone https://github.com/musingfox/cyris.git
cd cyris
uv sync
cp cyris.toml.example cyris.toml
cp .env.example .env
cp sources.example.yaml sources.yaml
# Edit settings and sources; choose none or supply your AI provider credentials.
uv run cyris doctor
uv run cyris run
Choose None to skip LLM calls. Other AI providers require credentials and may charge for usage; missing required credentials stop the run. Read the full setup instructions ↗