Overview
Discover what makes Leed powerful
Leed is a lightweight, self‑hosted RSS/ATOM aggregator written in PHP that prioritizes speed and minimalism. It decouples feed fetching from the user experience by running a cron‑driven background task (`action.php`) that pulls, parses, and stores feed entries in a MySQL database. When a user logs in through the web interface, Leed simply reads from this pre‑populated cache, ensuring instant page loads even on low‑powered hardware.
Cron‑based ingestion
OPML import/export
Responsive UI
Synchronization token
Overview
Leed is a lightweight, self‑hosted RSS/ATOM aggregator written in PHP that prioritizes speed and minimalism. It decouples feed fetching from the user experience by running a cron‑driven background task (action.php) that pulls, parses, and stores feed entries in a MySQL database. When a user logs in through the web interface, Leed simply reads from this pre‑populated cache, ensuring instant page loads even on low‑powered hardware.
Key Features
- Cron‑based ingestion: All network I/O and XML parsing occur in a scheduled PHP script, keeping the web server stateless during user sessions.
- OPML import/export: Enables migration from other aggregators and bulk subscription management via a standard XML format.
- Responsive UI: Built with vanilla PHP/HTML/CSS; no heavy JavaScript frameworks, making it trivial to host on shared servers or containers.
- Synchronization token: When invoking the ingestion script via HTTP (e.g.,
wget), a secret code protects against unauthorized triggers.
Technical Stack
| Layer | Technology |
|---|---|
| Runtime | PHP 7.2+ (CLI & Apache mod_php) |
| Database | MySQL / MariaDB (schema in install.php) |
| Web Server | Apache (recommended, Nginx unsupported as of v1.0) |
| Background | Unix cron (or systemd timers) calling action.php |
| Optional | Docker image available on GitHub Container Registry for quick deployment |
Leed’s codebase follows a classic Model–View–Controller pattern with procedural PHP. The models/ directory contains data access objects that wrap PDO calls, while views/ holds minimal PHP templates. There is no ORM; direct SQL queries are used for performance and simplicity.
Core Capabilities & APIs
- REST‑like endpoints:
action.php?action=…exposes a few read/write operations (synchronize, delete entry) that can be consumed by external scripts or custom front‑ends. - Webhooks: By configuring a cron job to hit an external URL after each sync, developers can integrate Leed with notification services (Slack, Discord).
- Plugin hooks: The
hooks/directory allows third‑party PHP files to be loaded during feed parsing, enabling custom filtering or enrichment (e.g., Markdown rendering of descriptions).
Deployment & Infrastructure
Leed is designed for self‑hosting on LAMP stacks. Its minimal dependencies mean it can run in a small Docker container:
docker run -p 8080:80 ghcr.io/leedrss/leed:latest
For scalability, the cron job can be distributed across multiple nodes by pointing each to a shared MySQL instance and using a unique sync code. Horizontal scaling is limited only by the database’s read/write throughput, as each node processes all feeds independently.
Integration & Extensibility
- OPML: Import/export facilitates integration with other aggregators or data pipelines.
- Custom feed processors: Developers can drop PHP scripts into
hooks/to transform RSS items (e.g., strip HTML, add tags). - API consumption: The lightweight REST endpoints can be wrapped by a GraphQL layer or consumed directly from a mobile app.
Developer Experience
- Configuration: A single
config.phpholds database credentials, sync code, and cron schedule. No complex YAML or JSON files. - Documentation: The README is comprehensive, with clear sections for prerequisites, installation, and cron setup. Inline comments in the code provide additional context.
- Community: The project is hosted on GitHub with an active issue tracker. Contributors include multiple maintainers, and the AGPL‑3.0 license encourages open collaboration.
Use Cases
| Scenario | Why Leed is a fit |
|---|---|
| Personal RSS dashboard | Fast, low‑resource front‑end with cron ingestion. |
| Internal knowledge base | Centralized feed aggregation for teams; OPML sync with existing tools. |
| Embedded in a larger PHP app | Reuse the action.php sync logic via CLI or HTTP; extend with custom hooks. |
| Containerized microservice | Deploy as a sidecar to fetch feeds for a headless CMS or static site generator. |
Advantages Over Alternatives
- Performance: By separating ingestion from rendering, page load times stay sub‑200 ms even with dozens of feeds.
- Simplicity: No JavaScript frameworks or heavy dependencies; a single PHP binary and MySQL suffice.
- Open‑source freedom: AGPL licensing ensures that any derivative must remain open, fostering community contributions.
- Ease of deployment: Works out‑of‑the‑box on shared hosting with Apache; Docker images reduce friction for cloud deployments.
Leed offers developers a lean, well‑documented foundation to build or integrate RSS aggregation into larger systems without the overhead of full‑featured readers.
Open SourceReady to get started?
Join the community and start self-hosting Leed today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Activepieces
Open-source AI automation platform for building and deploying no-code flows
dpaste
Self-hosted pastebin for quick code sharing

FreePBX
Open source PBX platform powering flexible, feature-rich VoIP solutions
Hemmelig
Secure client‑side encrypted secret sharing

WiKiss
Simple, PHP‑based wiki with quick setup and powerful plugins
AnonAddy
Anonymous email forwarding with custom aliases for privacy.