A few weeks ago I wrote that I haven’t opened a browser for work in weeks. Agents handle the browsing: headless parity checks, autonomous code loops, API calls to DNS providers.

The obvious follow-up: if not the browser, then what?

The terminal. More than ever.

The Real Renaissance

Everyone’s focused on the wrong thing. Yes, Claude Code and Gemini CLI and Warp are having a moment. But AI isn’t the cause of the terminal renaissance. It’s a symptom.

The real shift: the terminal is the only interface where you can move at the speed of thought.

One context. Keyboard-first. No mouse hunting through menus. No context-switching between apps. No waiting for Electron to wake up. You think it, you type it, it happens. Minority Report, but text.

AI agents amplify this because they’re text machines. But the ergonomic advantage existed before them.

When friction exists in my workflow, I don’t work around it. I build a CLI to remove it.

My Terminal Stack

This isn’t theoretical. Here’s what “speed of thought” looks like in practice:

CategoryToolWhat it does
Cross-machine syncTetherDotfiles, Claude Code settings, packages sync encrypted. Background daemon.
Multi-repo orchestrationCustom Bun CLIOne command branches 12+ repos. Another switches envs. Another generates reports from git.
AI agent extensionsClaude Code plugins/headless:parity for migration testing, /dns:godaddy for DNS, /gemini-tools:visual for UI feedback.
Modern replacementsbat, fd, fzf, jq, ghBetter cat, find, fuzzy search, JSON, GitHub. No browser needed.
Issue trackingbd (beads)Yegge’s tracker. Dependencies as first-class. Git-synced. No Jira.
Databasesqlcmd in DockerFunnel analytics, seed data, migrations. No SSMS or Azure Data Studio.
Auto-rebuildpoltergeistWatches projects, rebuilds on change, runs in background.

The pattern: if I’m doing something repeatedly and it involves leaving the terminal, I automate it or replace it.

Why This Works

Composability. CLI tools pipe into each other. gh pr list | jq '.[] | .title' | fzf. GUI apps are isolated islands. You can’t pipe Figma into Notion. The terminal is a LEGO system.

Scriptability. Everything I do can become a script. Every script can become a command. Every command stays in muscle memory. GUIs fight automation. Terminals embrace it.

Single context. No app-switching tax. No “which window was that in?” No notification badges pulling attention. One pane. One focus. Flow state preserved.

Text is universal. It compresses well, versions well, diffs well, greps well. Every tool can consume and produce it. LLMs are text-prediction machines: the more text-native your workflow, the more AI can augment it.

The TUI layer

It’s not just CLIs. Terminal UIs are thriving: LazyGit for git operations, LazyDocker for containers, Yazi for file management. Rich, interactive, keyboard-driven. All the visual feedback of a GUI without leaving the terminal.

The GUI Fragmentation Problem

Meanwhile, the modern dev workflow has fractured:

  • Notion for docs
  • Figma for design
  • Linear for tickets
  • Slack for chat
  • VS Code for code
  • Chrome for everything else

Each app has its own keyboard shortcuts. Its own mental model. Its own notification system competing for attention. Each context switch costs cognitive load. By noon you’ve visited fifteen apps and written fifty lines of code.

The terminal unifies. One interface. One set of keybindings. One composable surface where tools talk to each other instead of existing in isolation.

What Terminal Doesn’t Solve

Terminal maximalism is its own trap.

Visual work needs visual tools. You’re not designing UI in vim. CSS layout issues require seeing. Some problems are spatial.

Collaboration defaults to GUI. Sharing a Figma link beats explaining tmux to a designer. When async collaboration matters, graphical tools win.

The learning curve compounds. Terminal power comes from accumulated knowledge: flags, pipes, keybindings, dotfile configuration. New developers face a steeper ramp.

The real risk

Don’t let terminal proficiency become an end in itself. The goal is shipping, not perfecting your dotfiles. A developer productive in VS Code ships more than one endlessly configuring neovim.

The Deeper Pattern

We’re not going backwards. We’re converging on what scales.

Text is the universal interface. Always has been. AI just made it obvious. The browser is becoming less text-native: SPAs that can’t be parsed, JavaScript-rendered content that agents struggle with. The web is moving toward machine-readable APIs (MCP, NLWeb) because the human-readable surface is hostile to programmatic access.

The terminal was machine-readable from day one.

When I run /headless:parity and parallel browser agents crawl two sites, I’m not watching them. When tether daemon syncs my dotfiles at 3am, I’m asleep. When poltergeist rebuilds on file change, I don’t notice. The terminal isn’t where I watch things happen. It’s where I tell things to happen and move on.

That’s the renaissance. Not AI in your terminal. Moving at the speed of thought from a single interface.


If friction exists in your workflow and you’re working around it, you’re leaving leverage on the table.

Build the CLI. Stay in flow.