isc commands
PANE is a pane's number: 3 or pane:3. TAB is a tab's number: 7 or tab:7. A project is its name or its number: 4 or project:4. Where [PANE] is optional, the command acts on the pane you run it in. Outside any pane, it acts on the pane that has the keyboard. Every command accepts --socket PATH.
| Command | What it does |
|---|---|
isc ls [--json] | Lists projects, tabs and panes, with each pane's placement and state. --json prints everything the daemon knows. isc list does the same. |
isc run [--cwd DIR] [--keep] [WHERE] [-- COMMAND…] | Runs a command in a new pane, or the shell if you give none, and prints the pane as pane:N. --cwd sets the working directory; the default is the one you run isc in. With --keep, the pane stays when the command ends. Press Enter in it, or use isc close, to close it. |
WHERE for isc run | Nothing: a new tab in the current project. --project NAME: a new tab in that project. --new-project [--name NAME]: a new project for the working directory. --split right|down [--beside PANE]: beside a pane, sharing its space. --float [--rect X,Y,W,H]: floating above the current tab. |
isc split right|down [PANE] [-- COMMAND…] | The same, beside a pane, in that pane's directory |
isc focus PANE, isc focus left|right|up|down | Gives a pane the keyboard: by number, or the focused pane's neighbour on that side |
isc float [PANE] [--rect X,Y,W,H] | Lifts a pane out of the layout, or moves one that's already floating. The rectangle is in fractions of the tab. Without it, the rectangle is 0.2,0.15,0.6,0.7. |
isc tile [PANE] | Puts a floating pane back into the layout |
isc pin [PANE] [--off] | Keeps a floating pane above the others. --off stops that. |
isc follow [PANE] [--off] | Shows a floating pane over every tab of its project. --off shows it over its own tab only. |
isc hide [PANE], isc show PANE | Hides a floating pane while its program keeps running, and brings it back to the front |
isc scratch [--project NAME] | Brings the project's scratch pane to the front. If it's already there with the keyboard, puts it away. Starts it the first time. --project names a project other than the one in front. |
isc floats show|hide | Shows or hides the current tab's floating panes |
isc minimize [PANE], isc restore PANE | Puts a pane away while its program keeps running and keeps its size, and brings it back where it was |
isc zoom [PANE] [--off] | Gives a pane the keyboard and lets it fill its tab. --off stops that. |
isc swap A B | Swaps the places of two panes |
isc resize left|right|up|down [PANE] [--by PERCENT] | Moves the divider a pane shares with its neighbours in that direction, by 5% of the divided space unless you set --by. It fails when the pane has no divider on that axis. |
isc rename PANE NAME | Gives a pane a name, shown instead of its directory and title. An empty name, "", removes it. |
isc close [PANE] | Closes a pane and ends its program |
isc tab new | Opens a tab with a shell in the current project |
isc tab next, isc tab prev | Goes to the next or previous tab of the current project, wrapping round at the ends |
isc tab select TAB | Goes to a tab |
isc tab close [TAB] | Closes every pane in a tab, or in the current tab if you name none |
isc tab move TAB INDEX | Moves a tab to a position among its project's tabs, counted from 0 |
isc tab rename TAB NAME | Names a tab. An empty name removes it. |
isc project new [DIR] [--name NAME] | Opens a project for a directory, or for the current one if you give none. It's named after the directory unless you set --name. Prints its first pane. |
isc project select NAME | Goes to a project |
isc project rename NAME NEW | Renames a project |
isc project close NAME | Closes a project and everything running in it |
isc send PANE TEXT | Types text into a pane, as if at its keyboard |
isc key PANE KEY… | Presses keys by name, in order: ctrl-c, enter, escape, shift-tab, a |
isc attach [PANE] | Shows a pane in this terminal and lets you type into it. Ctrl+] leaves. |
isc capture PANE [--vt] | Prints a pane's screen and scrollback. With --vt, it also prints colours and styles, as escape sequences. |
isc status STATE [-m MESSAGE] [--resume COMMAND] [-p PANE] | Reports what a pane is doing: idle, running, waiting, done or failed. -m, or --message, says what the state is about. --resume is a command that picks the work up again, offered at the pane's prompt after the daemon has stopped. -p, or --pane, is required outside a pane. |
isc status explain [-p PANE] | Explains why a pane is in its current state |
isc notify TITLE [BODY] [-p PANE] | Asks for your attention on a pane's behalf |
isc mute [PANE] [--off] | Stops a pane from sending notifications. --off lets it send them again. Its state still shows. |
isc integrate [claude|codex|gemini|opencode|pi] [--remove] [--yes] | Adds an agent's hooks, after showing you the change and asking. With no agent named, it offers each agent found on this system. --remove takes the hooks out. --yes skips the question. |
isc integrate [AGENT] --status | Changes nothing. Prints, as JSON, for each agent: whether it's found, whether it already reports, the file its hooks go in, and what's left for you to do afterwards. |
isc wait PANE [--until STATE]… [--timeout SECONDS] | Blocks until the pane reaches a state: idle, running, waiting, done, failed or closed. Without --until, the states are done, failed, waiting or closed. Prints the state reached. The exit status is 124 when the time runs out. |
isc events | Prints what happens, one JSON object per line, until interrupted |
isc config | Prints a settings file with every setting at its default and every key of both keymaps |
isc completions bash|zsh|fish|elvish|powershell | Prints what that shell needs to complete isc commands, including the panes, tabs and projects that exist |
isc shell-integration bash|zsh|fish | Prints what that shell needs to tell its pane where each command starts and ends, and its exit status. fish 4 and later doesn't need it. |
isc daemon | Runs the daemon in the foreground |
isc kill-server | Stops the daemon and every program it runs, and returns once the daemon is gone. The layout comes back the next time it starts. It also works on a daemon of another version. |
isc restart-server [--yes] | Moves the running daemon to this version while the programs in its panes keep running. It asks first; --yes skips the question. |
isc version | Prints this version and the running daemon's, with the protocol and terminal engine of each, the daemon's process number, and whether they can talk to each other |