Skip to content

Larafeed

Private RSS, Atom and JSON Feed reader with passkey-only sign-in and Reeder-compatible sync APIs

Larafeed reader with feed categories and unread counts, an entry list and a Cloudflare Blog post open

Larafeed runs as one Cloudflare Worker with D1, KV and Queues and refreshes subscriptions in the background. Partial Google Reader and Fever APIs let other reader apps sync with it.

Add a website and Larafeed runs feed discovery, asking which feed you want when the page lists several. It reads RSS, Atom, RDF and JSON Feed. The reader has keyboard shortcuts and quick feed navigation. Entries are marked as read when you open them. Each entry shows an estimated reading time. You can rename feeds, sort them into categories, filter a subscription's entries by title, content or author, and star or archive entries. OPML import and export move subscriptions in and out. Sign-in is passkey-only, and administrators invite and recover users from /admin/users. Revocable app tokens let other clients connect through the Google Reader and Fever API implementations. The maintainer based them on FreshRSS and Miniflux and worked out the protocols by inspecting the API calls Reeder Classic made to Miniflux. One Worker, built with Hono and Effect, serves the React and Mantine front end from static assets and handles the API. D1 stores users, subscriptions, entries, sessions and durable job state, and a KV namespace backs the full-content feature. Three Queues process feed refreshes, OPML imports and favicon updates one feed at a time, while a cron trigger every 10 minutes schedules the feeds that are due. Refreshes use conditional HTTP requests. While a feed stays unchanged, the interval grows from 15 minutes up to 24 hours, and publisher cache hints can lengthen it. Failed refreshes are stored and shown in the interface. Optional features ship switched off: AI summaries through Workers AI and AI Gateway, image proxying and favicon normalization through the Images binding, and Turnstile on sign-in. The Deploy to Cloudflare button provisions the Worker, D1 database, KV namespace and Queues, then applies every D1 migration. The project dates from January 2023 and was rebuilt as a Workers application in August 2026.

Built for: Developers and small teams who want a private feed reader in their own Cloudflare account, Reeder Classic users included

What you can use it for

  • Read RSS and Atom feeds privately, alone or with a small team
  • Sync Reeder Classic with a self-hosted backend over the Google Reader or Fever API
  • Move subscriptions over from another reader with OPML import
  • Get short AI summaries of long articles from Workers AI
  • Follow product, industry and competitor blogs in one place

Deploy

The Deploy button asks for AUTH_ORIGIN and AUTH_OPERATOR_SECRET. After deploying, run the repository's auth:access-link Bun script from a local checkout; it uses the operator secret to create the first administrator's passkey enrollment link.

What it needs to run

  • Workers AIAI
  • D1 databaseslarafeed-template
  • ImagesIMAGES
  • KV namespacesFULL_CONTENT_KV
  • Queues (consumer)larafeed-template-feed-refresh
  • Queues (producer)larafeed-template-favicon-refresh, larafeed-template-feed-refresh, larafeed-template-opml-import

Good to know

Google Reader and Fever API support is partial, though the README says it works with Reeder Classic. The WebAuthn relying party comes from AUTH_ORIGIN, so settle on the final hostname before enrolling passkeys. The default configuration has no AI binding; turning on AI summaries means adding one and setting AI_SUMMARY_ENABLED. Larafeed has one maintainer and no tagged releases.

Cost on Cloudflare

Likely fits the free plan

Workers, D1, KV, Queues, cron triggers and the rate-limit binding all have Workers Free allowances. By default each 10-minute cron run reserves at most five due feeds, about 720 refreshes a day. A Queues message usually takes three operations, so that is roughly 2,200 of the 10,000 daily operations on Free. Each refresh keeps only the newest 20 entries to stay under the Free plan's per-invocation query limit. Optional features use their own quotas: 10,000 Workers AI Neurons a day and 5,000 unique Images transformations a month.

Source

The estimate is based on Cloudflare’s documented limits and the app’s configuration. What you pay depends on your usage and plan.

Where this comes from

An alternative to Feedbin, Feedly, Inoreader, Miniflux, NewsBlur, The Old Reader.

Listing history

  • Oct 2, 2026 · Larafeed listed
  • RenewHelper service list with totals, tag filters, prices, next due countdowns and renewal cycles

    Renewal reminders for domains, servers and SaaS plans, with lunar calendar cycles and a spending dashboard

    Deploy
    One-click
    License
    MIT
    GitHub stars
    392 stars
    Last commit
  • Renewlet dashboard with monthly spend, upcoming renewals, subscription cards and a spending distribution chart

    Self-hosted subscription ledger with renewal reminders in each user's timezone, budgets and calendar feeds

    Deploy
    One-click
    License
    MIT
    GitHub stars
    271 stars
    Last commit
  • MindSpark mind map about machine learning with colored branches, a learning checklist, two citations and an embedded network diagram

    Mind-mapping app with a two-way Markdown editor that saves maps to a private GitHub, Gitea or GitLab repository

    Deploy
    CLI
    License
    MIT
    GitHub stars
    151 stars
    Last commit