Features

Everything it does, one card each.

What insensical does, one card each. Every card links to its page in the docs.

Four marks tell you where to look.

insensical reads each pane's state from what the program prints, and from agent hooks where they exist. More about agents and attention

Running
A command or agent is working. It's the only mark that moves.
Waiting
It's blocked on you: a question, a permission request, a prompt.
Done
It finished while you were away. Looking at it clears the mark.
Failed
It failed while you were away.

The sidebar tells you why

Every pane in one list with its state, and a waiting row says what it's asking. Each program carries its own mark.

The sidebar

Out of sight, still running

Minimize a pane to the dock. Its chip lights up when it fails, finishes or asks.

Minimizing and the dock

Built for the day you have ten things running.

Panes, tabs and splits are real windows, not characters in a grid, so you can float, drag and resize them.

A pane on top of everything

Float any pane over your layout and pin it there. One key drops in a scratch shell.

Floating panes

Drop a pane where you want it

Drag a pane by its header and the others glide to show where it will land.

Moving and swapping

Every project on one screen

Every tab drawn as its real layout, with the question each waiting pane is asking.

The overview

A face for every project

A tile beside each project's name: its letter, a colour, a mark or an SVG of yours.

Projects

Get your memory back, keep your place

Put a project to sleep and its programs end. Its layout and scrollback stay, and each agent's resume command waits at its prompt.

Putting a project to sleep

A project, written down

Put a project's tabs, panes and the program each runs in .insensical.toml. isc project open then makes the whole project in one go, for everyone who clones the repository.

A project in a file

A real terminal in every pane.

What a program draws is what you see, pictures included. An agent that wants panes of its own gets them.

Pictures, right in the pane

Kitty graphics show in the pane, scroll with the text, and stay when you come back.

Pictures

Pictures that fit the pane

A picture too large for its pane is made smaller, so you see all of it. It's never stretched and never cropped, and one that fits is left as it is.

Pictures

An agent's helpers, as panes

Some agents start helpers by running tmux commands. With the tmux-shim setting on, those commands are answered here, and each helper opens as a pane beside the agent that started it.

Helpers in tmux panes

Make it yours.

Change keys, colours and commands in the settings sheet or in one plain file.

Your editor keeps its keys

Put every command behind one leader, or hand the whole keyboard to the program.

The leader keymap

Commands of your own

Give a name to a list of steps: commands, programs to run, text to type. The palette lists it, a key runs it, and isc do runs it from a shell.

Changing keys

Keys that stay on

A mode makes plain keys into commands for as long as it's on, with no leader and no chord. Resize mode comes ready, and you can write modes of your own.

Changing keys

The whole window can take your theme

Eight themes are built in, and any Ghostty theme works by name. Turn on Follow terminal theme and the sidebar, tabs and dialogs take its colours too.

Themes

Type it, and it's first

One palette runs any command, goes to any pane, changes any setting and finds any file, ranked by what you pick.

The palette

No config file to learn

Every setting is a switch, a choice or a number, and the window changes as you pick. It's all saved to one plain file for your dotfiles.

The settings sheet

Every machine of yours, from one page.

Other computers sit in your sidebar over your own ssh, or join your hub and come to your phone. More about working from anywhere

Other machines, in the same sidebar

Name a machine, or pick one from your tailnet, and its projects sit under its own heading. It all goes through your own ssh.

Other machines

Your phone, paired once

isc hub serves the page. A device pairs by a code its camera reads, and from then on it's known by its key. Pair Again gives it a new code, and keeps the rest.

Pairing a device

One hub for every machine

Another computer joins with Join a Hub and listens on nothing. A phone paired with the hub reaches them all, with no second code, sealed end to end: the hub carries it and can't read it.

Joining a machine to your hub

Asked before a device is added

A program in a pane can't add a device by itself. The window asks you, naming the pane, and nothing changes without your Allow.

Pairing a device

Prefer a terminal? It all runs there too.

Run isc in any terminal, or over ssh host -t isc, for the same projects, panes and states with no window. One file, one line to install.

The interface in a terminal

Everything the window does, a script can do.

isc creates and arranges projects, tabs and panes, types into a pane, reads its output, waits for it to finish, and streams events. It tab-completes panes, tabs and projects in bash, zsh and fish.

The command line
zsh

Your programs outlive the window, a restart and an update.

Close the window

A background server owns your programs, and the window is just a view of it. Reopen it and everything is still running.

Restart the machine

Every project comes back with its tabs, splits, floating and minimized panes. Each pane reopens in its directory with its old output, and the last command typed at the prompt, ready to run again.

Install a new version

The window tells you an update is installed, and the server switches to it when you say so, with every program still running.

Stopping, restarting and new versions

Benchmarked side by side, on the same machine.

insensical, tmux, zellij and herdr at their defaults, each driving its own client. The one exception is tmux's history, set to match zellij's.

Output throughputHigher is better

95%of the system limit

200 MB of build output through one pane, from the program to the screen.

System limit168 MB/s
insensical159 MB/s
herdr118 MB/s
tmux54 MB/s
zellij36 MB/s

Throughput by workload

MB/s for 200 MB of each workload, end to end. System limit is the same output read straight from the kernel's terminal device, with no terminal attached.

WorkloadSystem limitinsensicaltmuxinsensical vs tmux
Build output, short lines156160602.7×
Raw mode, as full-screen programs write447470637.5×
Long lines, such as JSON logs430400685.9×
Non-ASCII text: accents, CJK, emoji158165723×
Coloured output: diffs, listings166146265.6×
Gradients: hundreds of distinct colours17327261.0×
Full-screen redraw: editors, agent interfaces44584471.8×
  • The system limit moves by a fifth from run to run, so where insensical shows a little above it, the two are level.
  • tmux, zellij and herdr render program output a second time, as text inside a host terminal. That is what makes them portable, and it is the cost measured here.
  • Short lines are bounded by the kernel at about 160 MB/s for every tool, so the gap to tmux is narrowest there.
  • Colour-heavy and full-redraw workloads are bounded by the terminal engine's parser.

Memory usageLower is better

58 MBresident in the server

Server memory with 30 idle panes, each holding 18 MB of output.

insensical58 MB
herdr57 MB
tmux94 MB
zellij449 MB

How memory was measured

  • Resident memory of the server process, twenty seconds after output stops. Clients and windows are not counted.
  • Each tool retains a different amount of history: insensical keeps 10 MB per pane and compresses it once the pane is idle; zellij keeps 10,000 lines by default, and tmux was configured to match; herdr ran at its default.

What insensical itself adds

15µs
Added latency per key press

A key and its echo through the server, against the same without it.

0.8ms
To attach to a running pane

A full screen and 4,000 lines of history, ready to draw.

1.5ms
Per frame with six panes

One pane printing. A pane that hasn't changed isn't redrawn.

178MB
With 1,000 terminals open

A thousand shells at their prompts, opened in about two seconds. Left alone for ten seconds, the server didn't wake once.

Ryzen 9 7950X3D, Linux 7.2. tmux 3.7c, zellij 0.45.1, herdr 0.9.3.

How these were measured

  • Release builds, one tool at a time, each at its defaults in a home directory of its own.
  • Each client is attached to a terminal that parses everything it is sent.
  • Throughput is timed from the program starting to write until the terminal showing it has parsed its last byte.

A different job, not a better tmux.

tmux, zellij and screen are the best at what they were built for: a session that survives on any machine, in any terminal, over any connection. insensical is built for ten agents working at once, and gives up some of that reach to get it.

tmux, zellij, screeninsensical
What all of them doThe reason to use a multiplexer at all.
Keeps programs running when you close the window or lose the connectionYesYes
Splits, tabs and sessions you can name and come back toYesYes
Everything can be driven from a scriptYesYes
Comes back after a reboot with its layoutzellij; tmux with a pluginYes, with what each pane showed
Built for watching many agentsThis is the work insensical was made for. The others were designed long before it existed.
Knows whether a pane is working, waiting on you, done or failedNoYes
Tells you which pane needs you, and what it askedActivity and bell marksA mark, the question, and a notice
One key to the pane that needs you mostNoYes
Reads state from eight coding agents' hooksNoYes
Shows what each project holds in memory, and puts one to sleepNoYes
What a window of its own allowsThey draw panes as characters, so that they run inside any terminal. insensical's window draws real ones.
A program's output reaches the screen untouchedRedrawn, by designYes
Panes you drag, float over each other, minimize and resize with the mouseWithin a grid of charactersYes
Settings you switch and pick, with no config file to writeNoYes
Where they are the better toolReach for tmux, zellij or screen here. Nothing below is a fault in them or in insensical: it follows from the same choice.
Runs inside any terminal you already haveYesYes, with isc. New, and it wants a Nerd Font
Lives on a server with no desktop, and is there when you SSH inYesYes, with isc, on x86-64 or arm64 Linux
Runs almost anywhere: BSD, old machines, a containerYesLinux and macOS
Years of plugins, guides and people who know itYesNew

You don't have to choose. tmux runs in an insensical pane like any other program, and if tmux already keeps your sessions alive on a server, it can go on doing so while insensical tells you when one needs you here.

Stop checking panes. Let them tell you.