2 pointsby k-thropic9 hours ago1 comment
  • k-thropic9 hours ago
    I built a Claude Code plugin that streams live audio from Twitch, YouTube, and Kick in a tmux side pane with live chat, an animated waveform visualizer, and hotkey controls.

    The problem: Claude thinks for 30-60 seconds. I'd open a stream in another window, then forget Claude finished minutes ago. Now the stream lives inside my terminal — when Claude responds, I see it immediately.

    Stack: MCP server (Bun + @modelcontextprotocol/sdk), neo-blessed TUI, mpv for audio, streamlink for URL extraction, Twitch IRC for zero-config chat, Kick Pusher WebSocket.

    One thing I haven't solved: rendering actual video in the terminal. The current approach is audio-only with a text-based player UI. Terminals with sixel or kitty graphics protocol support can technically render images, and mpv has --vo=sixel and --vo=kitty, but I haven't tested how well this works alongside a blessed TUI in a tmux pane.

    Has anyone here done real-time video rendering in a terminal? Curious if sixel/kitty protocol, chafa, or timg could work for low-fps video in a tmux split — or if there's a better approach I'm not seeing. Demo (GIFs): https://x.com/kvreem/status/2038583421660999821