Precursor to TabzChrome

Tabz

Tab-based terminal interface. The desktop prototype that became a Chrome extension.

★ 1 star Created Nov 7, 2025 Size 3.3 MB
View on GitHub
Bash
Claude Code
LazyGit
TFE
~/projects $ tabz --list
15 terminal types available:
1. Bash 6. TFE 11. Python REPL
2. Claude Code 7. LazyGit 12. Node REPL
3. Zsh 8. Btop 13. Ranger
4. Fish 9. Midnight Cmd 14. Ncdu
5. Tmux 10. Vim 15. Custom
Active sessions: 4 | Connected: gg-hub
~/projects $

Project Overview

Tabz is a tab-based terminal interface that pioneered the concept of organized, multi-terminal workflows in a single window. Supporting 15 terminal types out of the box — from Claude Code to LazyGit to custom shells — Tabz proved that developers benefit from terminal specialization.


Built as a desktop application with React, Vite, and xterm.js, Tabz featured a dual context menu system (separate menus for tabs and panes), tmux window switching, and full keyboard shortcuts with Alt+key bindings that avoid conflicting with terminal Ctrl sequences.


This was the prototype that led directly to TabzChrome — the leap from desktop app to Chrome extension.

By the Numbers

15
Terminal Types
3.3
MB Codebase
2
Context Menus
1
Star
TypeScript 69% JavaScript 21% CSS 7% Shell 3%

Tech Stack

Frontend

  • React 18
  • TypeScript
  • Vite (dev + build)
  • xterm.js
  • Zustand (state)

Backend

  • Node.js + Express
  • node-pty (PTY)
  • WebSocket streams
  • tmux integration

Features

  • 15 terminal types
  • Dual context menus
  • Alt+key shortcuts
  • gg-hub integration
  • Claude status detection

Architecture

🎨
React + Vite UI
Tab bar, pane grid, context menus, status bar
📦
Zustand Store
Tab state, profiles, keyboard bindings
WebSocket Layer
xterm.js ↔ node-pty streams
💻
Express + node-pty
PTY allocation, tmux window switcher

Key Features

15 Terminal Types

Claude Code, Bash, Zsh, Fish, TFE, LazyGit, Btop, Midnight Commander, Vim, Python REPL, Node REPL, Ranger, Ncdu, Tmux, and Custom terminals.

Dual Context Menus

Separate right-click menus for tabs (rename, duplicate, close, move) and panes (split, resize, swap, terminal type). Context-aware actions everywhere.

tmux Window Switcher

Switch between tmux windows and sessions directly from the Tabz UI. No need to reach for Ctrl+B — it is all in the tab bar.

Alt+Key Shortcuts

Full keyboard shortcut system using Alt+key bindings. No Ctrl+B prefix conflicts with terminal applications. Fast navigation between tabs and panes.

gg-hub Integration

Connected to the gg-hub ecosystem for project management, terminal orchestration, and workflow automation across development tools.

Claude Status Detection

Automatic detection of Claude Code session status in terminal panes. Visual indicators show when Claude is thinking, writing, or idle.

Reflections

Tabz was the prototype that became TabzChrome. Building it taught the fundamentals of xterm.js rendering, PTY management with node-pty, and WebSocket terminal streaming. The dual context menu pattern and Alt+key shortcut system were design decisions that carried forward.


The key insight was the desktop app to Chrome extension pivot. Tabz worked great as a standalone application, but developers spend their time in the browser. Moving terminals into Chrome's sidebar eliminated the context switch entirely — and that is what made TabzChrome take off.