Skip to content

Living in the TUI

You’ve inherited feedmill — a self-hosted, terminal-first feed aggregator: a small Go CLI plus an HTTP sync server that pulls dozens of RSS, Atom, and JSON feeds, dedupes them, and serves a reading queue you read from the terminal and can run unattended on a cron. It mostly works. The parsers are a thicket — every feed source is shaped a little differently, and a few of them are quietly wrong. You’re going to spend a week with OpenCode turning this from something that runs into something you trust to run unattended, and almost all of that week happens inside one window: OpenCode’s TUI.

That matters more here than it would with a tool you bolt onto an editor. OpenCode is a full-screen, keyboard-first terminal app first and foremost — the TUI is the product, not a thin shell over it. Getting fluent in it is the difference between fighting the tool and flying. And a week-long build doesn’t fit in a single sitting or a single context window: you’ll close the laptop mid-refactor, come back the next morning, hit a wall on one feed parser and want to branch off without losing the thread, watch the context fill up and need to shed it without losing the plot. So this chapter is doing double duty. It teaches you the interface, and in teaching you the interface it teaches you the continuity layer — how a feedmill build survives across days, sessions, and context windows without you ever losing your place.

Five moves, each one a thing you’ll reach for without thinking by the end of the week:

  • The leader key and the command palette — OpenCode hangs most of its actions off a leader key (and a searchable palette) so they never collide with your terminal. Learn the one chord that unlocks all the others — The leader key and the command palette
  • Juggle and resume sessions — close it mid-parser-fix, reopen tomorrow, and pick up exactly where you stood; run two feed-debugging threads side by side without crossing wires — Juggle and resume sessions
  • Undo, redo, and compaction — step a bad edit back, walk it forward again, and let OpenCode automatically summarize a long thread before it overflows so a multi-day refactor never hits a wall — Undo, redo, and compaction
  • Tab between plan and build — outline an approach to the dedupe rewrite read-only, then switch into a writing agent and execute it, all in one continuous thread with distinct contexts — Tab between plan and build
  • Make the TUI yours — rebind the keys to match your muscle memory and pick a theme you can stare at for a week — Make the TUI yours

You could read these as five isolated tips. Don’t. The reason to learn them against a single running feedmill build is that they only really click when they’re load-bearing — when there’s a real refactor you don’t want to lose, a real second thread you need to keep separate, a real context window filling up under you. The leader key is just trivia until you’re three days into a build and your fingers find it on their own. Session resume is a feature on a docs page until it’s the thing that saves a half-finished parser fix you’d otherwise have re-explained from scratch.

By the end of the chapter the TUI stops feeling like a chat window you type into and starts feeling like a second editor pane — one you drive with your hands, that holds your place across the whole week of feedmill work, and that gets out of your way. That fluency is the foundation every later chapter stands on, because every later chapter is also lived inside this window.

Start with the leader key and the command palette.