Feedline#
Easily self-hosted, local-first RSS reader and podcast client with p2p sync, and optional ATProto based social discovery.
- Subscriptions, read/play state and other actions sync between devices p2p
- Media can be downloaded with analysis for skipping silence, and shared via public or private torrent swarm
- Optional atproto integration allows easy on-boarding, and sharing subscriptions/favorites/etc through an open social network
development#
- node.js 24+
- pnpm
- there's a justfile if you want
pnpm install
pnpm run dev
# - frontend at `http://localhost:4000` (or configured port)
# - backend server at `http://localhost:4001`, `ws://localhost:4001/_stream` (proxied through vite)
pnpm test
pnpm run types
pnpm run lint -- --fix
# production (heh)
pnpm run build
pnpm run start:prod
status: early#
- lots of neat ideas
- lots of getting nerd-sniped
The core realm protocol is working, but feed/podcast features are still being built. Don't use this yet.
re: LLM usage#
Do you know what the most recent coding LLMs are really, really good at? Having a two hour back and forth conversation about an idea you have, and then writing that up into a design document that's coherent enough to read and think about later.
Also, Opus 4.5 is really good at complicated typescript types, heh.
The way that I like to use LLMs is as rubber ducks; a mirror made of compressed internet that I can I talk to,
in order to figure things out. Like, I want a contributors Slack, but without any latency, social pressure or
conforming to another person's interest (or lack thereof). I'm not asking some rando on #feedline-at to
write my code, anymore than I'm asking Claude to, but it's really nice to have an impassioned conversation.
what I can confidently say:#
- I have touched every line of (live) code in this repository
- I can explain every line of (live) code in this repository
what I cannot confidently say:#
- I have written every line of code in this repository
- That every idea here is entirely of my own spontaneous creative genius
Take of all that what you will.
self-hosting#
feedline is designed to be self-hosted:
- hosted - run the web app from https://app.feedline.at, and we use the following:
- upstream CORS proxy
- upstream reader-mode proxy
- audio file downloads for analysis (when not marked private)
- home server - run a local server for your devices (via Docker/Podman)
- should support
mdns, client connects, gets PWA, server does syncing - "discovery" and other social features would still come from upstream if that's desired
ATProto integration#
feedline integrates with ATProto for:
-
easy cross-device bootstrapping
- if both devices are signed in through ATProto OAuth, we don't have to worry about invitation
-
social & discovery
- sharing subscriptions means we can track common ones, trending, all that good stuff
- sharing "shares" or "favorites" or whatever gives nice google-reader vibes
- share to bluesky / some sort of native commenting or whatever would be easy/useful
ATProto should never be required - offline first with a self-hosted server for fetching should always work.
license#
AGPL