DEV Community

Hardil Singh
Hardil Singh

Posted on

My Terminal Became an Ops Center, One Command at a Time

None of this was designed. Every command in my shell profile exists because I got annoyed at typing the same multi-step sequence one too many times, and each one is small enough that it took twenty minutes to write and has saved hours since.

Here's what accumulated, roughly in the order the annoyance struck:

infra — server ops without memorizing which container is which

I run a decent number of containers on a shared server across a few side projects. docker ps, scrolling to find the right name, remembering the exact docker exec incantation — fine once, tedious the fiftieth time. Now it's one word plus a fuzzy-picker:

infra status     # uptime, disk, mem, every container's health, one screen
infra ps [name]  # fuzzy-pick a container if no name given
infra logs / restart / exec [name]
infra stats
Enter fullscreen mode Exit fullscreen mode

dev — stop typing "which package manager does this repo use"

Different repos on my machine use different lockfiles, which means different install/run commands. dev just detects the lockfile, cds into the project, and starts the right dev server — pnpm, yarn, npm, whichever it actually is. One word instead of "wait, is this the pnpm one or the npm one."

brief — the one-word morning check

Server health, a genuine-unread email count (more on that below), dotfile backup status, and open pull requests — one command, run once, first thing. Before this existed my morning was four separate commands across three terminals just to answer "is anything on fire."

work — a consistent workspace per project

Attaching to (or creating) a per-project terminal multiplexer session: one pane for a shell, one pre-loaded with the dev server, one running a terminal git UI. Same layout every time, for every project, instead of rebuilding the same three panes by hand.

funnel — exposing a local port to the internet, safely, on demand

For testing webhooks (payment provider callbacks, that kind of thing) against code running on my own machine, I needed a real public HTTPS URL pointed at a local port, without standing up a deploy. A mesh VPN's "funnel" feature does exactly this — funnel <port> streams requests live for a demo, funnel bg <port> runs detached for something like a webhook listener, funnel off tears it down. No DNS, no server, gone the moment I don't need it.

inbox — a real signal-to-noise filter for email

Fifteen years of accumulated newsletter/social noise makes a normal inbox useless as a signal. inbox runs a targeted search (unread, primary category, recent, ignoring spam/promotions) and gives me an actual count of things that matter, plus a fuzzy-picker to read one without opening a mail client at all.

cheat — because I kept forgetting my own tools

The one that ties it together: a small, colorized cheat sheet of every command above, shown automatically on every new terminal. Building a dozen conveniences is pointless if you forget half of them exist three weeks later. This one's less about functionality and more about actually retaining the value of everything else on this list.

What I'd tell past-me

  • The bar for "worth automating" isn't "this is hard" — it's "I've now typed this exact multi-step sequence three times."
  • A one-word command with a fuzzy-picker beats memorizing exact names or flags every time.
  • Build the reminder (cheat) alongside the tools, not after. Tooling you forget about might as well not exist.
  • Small, single-purpose shell functions compound. None of these took long individually; together they're most of my daily workflow now.

Top comments (0)