~/apps/shellboard A workspace for your terminals

Your terminals,
finally in order.

ShellBoard keeps your projects, sessions and splits together — a quiet sideboard for every shell you have open right now. Close the window, open it again, and you are exactly where you left off.

Free on GitHub · App Store soon · macOS + Linux
ShellBoard / sousedomat
dev · web
docker
tests
git
zsh·~/Projects/sousedomatrunning
~/Projects/sousedomat on main at 09:57:12
~/Projects/sousedomat on main docker compose up at 09:57:24
[+] up 1/1
✓ Container sousedomat-web Recreated 0.4s
Attaching to sousedomat-web
sousedomat-web | [Sun May 17 09:57:29 2026] [mpm_prefork:notice] [pid 8] AH00163: Apache/2.4.62
sousedomat-web | [Sun May 17 09:57:29 2026] [core:notice] [pid 8] AH00094: Command line: 'apache2 -D FOREGROUND'
sousedomat-web | 172.18.0.1 - - [17/May/2026:09:58:01] "GET / HTTP/1.1" 200 1834
sousedomat-web | 172.18.0.1 - - [17/May/2026:09:58:01] "GET /assets/app.css HTTP/1.1" 200 8214
 
zsh · ls·/var/www/htmlexited 0
~/Projects/sousedomat on main ls -la at 09:58:02
-rw-r--r-- 1 root root 1016 Mar 8 07:10 composer.json
-rw-r--r-- 1 root root 153882 Mar 8 07:05 composer.lock
-rw-r--r-- 1 root root 12 Nov 2 2020 contributors.txt
drwxr-xr-x 1 root root 128 Feb 28 10:19 data
drwxr-xr-x 1 root root 96 Feb 28 06:35 docker
-rw-r--r-- 1 root root 394 Feb 28 06:35 docker-compose.yml
drwxr-xr-x 1 root root 288 Feb 28 09:43 temp
drwxr-xr-x 1 root root 256 Feb 28 07:23 tests
drwxr-xr-x 1 root root 768 Mar 8 07:05 vendor
~/Projects/sousedomat on main
zsh · git·~/Projects/sousedomatexited 0
~/Projects/sousedomat on main git status at 09:58:56
On branch main
Your branch is ahead of 'origin/main' by 4 commits.
Changes to be committed:
modified: src/components/TabBar.tsx
modified: src/store/appStore.ts
new file: src/components/CommandPalette.tsx
Changes not staged for commit:
modified: src-tauri/src/pty.rs
modified: README.md
~/Projects/sousedomat on main
zsh · ~/Projects/sousedomat · main +3 ●2 ?1 4 v0.1.0
Built on zsh · bash · fish · nu — Tauri 2, not Electron

$ cd ~/why-shellboard

Calm is knowing you lose nothing.

ShellBoard does not replace your shell. It just tidies up around it — so you always know your way around ten projects and thirty terminals.

01

Project-based workspace

Terminals organised by project, not a flat list of tabs. Each project gets a colour, a group and its own session.

02

Session restore with cwd

Splits, panel sizes and the working directory of every pane survive a restart and come back. Scrollback too, if you want.

03

Live git status

Branch, staged / modified / untracked, conflicts and ahead/behind — automatically, no manual refresh.

04

Broadcast input

Type once, every pane in the tab hears it. Drive a whole fleet of servers at the same time.

$ cd ~/how-it-works

Three steps. Then just work.

01

Add a project

Drag a folder onto the sidebar — it becomes a named, colour-coded project. Arrange groups however you like.

02

Open terminals

Tabs, arbitrarily nested splits, your own layout. Type once and broadcast sends it to every pane.

03

Close and come back

Splits, sizes and the cwd of every pane survive a restart. Open the app and pick up right where you stopped.

$ cd ~/features

Everything you expect from a terminal manager.

No extra magic. Just the terminal and order around it — every feature is here because one specific thing kept annoying us.

Projects and groups

Sessions live in projects, projects in collapsible groups with their own icon. Drag & drop, search, auto-naming from the current directory.

PROJECTS
shellboard
kvpa20
website
docs

Splits with obvious focus

Horizontal or vertical, to any depth. The active pane always has a clear outline — no guessing where your keystrokes go.

zsh · focus
$ npm run dev
vite ready
➜ :3000
zsh
$ docker logs
GET /api/me

Command palette

One shortcut, one box. New tab, split, switch project, theme, snippet, settings — all through ⌘⇧P.

New terminal⌘T
Split right⌘D
Switch project⌘P
Toggle sidebar⌘B

Global search

Fuzzy search across the output of every open terminal at once. Click jumps straight to where the match came from.

shellboarddev · web09:57
kvpa20docker09:58
docsbuild10:01

Git in the status bar

Branch, ahead/behind, untracked, clean tree — in the corner of the window. Polls every 5 s and stays quiet when there is nothing to say.

master+12-3?2
feat/sidebar+148-22?0↑3
mainclean

Tabs like bookmarks

Each tab remembers its shell, prompt and running command. An activity badge blinks when output lands on an inactive tab.

dev · web×
docker
tests
git

$ cd ~/screens

Look inside.

Dark, readable, nothing superfluous. This is exactly what you will see every day.

ShellBoard / sousedomat
dev · web
docker
tests
git
zsh·~/Projects/sousedomatrunning
~/Projects/sousedomat on main at 09:57:12
~/Projects/sousedomat on main docker compose up at 09:57:24
[+] up 1/1
✓ Container sousedomat-web Recreated 0.4s
Attaching to sousedomat-web
sousedomat-web | [Sun May 17 09:57:29 2026] [mpm_prefork:notice] [pid 8] AH00163: Apache/2.4.62
sousedomat-web | [Sun May 17 09:57:29 2026] [core:notice] [pid 8] AH00094: Command line: 'apache2 -D FOREGROUND'
sousedomat-web | 172.18.0.1 - - [17/May/2026:09:58:01] "GET / HTTP/1.1" 200 1834
sousedomat-web | 172.18.0.1 - - [17/May/2026:09:58:01] "GET /assets/app.css HTTP/1.1" 200 8214
zsh · ls·/var/www/htmlexited 0
~/Projects/sousedomat on main ls -la at 09:58:02
-rw-r--r-- 1 root root 1016 Mar 8 07:10 composer.json
-rw-r--r-- 1 root root 153882 Mar 8 07:05 composer.lock
-rw-r--r-- 1 root root 12 Nov 2 2020 contributors.txt
drwxr-xr-x 1 root root 128 Feb 28 10:19 data
drwxr-xr-x 1 root root 96 Feb 28 06:35 docker
-rw-r--r-- 1 root root 394 Feb 28 06:35 docker-compose.yml
drwxr-xr-x 1 root root 288 Feb 28 09:43 temp
drwxr-xr-x 1 root root 256 Feb 28 07:23 tests
drwxr-xr-x 1 root root 768 Mar 8 07:05 vendor
~/Projects/sousedomat on main
zsh · git·~/Projects/sousedomatexited 0
~/Projects/sousedomat on main git status at 09:58:56
On branch main
Your branch is ahead of 'origin/main' by 4 commits.
Changes to be committed:
modified: src/components/TabBar.tsx
modified: src/store/appStore.ts
new file: src/components/CommandPalette.tsx
Changes not staged for commit:
modified: src-tauri/src/pty.rs
modified: README.md
~/Projects/sousedomat on main
zsh · ~/Projects/sousedomat · main +3 ●2 ?1 4 v0.1.0

Three splits in one tab — a running dev server, a directory listing and git status. The active pane is highlighted.

ShellBoard / sousedomat
dev · web
docker
tests
git
zsh·~/Projects/sousedomatrunning
~/Projects/sousedomat on main at 09:57:12
~/Projects/sousedomat on main docker compose up at 09:57:24
[+] up 1/1
✓ Container sousedomat-web Recreated 0.4s
Attaching to sousedomat-web
sousedomat-web | [Sun May 17 09:57:29 2026] [mpm_prefork:notice] [pid 8] AH00163: Apache/2.4.62
sousedomat-web | [Sun May 17 09:57:29 2026] [core:notice] [pid 8] AH00094: Command line: 'apache2 -D FOREGROUND'
sousedomat-web | 172.18.0.1 - - [17/May/2026:09:58:01] "GET / HTTP/1.1" 200 1834
sousedomat-web | 172.18.0.1 - - [17/May/2026:09:58:01] "GET /assets/app.css HTTP/1.1" 200 8214
 
zsh · ls·/var/www/htmlexited 0
~/Projects/sousedomat on main ls -la at 09:58:02
-rw-r--r-- 1 root root 1016 Mar 8 07:10 composer.json
-rw-r--r-- 1 root root 153882 Mar 8 07:05 composer.lock
-rw-r--r-- 1 root root 12 Nov 2 2020 contributors.txt
drwxr-xr-x 1 root root 128 Feb 28 10:19 data
drwxr-xr-x 1 root root 96 Feb 28 06:35 docker
-rw-r--r-- 1 root root 394 Feb 28 06:35 docker-compose.yml
drwxr-xr-x 1 root root 288 Feb 28 09:43 temp
drwxr-xr-x 1 root root 256 Feb 28 07:23 tests
drwxr-xr-x 1 root root 768 Mar 8 07:05 vendor
~/Projects/sousedomat on main
zsh · git·~/Projects/sousedomatexited 0
~/Projects/sousedomat on main git status at 09:58:56
On branch main
Your branch is ahead of 'origin/main' by 4 commits.
Changes to be committed:
modified: src/components/TabBar.tsx
modified: src/store/appStore.ts
new file: src/components/CommandPalette.tsx
Changes not staged for commit:
modified: src-tauri/src/pty.rs
modified: README.md
~/Projects/sousedomat on main
switch project esc
Projects
shellboard— ~/Projects/shellboardswitch
kvpa20— ~/Projects/www/kvpa20switch
website-2026— ~/Projects/website-2026switch
docs-portal— ~/Projects/docs-portalswitch
Actions
New tab in active projecttabT
Split panel verticallysplitD
Global search across all terminals…searchF
Themes
Tokyo Nighttheme
Nordtheme
navigate select52 actions
zsh · ~/Projects/sousedomat · main +3 ●2 ?1 4 v0.1.0

Command palette — switch projects and run actions from a single shortcut, no reaching for the mouse.

ShellBoard / sousedomat
dev · web
docker
tests
git
zsh·~/Projects/sousedomatrunning
~/Projects/sousedomat on main at 09:57:12
~/Projects/sousedomat on main docker compose up at 09:57:24
[+] up 1/1
✓ Container sousedomat-web Recreated 0.4s
Attaching to sousedomat-web
sousedomat-web | [Sun May 17 09:57:29 2026] [mpm_prefork:notice] [pid 8] AH00163: Apache/2.4.62
sousedomat-web | [Sun May 17 09:57:29 2026] [core:notice] [pid 8] AH00094: Command line: 'apache2 -D FOREGROUND'
sousedomat-web | 172.18.0.1 - - [17/May/2026:09:58:01] "GET / HTTP/1.1" 200 1834
sousedomat-web | 172.18.0.1 - - [17/May/2026:09:58:01] "GET /assets/app.css HTTP/1.1" 200 8214
 
zsh · ls·/var/www/htmlexited 0
~/Projects/sousedomat on main ls -la at 09:58:02
-rw-r--r-- 1 root root 1016 Mar 8 07:10 composer.json
-rw-r--r-- 1 root root 153882 Mar 8 07:05 composer.lock
-rw-r--r-- 1 root root 12 Nov 2 2020 contributors.txt
drwxr-xr-x 1 root root 128 Feb 28 10:19 data
drwxr-xr-x 1 root root 96 Feb 28 06:35 docker
-rw-r--r-- 1 root root 394 Feb 28 06:35 docker-compose.yml
drwxr-xr-x 1 root root 288 Feb 28 09:43 temp
drwxr-xr-x 1 root root 256 Feb 28 07:23 tests
drwxr-xr-x 1 root root 768 Mar 8 07:05 vendor
~/Projects/sousedomat on main
zsh · git·~/Projects/sousedomatexited 0
~/Projects/sousedomat on main git status at 09:58:56
On branch main
Your branch is ahead of 'origin/main' by 4 commits.
Changes to be committed:
modified: src/components/TabBar.tsx
modified: src/store/appStore.ts
new file: src/components/CommandPalette.tsx
Changes not staged for commit:
modified: src-tauri/src/pty.rs
modified: README.md
~/Projects/sousedomat on main
zsh · ~/Projects/sousedomat · main +3 ●2 ?1 4 v0.1.0

Global search across every terminal, scrollback included. Click jumps to the result.

$ cd ~/themes

Ten themes. Matched to the last pixel.

A theme colours the terminal and the app chrome — sidebar, tabs and status bar follow along. Pick from ten built in, or tune your own.

ShellBoard
~ $ git status
On branch main
nothing to commit
~ $
ShellBoard Light
~ $ git status
On branch main
nothing to commit
~ $
Default
~ $ git status
On branch main
nothing to commit
~ $
Dracula
~ $ git status
On branch main
nothing to commit
~ $
Nord
~ $ git status
On branch main
nothing to commit
~ $
Solarized Dark
~ $ git status
On branch main
nothing to commit
~ $
Tokyo Night
~ $ git status
On branch main
nothing to commit
~ $
GitHub Dark
~ $ git status
On branch main
nothing to commit
~ $
iTerm2 Dark
~ $ git status
On branch main
nothing to commit
~ $
Gruvbox Dark
~ $ git status
On branch main
nothing to commit
~ $

$ cd ~/shortcuts

The keyboard is the primary input.

Everything in ShellBoard works from the keyboard — including reordering tabs and resizing splits. Cmd on macOS, Ctrl on Linux. Remap any shortcut in settings.

Broadcast input

Type once, every pane in the tab gets it. Perfect when you SSH into a whole fleet of servers.

New tab T
Split vertical / horizontal D
Split in a direction ↑↓←→
Close pane / tab W
Move focus between panes ←→
Command palette P
Global search F
Quick project from cwd N
Jump to tab 1–9 1–9
Toggle sidebar B
Settings ,
Shortcut cheat sheet ?

$ cd ~/download

Give it a try.

Free on GitHub. On the App Store soon — for a token price, just to cover the developer fee.

macOSDMG · Apple silicon · macOS 13+

Unsigned build — on first launch allow it in Settings → Privacy & Security.

Download .dmg
LinuxAppImage · .deb · .rpm

Runs on most distributions.

Download for Linux
WindowsOn the way

The code is ready (ConPTY), the release just does not build it yet.

Soon
App Store A Mac App Store release is in the works. GitHub builds are, and stay, free.

$ cd ~/faq

Frequently asked

Did not find an answer? Email petr@calmbit.cz.

zsh, bash, fish and nu out of the box. Anything else you add in Settings → Shell as a custom shell with your own arguments. The default is the system $SHELL, or pwsh → powershell → cmd on Windows.
No. ShellBoard is a native desktop app built on Tauri 2 (Rust + xterm.js), not Electron. That is why it is light and starts fast.
Yes. Tabs, arbitrarily nested splits, panel sizes and the working directory of every pane. Scrollback too, optionally. Autosave runs in the background, nothing is lost.
No. Git status reads through the system git; update checks and OSC 7 tracking are opt-in. No accounts, no profiling — your config stays on your machine.
The code is ready (ConPTY), but the release does not build it by default yet and OSC 7 is a no-op there. We target macOS and Linux now; Windows is on the way.
Free on GitHub. On the Mac App Store it will soon cost a token amount — just to recover the developer fee. No subscription.