
Most terminal tools make you adapt to their layout. I wanted the opposite: a workspace that adapts to how you work.
So I built Termdeck — a local-first terminal dashboard that runs in your browser and turns real shells on your machine into a flexible visual workspace.
Create terminals, group them into projects, move them freely, tile them when you need focus, and keep long-running commands alive when the page refreshes.
Why I built it
Terminal multiplexers are powerful, but they can require memorizing layouts and shortcuts. Standard terminal apps offer tabs and splits, but I wanted a more visual workspace without Electron, cloud accounts, or a separate desktop app.
Termdeck is built for local development workflows where you may need several shells at once: a frontend server, backend server, logs, tests, SSH connections, and one-off scripts.
Every terminal is backed by a real shell on your own machine. Termdeck does not simulate a terminal or send your commands to a hosted service.
What makes it useful
Termdeck is more than a terminal emulator in a browser. It is a local workspace designed to keep multi-terminal work organized and persistent.
- Floating terminal windows — drag, resize, minimize, maximize, and tile terminals into a grid. Each window can contain multiple shell tabs.
- Project workspaces — group related terminals by repository or task, so separate projects do not become one unmanageable collection of tabs.
- Real filesystem tools — browse folders from the active project, open and edit text files, reveal files in your system file manager, and spawn terminals directly in a selected directory.
- Durable shell sessions — refreshing the page or briefly losing the connection does not immediately kill your work. Termdeck reconnects to live shells and replays recent output.
-
tmuxpersistence — whentmuxis available on macOS or Linux, sessions can survive a Termdeck server restart as well. - Safe paste behavior — bracketed paste prevents pasted multi-line commands from executing unexpectedly, with confirmation for potentially risky multi-command input.
- Command snippets and SSH hosts — save repeatable commands, configure SSH connections, and launch terminals with startup commands instead of typing the same setup repeatedly.
- Command palette — quickly find commands, projects, terminals, and snippets without navigating through the interface manually.
- Broadcast input — intentionally send the same command to all live shells in a project, useful when working across multiple environments.
- Notifications and activity indicators — background terminals can signal when they need attention, and completed commands can notify you when you are focused elsewhere.
- Terminal quality-of-life features — terminal search, clickable links, configurable scrollback, downloadable logs, read-only log panels, per-terminal themes, and font-size controls.
- Cross-platform shortcuts — keyboard controls adapt to macOS, Windows, and Linux conventions.
Built to stay local
Termdeck runs on 127.0.0.1 by default. Your commands, shell output, project files, and filesystem activity remain on your own machine.
There are no accounts, cloud sync, telemetry, API keys, or remote terminal infrastructure required.
The app also keeps its architecture deliberately lightweight:
- Express server
- WebSocket bridge to real PTYs
- Browser-based frontend
- Local terminal dependencies
- No Electron
- No build step
A typical workflow
For a single project, you might keep:
- A frontend dev server
- A backend API server
- A test watcher
- A terminal following application logs
- An SSH session to a staging machine
- A shell for Git commands and quick scripts
Instead of constantly switching tabs or rebuilding a terminal layout, you can keep that workspace visible, rearrange it as the task changes, and return to it later.
Try it
You need Node.js 18+.
npx github:kiril6/termdeck
Then open:
http://localhost:3000
Or clone the repository:
git clone https://github.com/kiril6/termdeck.git
cd termdeck
node install.js
npm start
Links
If Termdeck is useful for your local development workflow, a GitHub star, issue report, or contribution would be appreciated.
Top comments (0)