Terminal is having a second life
April 2026 • 196 words • 2 min read
I started using the terminal in 2001 because the internet lived on the other side of a telnet prompt. I keep using it because nothing that came after improved on the pipe. AI agents need determinism at the joints. And the Unix contract turns out to be exactly right for that.
In 2001 I started with telnet.
I was a student at BITS Pilani and telnet was simply how you got to the internet. I used Pine to send email. Lynx to browse. The world came to me as text on a black screen and I thought nothing of it. It was just how computers worked.
Then GUIs got faster, browsers got richer, and the terminal slowly became the thing you minimised and forgot about. Developers kept using it. Everyone else moved on.
I kept using it too. At Yahoo in 2005, the terminal was where the real work happened. I was working on a big data processing pipeline and my QA system was a pipe. Feed the output through grep, filter it with cut, join datasets with join, scan compressed logs with zcat and zgrep. Each tool did one thing. The intelligence lived in how you chained them. And if something went wrong, the tool that failed said so. The pipeline stopped. You knew exactly where to look.
It felt powerful then. I didn’t fully understand why.
I’ve spent the last two months building vrk – Unix-style tools for LLM pipelines – and the Yahoo pipeline keeps coming back to me.
Not as nostalgia. As explanation.
AI agents need to do things: fetch a URL, check it fits within a model’s token limit, redact secrets, call the model, validate the output. The problem is what happens when something goes wrong. A model doesn’t crash on bad input. It guesses. It fills in what it didn’t see with text that sounds right. You find out three steps later, or you don’t find out at all.
Agents, like the shell, are probabilistic at the edges but need determinism at the joints. The pipes are the joints.
That’s the insight I kept arriving at while building vrk. The contract that made grep useful – stdin in, stdout out, exit loudly on failure – turns out to be exactly the contract an agent pipeline needs.
I started using the terminal because it was all there was. I keep using it because nothing that came after improved on the pipe.