feeds.fun
News reader with tags, scoring, and LLM
What is it?
What it is
Feeds Fun is an open-source, self-hosted news reader that uses AI for automatic tag assignment and allows users to create custom rules for filtering and sorting news.
Why it exists
Created to address the lack of a customizable, AI-powered open-source news reader that meets specific user needs, offering self-hosting and advanced tagging capabilities.
Who should use it
Tech-savvy users, developers, self-hosters, and individuals seeking AI-powered news filtering with customizable tagging rules.
Who should avoid it
Non-technical users, those preferring fully managed hosted solutions, or users without need for advanced tagging/AI features.
How it works
A quick walkthrough in plain English
How feeds.fun works
Step 1 of 3
You interact with it
Open feeds.fun, send a request, or connect it to your stack.
Features
Advantages
- Highly customizable tagging and filtering workflow
- AI‑powered tag generation with OpenAI/Gemini or self‑hosted models
- Open‑source and self‑hosted for privacy
- Docker images simplify deployment
- Extensible via plugins and custom processors
- Supports both single‑user and multi‑user setups
- Active development with clear roadmap
- Rich configuration options for advanced users
- Built‑in database migration tooling
- Clear separation of API and workers for scalability
Disadvantages
- Requires external LLM API key for full functionality
- Complex configuration can be daunting for beginners
- No built‑in database backup strategy mentioned
- License is NOASSERTION, may raise compatibility concerns
- LLM usage may incur costs
- Requires Docker or Python environment setup
- Tag normalizers still under active development, may need tweaking
- Limited out‑of‑the‑box integrations beyond listed sources
- No native mobile app, only web interface
- Documentation heavy but may need more examples for advanced use
Installation
docker
Build some docker images: ./bin/build-dev-containers.sh
native
Backend:\npip install ffun\npython -m spacy download en_core_web_lg\nffun migrate\nuvicorn ffun.application.application:app --host 0.0.0.0 --port 8000 --workers 1\nffun workers --librarian --loader\n\nFrontend:\nnpm init -y\nnpm install feeds-fun\nnpm install --prefix ./node_modules/feeds-fun\nnpm run build-only --prefix ./node_modules/feeds-fun\ncp -r ./node_modules/feeds-fun/dist ./wherever-you-place-static-content
compose
Start the API server and frontend:\n# single-user mode\ndocker compose --profile single-user up -d\n\n# multi-user mode\ndocker compose --profile multi-user up -d
FAQ
How do I set up Feeds Fun locally for a single user?
Clone the repository, run `./bin/build-dev-containers.sh` to build Docker images, then start the services with `docker compose --profile single-user up -d`. The site will be available at http://feeds.fun.local/. After the containers are up, start the workers with `./bin/backend-utils.sh poetry run ffun workers --librarian --loader`. The frontend will be served automatically by the Docker setup.
What is the difference between single‑user and multi‑user mode and how do I switch between them?
Single‑user mode runs with a fixed identity provider and user ID, defined by the environment variables `FFUN_AUTH_FORCE_EXTERNAL_USER_ID` and `FFUN_AUTH_FORCE_EXTERNAL_IDENTITY_PROVIDER_ID`. Multi‑user mode requires a more complex setup, including an external identity provider (e.g., Keycloak) and different Docker profiles. To switch, stop the current services, then run `docker compose --profile multi-user up -d` for multi‑user mode, or `docker compose --profile single-user up -d` for single‑user mode.
How can I enable LLM‑based tag generation in Feeds Fun?
Add the `llm_general` processor to your tag processor configuration (usually `tag_processors.toml`). Ensure you have an OpenAI or Gemini API key set in the environment (`FFUN_OPENAI_API_KEY` or `FFUN_GOOGLE_GEMINI_API_KEY`). The processor will then use the LLM to generate tags for news entries. You can also configure custom models and token estimation via `FFUN_LLMS_FRAMEWORK_MODELS_CONFIG`.
Where do I configure environment variables for the backend and frontend?
Backend variables follow the pattern `FFUN_<component>_<option>` (or `FFUN_<component>_<option>__<suboption>`). Frontend variables use `VITE_FFUN_<component>_<option>` and must be set at build time. For example, to enable Sentry in the backend, set `FFUN_ENABLE_SENTRY="True"`. For the frontend, set `VITE_FFUN_ENABLE_SENTRY="True"` before running the build command.
How do I keep my database clean from old news entries?
Run the cleanup command periodically via cron: `ffun cleaner clean`. This will delete old entries from the database. It is recommended to add this to your cron tasks to prevent the database from growing indefinitely.
Featured in Videos
YouTube tutorials and walkthroughs for feeds.fun
Alternatives
Similar projects ranked by category, topics, and text overlap.