A Linux terminal workspace · no, after you

Please, take my terminal. I insist.

It's nothing, really — a GTK4 terminal with a tabbed sidebar that respects you. Split panes with or without tmux, session restore that keeps your place, and good manners around your SSH habits. Honestly, it wouldn't even exist without you. Linux only.

GTK4 · libadwaita · VTE MIT / Apache-2.0 Loopback-only HTTP
taarof — majlis
taarof v0.1
TABS
agents / claude
tests / cargo
tmux / build
dashboard
$ taarof list-tabs --pretty
{ "schema": "taarof.state.v1" }
$ cargo test
running 218 tests
test result: ok
agent: editing release notes
$ tmux ls
taarof-release: 2 windows
detached session tracked
$ taarof agent-status
alerts: waiting-input
Why taarof

A terminal that respects you.

Remember what they did to WordPerfect for DOS? Not again! The terminal is the source of truth. It even plays nice with agents — if you're into that sort of thing.

Tabs, in a sidebar

A tabbed sidebar and split panes you can actually keep track of. Keyboard navigation, Ghostty theme import, VTE rendering.

Agents that blink politely

Live indicators show running, waiting, done, and alert. Your agents blink when they want your attention instead of shouting over your work.

A socket for your robots

Same-user socket actions let tools and agents create tabs, run commands, send keys, and capture what your agents are actually doing.

tmux, but only if you hate scrolling

Panes come with or without tmux backing. Long jobs detach and reattach, and it plays nicely with your SSH habits instead of replacing them.

A web view, if you must

An optional loopback HTTP API and web client expose read-only state behind a bearer token. It stays on your machine unless you say otherwise.

Remembers where you were

Tabs, panes, working directories, saved views, and templates persist between launches. It wouldn't dream of losing your place.

A closer look

Since you insist.

They blink when they need you.

Agent panes carry live status — running, waiting, done, alert — in the sidebar and the dock. A notification can drop you straight into the pane that wants you. No tab-cycling to check on the robots; they'll ask, politely.

claude · runningediting release notes
codex · alertwaiting for input
build · waitingqueued behind tests
tests · donecargo test: ok
$ tmux ls
taarof-release: 2 windows (detached)
$ taarof list-tabs --pretty
"tmux": true, "host": "builder"
reattach whenever you like

Your tmux, your SSH, undisturbed.

Panes come plain or tmux-backed. Long jobs keep running when the window closes; detach and reattach whenever. SSH hosts keep their aliases, and your dotfiles keep their opinions.

A steering wheel for agents. Brakes for you.

The same-user socket creates tabs, runs commands, sends keys, and captures pane text. The web client observes from a browser — loopback-only, token-gated, read-only unless you flip the switch yourself.

$ taarof send-keys --tab tests "cargo test"
$ taarof query-state --pretty
{ "schema": "taarof.state.v1" }
web: observing on 127.0.0.1 · read-only
restoring workspace…
~/code/kmux — 3 panes
~/code/homelab — tmux-backed
saved view: release-week
everything where you left it

It kept your seat.

Quit guilt-free. Tabs, panes, working directories, saved views, and templates return on launch — restored lazily, so startup stays quick and nothing spins up until you actually look at it.

Install

It's nothing, really. Just a tarball.

Version tags publish a Linux x86_64 tarball and checksum. The bundled installer adds the desktop app, CLI, launcher, icon, metadata, and web bundle under your local prefix. You really shouldn't have.

Supported today: Linux with GTK4, libadwaita, and VTE. macOS and Windows are not current release targets.
HTTP access defaults to loopback-only and token-protected.
Written in Rust, regrettably — working with agents does that to a person. It could have been PHP wrapped in Electron. You deserved better.
$ sha256sum -c taarof-linux-x86_64.tar.gz.sha256
$ tar -xzf taarof-linux-x86_64.tar.gz
$ ./taarof-linux-x86_64/install.sh
$ ~/.local/bin/taarof-app
# drive it from any shell or agent
$ taarof list-tabs --pretty
$ taarof agent-status --tab current \
--state running --text "building release"