Files
reddit-reader/README.md

3.3 KiB

reddit-reader

A Go TUI that monitors subreddits for interesting posts, filters them by keyword and LLM relevance scoring, generates bullet-point summaries, and presents everything in an interactive reading list.

Runs as a systemd user service for continuous monitoring. The TUI connects on launch via gRPC.

Architecture

Single binary, three subcommands:

  • reddit-reader serve — monitor daemon + gRPC server
  • reddit-reader tui — interactive reading list client
  • reddit-reader setup — first-run configuration wizard
Reddit API ──► Monitor ──► Keyword Filter ──► LLM Scorer ──► SQLite
                                                                │
                              TUI ◄──── gRPC ◄──── Server ◄────┘

Features

  • Keyword + LLM filtering — cheap regex/keyword pre-filter, then LLM relevance scoring against your interests
  • Local-first LLM — Ollama/llama.cpp by default, Mistral API as fallback
  • 5-bullet summaries — generated by the LLM for posts that pass the relevance threshold
  • Feedback loop — thumbs up/down on posts feeds back into relevance scoring as few-shot examples
  • Live streaming — new posts push to the TUI in real-time via gRPC server-side streaming
  • Systemd integration — user service for the daemon, socket activation for on-demand startup

Requirements

Install

go install somegit.dev/vikingowl/reddit-reader@latest

Or build from source:

git clone https://somegit.dev/vikingowl/reddit-reader.git
cd reddit-reader
go build -o reddit-reader .

Setup

reddit-reader setup

Walks you through:

  1. Reddit OAuth credentials
  2. LLM backend selection (auto-detects Ollama)
  3. Subreddits to monitor
  4. Your interests (used for relevance scoring)
  5. Optional systemd unit installation

Config is stored at ~/.config/reddit-reader/config.toml.

Usage

Start the monitor daemon:

reddit-reader serve

Or enable it as a systemd user service:

systemctl --user enable --now reddit-reader.socket
systemctl --user start reddit-reader.service

Launch the TUI:

reddit-reader tui

TUI Keybindings

Key Action
j/k Navigate up/down
enter Expand/collapse summary
s Star post
d Dismiss post
o Open in browser
+/- Vote on relevance (feeds back into scoring)
tab Switch view (Reading List / Starred / Archive / Settings)
g/G Jump to top/bottom
q Quit

Configuration

~/.config/reddit-reader/config.toml:

[reddit]
client_id = "..."
client_secret = "..."
username = "..."
password = "..."

[llm]
backend = "ollama"           # ollama | llamacpp | mistral
endpoint = "http://localhost:11434"
model = "ministral-3:8b"
relevance_threshold = 0.6

[interests]
description = "Go programming, Linux, NixOS, systems programming"

[monitor]
poll_interval = "2m"
max_posts_per_poll = 25

[grpc]
socket = "/run/user/1000/reddit-reader.sock"

All config values can be overridden with environment variables: REDDIT_READER_REDDIT_CLIENT_ID, REDDIT_READER_LLM_API_KEY, etc.

License

MIT