---
title: Terminal is having a second life
date: '2026-04-22T00:00:00+00:00'
url: https://www.abhinav.co/terminal-is-having-a-second-life
summary: 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.
tags:
- Terminal
- Unix
- AI
- Agents
- vrk
- Programming
- Ideas
author: Abhinav Saxena
---

# Terminal is having a second life

In 2001 I started with telnet.

I was a student at [BITS Pilani](https://www.bits-pilani.ac.in/) and [telnet](https://en.wikipedia.org/wiki/Telnet) was simply how you got to the internet. I used [Pine](https://en.wikipedia.org/wiki/Pine_(email_client)) to send email. [Lynx](https://en.wikipedia.org/wiki/Lynx_(web_browser)) 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](https://vrk.sh) -- 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.
