惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
量子位
H
Help Net Security
Microsoft Azure Blog
Microsoft Azure Blog
MongoDB | Blog
MongoDB | Blog
小众软件
小众软件
爱范儿
爱范儿
博客园 - 【当耐特】
Vercel News
Vercel News
S
SegmentFault 最新的问题
M
MIT News - Artificial intelligence
F
Fortinet All Blogs
Apple Machine Learning Research
Apple Machine Learning Research
GbyAI
GbyAI
博客园 - 叶小钗
博客园_首页
V
Visual Studio Blog
宝玉的分享
宝玉的分享
B
Blog
MyScale Blog
MyScale Blog
C
Check Point Blog
博客园 - 三生石上(FineUI控件)
L
LangChain Blog
V
V2EX

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店
GitHub - renatoworks/oh-my-reddit: Beautiful Reddit threa...
renatoworks · 2026-06-17 · via Hacker News: Show HN
oh-my-reddit

Beautiful Reddit threads, live in your terminal.

License: MIT CI

Install

You need Go (1.24 or newer). Install the command straight from the module:

go install github.com/renatoworks/oh-my-reddit@latest

That builds oh-my-reddit into your Go bin directory (~/go/bin by default). If that folder isn't on your PATH yet, add it (then open a new terminal):

echo 'export PATH="$PATH:$(go env GOPATH)/bin"' >> ~/.zshrc

Then start it by running oh-my-reddit. See Usage to jump straight to a subreddit or thread.

Prefer to work from a clone?

git clone https://github.com/renatoworks/oh-my-reddit
cd oh-my-reddit
go run .                       # run in place
go build -o oh-my-reddit .     # or build a one-off binary, then ./oh-my-reddit

Usage

oh-my-reddit                 # interactive: type a subreddit, a thread URL, or 'demo'
oh-my-reddit demo            # offline demo feed (no network, no login)
oh-my-reddit r/soccer        # jump straight to a subreddit's thread list
oh-my-reddit https://www.reddit.com/r/soccer/comments/<id>/...   # open one thread

Signing in

Reddit throttles anonymous access hard (lots of 429 and 403), so you need to be logged in. The first time you run it (unless you pass demo) you get a connect screen. Press enter and it finds a logged-in reddit session in your browser (Chrome, Safari, Firefox, Edge, across all profiles) and reuses it, no copy and paste. If auto-detect comes up empty, you can paste a Cookie: header by hand instead.

The session is cached locally, so later launches skip this screen. If more than one account is logged in, you choose by username. If it expires, oh-my-reddit refreshes it from your browser when it can, or sends you back here to reconnect. Press ctrl+l to log out anytime.

macOS notes

  • Chrome: must be logged in. The first read pops a one-time Keychain prompt, so click Allow.
  • Safari: your terminal needs Full Disk Access (System Settings, Privacy & Security, Full Disk Access).
  • Firefox: works with no prompt.

The session cookie is treated like a password: it's stored in your config dir with owner-only permissions, never in .env or the repo.

AI features (optional)

Set an OPENAI_API_KEY and the feed gets two AI reads. Export it in your shell so it works wherever you run the command, or put it in a .env file when running from a clone. Both run on gpt-4o-mini, show up as purple cards in the timeline, and are grounded only in the original post and the recent comments.

  • s, live sentiment: a one-line read on the thread's mood right now. Press s again and it covers only what is new since the last card.
  • a, ask: type a question and get a one-line answer from the thread. It won't invent facts, and it attributes opinions ("people are saying…"), since commenters can be wrong or joking.
export OPENAI_API_KEY=sk-...   # in your shell profile (~/.zshrc), works anywhere
# or, from a clone, put it in .env:  OPENAI_API_KEY=sk-...

Voice (macOS)

Voice reads the thread to you out loud. It uses the macOS say command, so it is macOS only. It is off by default. Press v in the feed to toggle it, and your choice is remembered for next time.

  • New comments are read aloud as they arrive. When a thread is busy it reads the newest and skips the backlog rather than falling behind.
  • AI cards (s and a) are spoken too, and narration pauses while they play so the two never overlap.
  • The line being read is highlighted so you can follow along.

Better voices

The default macOS voices (Daniel, Samantha) sound robotic. The Siri voices sound far more natural, and oh-my-reddit uses whatever your System Voice is set to. To switch:

  1. Open System SettingsAccessibilitySpoken Content (or press Cmd+Space and search "Spoken Content").
  2. Click the info icon next to System Voice.
  3. In the voice dropdown, search for "Siri" and download one you like.
  4. Set it as your System Voice, so every say command uses it.

Test it from a terminal:

How it works

  • No OAuth, no app registration. Comments come from a thread's JSON endpoint (?sort=new), which carries scores and parent_id for replies. If JSON is blocked it falls back to the RSS feed (flat, no scores). Subreddit listings work the same way.
  • Polling. The feed polls every 10 seconds. It uses conditional requests (If-None-Match and If-Modified-Since) so Reddit can answer 304 Not Modified when nothing changed, which is cheap and less likely to get throttled. On 429 or 5xx it honors Retry-After and backs off with jitter.
  • Graceful streaming. New comments are queued and released one at a time, each fading in, instead of dumping all at once.
  • Live votes. Each poll refreshes every visible comment's score.
  • Activity sparkline. The status bar shows a 14-bar sparkline of comments per 30 seconds. The buckets are fixed wall-clock slices, so past bars stay put and the window steps left every 30 seconds.
  • Demo mode plays a scripted match thread on a loop, so the chat clusters around what is "happening" (a goal sets off a rush, a bad call a pile-on), with no network or login.

Files

It's a single package main (flat, no subpackages), split by concern:

File What's in it
main.go entry point, .env loading, small shared helpers
model.go the Bubble Tea model, message types, construction, navigation
update.go the update loop: key handling and message dispatch
commands.go async tea.Cmds: polling, fetching, AI requests
narrate.go voice narration and the macOS say engine
feed.go comment-stream state, AI context, activity metrics
anim.go entrance and fade animations
view.go top-level view dispatch and shared layout chrome
view_auth.go the connect / sign-in screen
view_input.go the input screen (subreddit · URL · demo)
view_list.go the thread list: sort tabs, rows, sections
view_feed.go the comment feed, original-post modal, status bar
reddit.go fetch and parse threads and comments (JSON and RSS), backoff, caching
cookies.go find and decrypt the reddit session from your browser
ai.go OpenAI client, sentiment and ask prompts
recents.go saved recent subreddits and threads
settings.go persisted preferences (voice on or off)
browser.go open-in-browser helper
styles.go dark palette, Lip Gloss styles, wordmark gradient
sample.go demo comment generator

License

MIT. See LICENSE.


Made in Blueberry 🫐