| name | it2 |
| description | Control iTerm2 from the command line โ manage sessions, windows, tabs, profiles, and broadcast input across panes. Use when the user needs to split panes, open new windows/tabs, run commands in specific sessions, send text to terminals, read session output, or orchestrate multi-pane agent workspaces. |
| allowed-tools | Bash(it2:*) |
iTerm2 Control with it2
Quick start
it2 session list --json
it2 session split --vertical
it2 session run "npm run dev"
it2 session send "some text"
it2 window new
it2 tab new
it2 session read
it2 session capture -o /tmp/session-dump.txt --history
Sessions
it2 session list
it2 session list --json
it2 session split
it2 session split --vertical
it2 session split --profile "Dev"
it2 session split -s <session-id>
it2 session run "ls -la"
it2 session run "npm test" -s <session-id>
it2 session run "echo hi" --all
it2 session send "partial input"
it2 session send "text" -s <session-id>
it2 session send "broadcast" --all
it2 session read
it2 session read -n 50
it2 session read -s <session-id>
it2 session capture -o /tmp/out.txt
it2 session capture -o /tmp/out.txt --history
it2 session capture -s <session-id> -o /tmp/out.txt
it2 session set-name "Agent Worker 1"
it2 session focus -s <session-id>
it2 session restart
it2 session close -s <session-id>
it2 session get-var <variable>
it2 session set-var <variable> <value>
Windows
it2 window list
it2 window new
it2 window new --profile "Dev"
it2 window new --command "htop"
it2 window focus
it2 window resize 220 50
it2 window move <x> <y>
it2 window fullscreen
it2 window arrange
it2 window close
Tabs
it2 tab list
it2 tab new
it2 tab next
it2 tab prev
it2 tab goto 2
it2 tab select -s <tab-id>
it2 tab move
it2 tab close
Profiles
it2 profile list
it2 profile show "Default"
it2 profile apply "Dev"
it2 profile set <profile> <property> <value>
App / Global
it2 app activate
it2 app hide
it2 app theme
it2 app theme dark
it2 app theme light
it2 app version
it2 app get-focus
it2 app quit
Broadcasting (send input to multiple sessions at once)
it2 app broadcast on
it2 app broadcast off
it2 app broadcast add <session-id> <session-id> ...
Monitoring
it2 monitor output
it2 monitor prompt
it2 monitor keystroke
it2 monitor activity
it2 monitor variable <variable-name>
Config & Aliases
it2 config-path
it2 config-reload
it2 alias <alias-name>
Common Patterns
Multi-agent workspace setup
Layout rule: max 2 columns wide. Fill panes in this order:
Step 1 Step 2 Step 3 Step 4 (full)
โโโโโโโโโ โโโโโโฌโโโโโ โโโโโโฌโโโโโ โโโโโโฌโโโโโ
โ p1 โ โ โ p1 โ p2 โ โ โ p1 โ p2 โ โ โ p1 โ p2 โ
โ โ โ โ โ โ โโโโโโค โโโโโโผโโโโโค
โ โ โ โ โ โ โ p3 โ โ p4 โ p3 โ
โโโโโโโโโ โโโโโโดโโโโโ โโโโโโดโโโโโ โโโโโโดโโโโโ
start split vert split right H split left H
Split order: vertical โ right-horizontal โ left-horizontal โ done (2ร2)
it2 window new
P1=$(it2 session list --json | jq -r '.[-1].id')
it2 session split --vertical -s "$P1"
P2=$(it2 session list --json | jq -r '.[-1].id')
it2 session split -s "$P2"
P3=$(it2 session list --json | jq -r '.[-1].id')
it2 session split -s "$P1"
P4=$(it2 session list --json | jq -r '.[-1].id')
it2 session set-name "Orchestrator" -s "$P1"
it2 session set-name "Worker A" -s "$P2"
it2 session set-name "Worker B" -s "$P3"
it2 session set-name "Worker C" -s "$P4"
it2 session run "claude" -s "$P1"
it2 session run "claude" -s "$P2"
it2 session run "claude" -s "$P3"
it2 session run "claude" -s "$P4"
For more than 4 agents, open a new window/tab rather than adding a
third column.
Read output from a session
it2 session capture -s <session-id> -o /tmp/agent-output.txt --history
cat /tmp/agent-output.txt | tail -50
Broadcast a command to all agent sessions
it2 app broadcast on
it2 session run "git status"
it2 app broadcast off
Get session IDs for scripting
it2 session list --json | jq '.[].id'