Stackness

Trending Terminal & Shell

Data as of

These rankings count what people do on Stackness: a trending tool is one that was added to the most stacks in the window, a rising tool is one whose recent additions are the largest share of its total users, and a trending move is the one that collected the most reactions. When a window is too quiet to rank, it widens to the next one and the page says which window it used. This is platform usage, not the imported history series that tool pages and trend waves chart - see where our data comes from.

Browse every tool in Terminal & Shell

Not enough activity this week - showing this month

#1iTerm2+4

Feature-rich terminal emulator for macOS

5 users

Agentic coding tool by Anthropic for the terminal

4 users

Cross-platform shell and scripting language from Microsoft

2 users

GPU-accelerated cross-platform terminal emulator

3 users
#5
l
+2

Simple terminal UI for git commands

2 users
#6Zellij+2

Terminal workspace with batteries included, written in Rust

2 users

Modern shell that treats data as structured tables

1 user
#8Fish+1

Smart and user-friendly command line shell

2 users
#9Zsh+1

Powerful shell with scripting, completion, and customization

1 user
#10atuin+1

Magical shell history with sync, search, and stats

1 user
#1iTerm2+4

Feature-rich terminal emulator for macOS

5 users

Agentic coding tool by Anthropic for the terminal

4 users

Cross-platform shell and scripting language from Microsoft

2 users

GPU-accelerated cross-platform terminal emulator

3 users
#5
l
+2

Simple terminal UI for git commands

2 users
#6Zellij+2

Terminal workspace with batteries included, written in Rust

2 users

Modern shell that treats data as structured tables

1 user
#8Fish+1

Smart and user-friendly command line shell

2 users
#9Zsh+1

Powerful shell with scripting, completion, and customization

1 user
#10atuin+1

Magical shell history with sync, search, and stats

1 user

Not enough activity this week - showing this month

I used to ship whatever I built first. The vibe coded version would go straight to production, and then I'd spend weeks untangling it because the code was optimized for speed, not clarity. Claude and I would just keep patching things, and eventually I couldn't even remember why certain decisions got made. Then I started treating prototypes like actual disposable prototypes instead of secret first drafts. I build the thing fast with Claude, get it working, understand what I actually need, then I start completely over with a real spec. The second version gets written deliberately with the person who'll maintain it in mind. It's weird but it works. When I start the rewrite I always run `vercel env pull` first to make sure I have the actual production config, then I'm building from a fresh Next.js template and a spec that's just a few sentences about what this needs to do and why. The prototype taught me what the thing should be, and now the real code gets to be what it should look like. The caveat is that this only works if the prototype is actually fast to build. If it takes you two weeks to prototype something, rewriting it from scratch is going to feel ridiculous. This technique is for the stuff where you can throw together a real working version in a day or two, learn what you need to learn, and then do it right. ![the prototype, before it got rewritten properly](https://cdn.stackness.dev/fakeusers/gradient-sunrise.png)

63

Keeping shell, editor and tool configuration in a version-controlled repository, so a new machine is one clone away from feeling like the old one.

63

Before I started doing this, I'd either have a pile of detached sessions scattered across my machine with no memory of what was running in each one, or I'd try to cram multiple projects into a single session and lose track of which window belonged to where. Terminal scrollback would evaporate whenever my laptop slept, and context switching meant either killing running processes or leaving them orphaned and resource-hungry in the background. What changed is that I now create each project's session with a predictable structure. Editor window, server window, tests window. Always in that order. When I come back to a project after days away, I run `tmux attach-session -t projectname` and everything is exactly where I left it. The scrollback persists because the processes aren't dying. I can actually see what broke three hours ago because I still have the terminal history. The concrete implementation is a small shell function that creates a session with `tmux new-session -d -s $projectname -x 120 -y 40`, then splits windows with `tmux new-window -t $projectname` and names them with `tmux rename-window -t $projectname:0 editor`. Zsh and Neovim run in window zero, the dev server or build process lives in window one, and automated tests run in window two. One keybinding to cycle between them. The honest limitation is that this breaks down if a project genuinely needs more than three persistent processes, or if you're debugging something that requires seeing multiple logs simultaneously. For those cases I sometimes add a fourth window, but I've found that creeping complexity usually means I should split the workflow differently. It works best when your development process is actually that simple.

44

Not enough activity this week - showing this month

Agentic coding tool by Anthropic for the terminal

4 users
iTerm2+80%

Feature-rich terminal emulator for macOS

5 users

GPU-accelerated cross-platform terminal emulator

3 users
t
+33%

Terminal multiplexer for managing multiple sessions

3 users

Supporters get the weekly Stackness trends newsletter and trend waves, the interactive charts of how tools rise and fall over time.