cd /news/ai-agents/show-hn-rexfeed-a-tech-feed-in-a-rex… · home › topics › ai-agents › article
[ARTICLE · art-163723] src=github.com ↗ pub= topic=ai-agents verified=true sentiment=↑ positive

Show HN: Rexfeed – A tech feed in a Rex side pane while your coding agent works

Developer Alpcan Aydın released rexfeed, an unofficial open-source add-on for the Rex terminal that opens a side pane of rotating tech cards — news, tips, product launches, and YouTube and Reddit videos — while a coding agent works. rexfeed hooks into Claude Code, Codex, OpenCode and Pi via each agent's lifecycle hooks, opening the pane when a prompt is sent and closing it when the agent finishes, and requires a Mac with Apple silicon, Rex, Homebrew and Python 3. The add-on is opt-in per session through /rexfeed-start and /rexfeed-stop, uses Rex's own rex CLI to open a rex split without modifying Rex, and is not affiliated with Rex maker Superlogical.

read8 min views2 publishedNov 4, 2026
Show HN: Rexfeed – A tech feed in a Rex side pane while your coding agent works
Image: Michielbdejong (auto-discovered)

Something worth a glance while your coding agent works, in a side pane of Rex. For Claude Code, Codex, OpenCode and Pi.

How it works • Install • Usage • Sources • Video • Config • FAQ

demo.mp4 #

<sub>Three Claude Code turns, sped up 4×: the pane opens as the agent starts and closes when it's done. No player? Download the video.</sub>

While your agent thinks, you wait. rexfeed fills that wait: a pane opens beside the agent and rotates short tech cards (news, tips, product launches, YouTube and Reddit videos). Images and videos play right in the terminal through the kitty graphics protocol. When the agent finishes, the pane s, so your attention goes back to the agent.

Note

rexfeed is an unofficial add-on, not made by or affiliated with Superlogical. It uses Rex's own rex CLI to open its pane and doesn't modify Rex.

rexfeed is opt-in per session. Turn it on in an agent session inside Rex; from then on the agent's hooks drive the pane:

Agent How it hooks in Opt-in
Claude Code UserPromptSubmit /Stop /SessionEnd hooks /rexfeed-start ,/rexfeed-stop
Codex the same hooks in ~/.codex/hooks.json (trust them once with/hooks ) !rexfeed on ,!rexfeed off
OpenCode server plugin + TUI plugin /rexfeed-start ,/rexfeed-stop (or!rexfeed on )
Pi extension ( before_agent_start ,agent_settled ,session_shutdown ) /rexfeed-start ,/rexfeed-stop
Event Pane
/rexfeed-start Turns rexfeed on for this session; no pane yet
Prompt sent (the agent starts working) Opens the pane
Agent finishes Closes the pane; the next prompt opens it again with unseen cards
Pane has focus s so you can read; resumes when focus leaves
30 cards shown Loads the next batch of unseen cards
No unseen cards left Starts a background refresh and closes
/rexfeed-stop (rexfeed off ) Closes and turns off for this session
Session ends (Claude Code, Codex, Pi) Closes

Without opting in the hooks do nothing, so other sessions stay untouched. State is kept per Rex pane in ~/.cache/rexfeed/state/. Claude Code, Codex and Pi run inside their pane, so the hooks read the pane id from $REX_BLOCK. OpenCode runs plugins in one shared background server, so its TUI plugin records which pane shows each session (~/.cache/rexfeed/opencode/<session>) and the server plugin passes that pane as rexfeed hook … --block <pane>. The pane is a rex split beside the agent's pane, opened without taking focus.

Cards are picked round-robin across sources, so one feed doesn't take over, and a card you've seen doesn't come back. When the cache is older than refresh_minutes, a prompt starts a fetch in the background.

You need a Mac with Apple silicon, Rex, at least one of Claude Code, Codex, OpenCode or Pi, Homebrew and Python 3 (the installer edits the agents' JSON config with it). For images and videos: ffmpeg and yt-dlp (Homebrew installs them for you).

With Homebrew:

brew trust --tap alpcanaydin/rexfeed   # Homebrew asks you to trust third-party taps
brew install alpcanaydin/rexfeed/rexfeed
rexfeed-setup

rexfeed-setup hooks rexfeed into your agents. Upgrades need nothing else: the hooks point at Homebrew's stable opt path.

From a release: download rexfeed-<version>-aarch64-apple-darwin.tar.gz from Releases, unpack it and run ./install.sh inside. Keep the folder where it is: ~/.local/bin/rexfeed links to the binary in it.

From a checkout (needs Rust):

git clone https://github.com/alpcanaydin/rexfeed && cd rexfeed
./install.sh
brew install ffmpeg yt-dlp   # if you don't have them

What the installer does #

  • Builds the binary (from a checkout) and links ~/.local/bin/rexfeed to it.
  • Tells you if ffmpeg oryt-dlp is missing.
  • Runs scripts/install-hooks.sh , which hooks into each agent it finds (command onPATH or config dir present). JSON files are backed up to*.bak-rexfeed first; running it again doesn't duplicate anything. Config dirs followCLAUDE_CONFIG_DIR ,CODEX_HOME ,OPENCODE_CONFIG_DIR (orXDG_CONFIG_HOME ) andPI_CODING_AGENT_DIR .
    • Claude Code: UserPromptSubmit ,Stop andSessionEnd hooks in~/.claude/settings.json ;/rexfeed-start and/rexfeed-stop in~/.claude/commands/ .
    • Codex: the same three hooks in ~/.codex/hooks.json .
    • OpenCode: plugins/rexfeed.js andplugins/rexfeed-tui/tui.js in~/.config/opencode , the TUI plugin listed intui.json (OpenCode 1) andcli.json (OpenCode 2), and/rexfeed-start and/rexfeed-stop incommands/ .
    • Pi: ~/.pi/agent/extensions/rexfeed.ts , which also registers/rexfeed-start and/rexfeed-stop .
  • Claude Code:
  • Migrates an older techfeed install: removes its hooks, commands and link, and moves~/.cache/techfeed to~/.cache/rexfeed .
  • Runs a first rexfeed fetch .

~/.local/bin has to be on your PATH for the Claude Code commands and !rexfeed on to find rexfeed.

Important

Codex runs new hooks only after you trust them: start Codex and run /hooks once. OpenCode loads plugins when its background server starts, so quit OpenCode once after installing (or run pkill -f 'opencode serve'). Pi picks up the extension on its next start.

In an agent session in Rex, run /rexfeed-start (Claude Code, OpenCode, Pi) or !rexfeed on (Codex). Send prompts as usual. /rexfeed-stop or !rexfeed off turns it off again.

Keys What
n``→``↓`` l``j Next card
p``←``↑`` h``k Previous card
space / resume
o /enter Open the link in your browser
q /esc /ctrl+c Close the pane

The link line is also an OSC 8 hyperlink, so ⌘-click opens it too.

rexfeed fetch                refresh the cache (~/.cache/rexfeed)
rexfeed on | off [--block B] enable or disable for the current Rex pane
rexfeed pane                 run the pane by hand (never s for the agent)
rexfeed list                 print cached items
rexfeed hook start|stop|end [--block B]
                             agent hook entry points; the pane defaults to $REX_BLOCK
  • News: Hacker News, Show HN, Lobsters, TLDR Tech/AI, The Verge, Ars Technica, TechCrunch, 9to5Mac, Hackaday, Changelog, JavaScript Weekly, This Week in Rust, GitHub Trending, dev.to
  • Reddit: r/programming, ClaudeAI, LocalLLaMA, commandline, rust, webdev, neovim, selfhosted, MachineLearning (one combined RSS request; Reddit rate-limits hard)
  • Products: Product Hunt
  • Blogs: Simon Willison, GitHub, OpenAI, Hugging Face, Vercel, Cloudflare, Rust, Latent Space, Smashing, Josh Comeau
  • Tips: Simon's TIL, tldr-pages, jbranchaud/til (both cloned locally, refreshed every 3 days)
  • Releases: Claude Code
  • Video: Fireship, Beyond Fireship, ThePrimeTime, Theo, Two Minute Papers, Computerphile, Low Level, Linus Tech Tips, Web Dev Simplified, Kurzgesagt

Cards without media get the page's og:image. Code in tips is syntax-highlighted.

Each refresh downloads the first seconds of the next few unseen videos in the background (YouTube through yt-dlp, Reddit from its v.redd.it/<id>/HLSPlaylist.m3u8 playlist, both with ffmpeg), and a video card only joins the queue once its clip is on disk. So a video starts the moment its card shows.

ffmpeg decodes the clip into small frames (at most 640px wide). Each frame is zlib-compressed and sent with the kitty graphics protocol under a new image id, and the previous frame is deleted only after the new one is placed, so there's no flicker. The terminal scales it to the card. Playback stops after video_max seconds, s with the pane, and has no sound. Images are converted with ffmpeg and drawn the same way.

~/.config/rexfeed/config.json, every key optional:

{
  "dwell": 10,
  "video_max": 20,
  "queue_size": 30,
  "refresh_minutes": 45,
  "pane_ratio": 38,
  "idle_close_minutes": 30
}
Key What
dwell Seconds a card without video stays
video_max Seconds of a video to play (and to download ahead)
queue_size Cards per batch
refresh_minutes Cache age that triggers a background fetch
pane_ratio Pane size passed to rex split --ratio
idle_close_minutes Minutes d (pane focused) before it closes

To keep rexfeed out of a single session, start it with REXFEED_OFF=1.

The pane doesn't open #

It only opens inside Rex after you opt in for the session, and only when there are unseen cards. Codex: run /hooks once to trust the hooks. OpenCode: restart it after installing so the plugins load, and keep the session open in its TUI (the TUI plugin tells rexfeed which pane it's in). Run rexfeed list to see the cache and rexfeed fetch to fill it. Errors go to ~/.cache/rexfeed/log.txt.

Videos don't play #

Check ffmpeg and yt-dlp are on your PATH. YouTube changes often, so brew upgrade yt-dlp fixes most failures.

Does it work outside Rex, or with other agents? #

It works with the agents Rex supports: Claude Code, Codex, OpenCode and Pi. It doesn't work outside Rex: the pane is opened with rex split and keyed on Rex's pane id. rexfeed pane runs in any terminal with kitty graphics, but nothing s it.

Does it send anything anywhere? #

No account, no telemetry. It fetches the public feeds above (and linked pages, for their og:image) and keeps everything in ~/.cache/rexfeed.

./uninstall.sh            # hooks, plugins, commands, ~/.local/bin/rexfeed
./uninstall.sh --purge    # also ~/.cache/rexfeed and ~/.config/rexfeed

It runs scripts/install-hooks.sh --remove, which takes out only rexfeed's own pieces: hook entries whose command contains rexfeed hook (or an old techfeed hook) in Claude Code's and Codex's JSON, backed up first, the OpenCode plugins and their tui.json / cli.json entries, the Pi extension and the /rexfeed-start / /rexfeed-stop commands.

── more in #ai-agents 4 stories · sorted by recency
── more on @rexfeed 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/show-hn-rexfeed-a-te…] indexed:0 read:8min 2026-11-04 · —