System-wide tmux for Linux administrators

Manage every shell
on the box. Not just yours.

tap is tmux-like session management for Linux sysadmins, except it works across the entire system — including shells nobody started in tmux. List every active session, look at any of them live, attach, type, lock, quarantine, send messages, kill. You don't have to set anything up beforehand. The shells were already running. Drive it remotely or hand it to an AI →

Install What it does

tmux-style session control, system-wide

Open one menu, see every shell, do what you need to it.

tap(no args)

Bring up a tmux-style picker that lists every shell on the host you're allowed to see. Live-refreshing. Side panel shows the highlighted session's screen as it updates. Arrows to navigate. Enter to attach. q to leave.

Attach to anyone's shell

Press Enter on any session and you're in it like it's your own terminal. Live output, your keystrokes go through. Detach with one keystroke and you're back at the menu, picking the next one.

Lock, kill, or send a message

One key freezes the session — the user's typing stops working until you say so. Another key kills it cleanly. Another sends them a visible admin message ("hey, what are you up to?") that lands as terminal output, not as commands their shell would run.

Quarantine and investigate

Suspicious user on your box? One key drops them into a sandboxed honeypot shell that looks like a normal Linux. Their real shell stays frozen behind the scenes. You investigate calmly. If they're legitimate, swap them back. If not, you've stalled the damage while you decide.

Terminal — pick a session, attach, type into it
$ tap ┌── tap — terminal session picker ────────────────────────────┐ │ pty user comm out (b/ev) age │ │ 3 alice(1000) bash 12384/421 82s │ │ ▶ 4 alice(1000) vim 2891/14 12s │ │ 5 bob(1001) psql 830/9 4s │ └─────────────────────────────────────────────────────────────┘ 3 session(s) — ↑/↓ select Enter=connect l=lock Q=quarantine x=kill q=quit # Enter on alice's vim session — bidirectional from here on: [tap connect pty=4 — Ctrl-T to detach] 1 # Project plan 2 3 ## Next sprint # your keystrokes go straight into alice's vim. detach, pick another session.

What a takedown looks like

Apache caught a zero-day. The exploit landed an attacker in a worker process and a chained privesc dropped them into a root shell — under the www-data service account. Auditd flagged it; alice got paged. She ssh's to web-prod, sudoes to root, runs tap. The picker shows two ptys — her own, and the rogue one with login www-data and euid 0. She watches, quarantines them into a honeypot, asks what they're doing, ends the session.

Admin — alice@web-prod (sudo'd to root)
Suspect — www-data → euid 0 (apache 0day)

The thing you've been missing

Real sysadmin scenarios where tap is the right tool — and the others aren't.

"Who's stuck where?"

The build server's slow. Five engineers are SSH'd in. With tap you flip through their shells in seconds and see who's hung on which command. No "can you describe what you're seeing?" pingpong on Slack.

Pairing without screen-share

A junior is debugging on a shared box. Drop into their shell, watch what they're doing, type a hint into their prompt when they get stuck. Like sitting next to them, except you don't have to.

Suspicious activity at 2am

A login from a country you don't recognize. Quarantine them into a sandbox. They keep typing into a fake shell while you investigate — without tipping them off. If it was just the user on holiday, hand them back. If not, you've already stopped them from doing damage.

Compliance & audit

"Show me what was on screen at 09:42 when the deploy went sideways." tap snapshots any session's current screen. Pair it with a logger and you have byte-faithful records of who saw what, when.

Training & onboarding

Watch new hires work through their first real ticket. Type a correction into their shell when they're about to rm something they shouldn't. Send them a "good catch" message via tap when they don't.

Forgotten sessions

You SSH in to fix something, forget to detach, walk away. Days later, "is that shell still open?" — yes, and tap will tell you, snapshot what's on it, and let you close it cleanly without having to find which terminal window you left it in.

What pairing looks like

Same picker, opposite use. bob is stuck on a failing nginx reload and pings alice on slack. She sudoes, runs tap, finds bob's pty, attaches, watches him bounce off journalctl. One Ctrl-G message — "try nginx -t" — and he's unstuck. No screen-share, no "can you describe what you're seeing?"

Senior — alice@web-prod
Junior — bob@web-prod (nginx reload failing)

Install

One curl. Linux only.

$ curl -fsSL https://tap.keikai.ai/install.sh | bash

Installs in seconds. Runs as a service. Nothing to configure — type tap and you're in.

Your shells, or all shells if you're root

The same authority model Linux has always had. No new ACLs, no new keys, no new accounts.

You see what's yours

If you're alice, tap shows alice's shells. You can attach, lock, message, kill the sessions you opened — but not anyone else's. They don't even appear in the list.

Root sees everything

If you're root, you see every shell on the host and have every operation available against each of them. The same way root can read any file or signal any process. tap inherits that authority — it doesn't invent a new one.

Identity sticks to the session

alice's session is alice's session even when she sudo's. So a user can't escape your view by escalating privileges, and you always know whose terminal you're attached to.

Terminal — same machine, two callers
# root sees every session root# tap list 2 active session(s): pty=3 user=alice(1000) comm=vim ... pty=4 user=bob(1001) comm=psql ... # alice sees only her own alice$ tap list 1 active session(s): pty=3 user=alice(1000) comm=vim ... # trying to look at bob's: same response as one that doesn't exist. alice$ tap snapshot 4 error: no active session with pty_index=4

Linux only

tap runs on the host the shells live on. Linux for now — macOS and Windows aren't supported on the host side. You can drive tap from any OS, though: pair it with hop for authenticated remote access and AI-driven session management from anywhere.

Install Remote / AI →