@shikakun/konpeito
v0.5.0
Published
A self-hosted feed reader for Cloudflare Workers and D1
Readme
Konpeito
Konpeito (金平糖) is a feed reader that runs on Cloudflare Workers and D1. It consists of an API server and a web frontend.
It makes a few deliberate trade-offs: each server serves a single user, who signs in with a passkey. The result is simple and lightweight. It covers the essentials: RSS, Atom, RDF, and JSON Feed subscriptions; full-text extraction with Mozilla Readability; an image proxy; and full-text search. It is also compatible with the Google Reader API, so it can serve as a backend for clients such as Reeder Classic.
See it in action in the live demo: sample.konpeito.shikakun.com
Requirements
- A Cloudflare account on the Workers Paid plan
- Konpeito uses Cloudflare Queues to fetch feeds, and Queues is not available on the Workers Free plan.
- Konpeito uses D1 as its database. At the scale of a single user, it is designed to stay within the free allowance included in the Paid plan.
- Node.js 20 or later for running the installer
- A web browser and device that support passkeys
Installation
npx @shikakun/konpeito@latest setupThe installer walks you through creating a Worker, a D1 database, and a queue in Cloudflare Queues, then deploys them. When the deployment finishes, it prints a URL containing a bootstrap token. Once you open that URL and register a passkey, you can sign in. Your answers are saved to ~/.config/konpeito/<worker-name>.json.
To run several servers on a single Cloudflare account, give each one its own Worker name, either at the installer's prompt or with the --name option. Each name gets its own Worker, D1 database, and queues.
npx @shikakun/konpeito@latest setup --name konpeito-alice
npx @shikakun/konpeito@latest setup --name konpeito-bobUpdating
npx @shikakun/konpeito@latest updateThis fetches the latest source code, deploys it, and applies any pending database migrations.
If you run several servers on a single Cloudflare account, pick one with --name, or update all of them with --all. Without either, the installer asks which one to update.
npx @shikakun/konpeito@latest update --name konpeito-alice
npx @shikakun/konpeito@latest update --allAccess tokens
With an access token, Google Reader API–compatible clients can use Konpeito as their backend server. You can create and manage tokens in the settings or from the CLI.
npx @shikakun/konpeito@latest token create
npx @shikakun/konpeito@latest token list
npx @shikakun/konpeito@latest token delete <ID>Access tokens can also be used to sign in to your server. If you lose your passkeys and can’t sign in, create a token that is allowed to sign in with token create --sign-in, and sign in with “Sign in with an access token” on the sign-in page. Then add a new passkey, and delete the lost passkey and the token you used to sign in.
License
Licensed under the MIT License, Copyright © 2026 @shikakun.
See LICENSE for more information.
