cli-anything-iterm2은(는) 무엇을 하나요?
iTerm2를 위한 상태 기반(Stateful) CLI 도구입니다. WebSocket을 통해 iTerm2 Python API로 실행 중인 iTerm2 프로세스를 제어합니다.
사전 요구 사항
- macOS + iTerm2 실행:
brew install --cask iterm2 - Python API 활성화: iTerm2 → 환경설정 → 일반 → 매직 → Python API 활성화
- 설치:
pip install cli-anything-iterm2(또는 소스에서pip install -e .)
기본 문법
cli-anything-iterm2 [--json] <그룹> <명령어> [옵션] [인자]
기계가 읽을 수 있는 출력을 위해 항상 --json을 사용하세요 (에이전트 사용 시 필수).
명령어 그룹
| 그룹 | 용도 |
|---|---|
app | 앱 상태, 워크스페이스 스냅샷, 컨텍스트 관리, 앱 수준 변수, 모달 대화상자, 파일 패널 |
window | 창 생성, 목록, 닫기, 크기 조정, 전체 화면 |
tab | 탭 생성, 목록, 닫기, 활성화; 방향별 분할 패널 탐색 |
session | 텍스트 전송, 원시 바이트 주입, 화면 읽기, 전체 스크롤백, 분할 패널, 프롬프트 감지 |
profile | 프로필 목록, 프로필 세부 정보, 색상 프리셋 목록/적용 |
arrangement | 창 레이아웃 저장 및 복원 |
tmux | 완전한 tmux -CC 통합: 부트스트랩, 연결, 창, 명령어 |
broadcast | 브로드캐스트 도메인을 통해 여러 패널에 키 입력 동기화 |
menu | iTerm2 메뉴 항목을 프로그래매틱하게 호출 |
pref | 전역 iTerm2 환경설정 읽기/쓰기; 모든 유효한 키 목록; tmux 설정 |
기존 워크스페이스 탐색
기존 패널이 있는 세션에 착륙했을 때, 각 패널의 전체 화면 내용을 읽지 않고도 실행 중인 작업을 파악해야 한다면 app snapshot을 사용하세요:
cli-anything-iterm2 --json app snapshot
모든 창의 모든 세션에 대해 이름, 현재 디렉토리, 포그라운드 프로세스, user.role 레이블, 마지막 가시 출력 줄을 반환합니다.
명명 규칙 — 워크스페이스를 설정할 때 패널에 레이블을 지정하면 나중에 쉽게 찾을 수 있습니다:
cli-anything-iterm2 session set-var user.role "api-server"
cli-anything-iterm2 session set-var user.role "log-tail"
cli-anything-iterm2 session set-var user.role "editor"
app snapshot은 프로세스 및 경로와 함께 이러한 역할을 표시하여 한 번의 호출로 전체 그림을 제공합니다.
일반적인 에이전트 워크플로
# 1. 탐색 — 모든 세션의 스냅샷: 이름, 경로, 프로세스, 역할, 마지막 출력 줄
cli-anything-iterm2 --json app snapshot
# 2. 컨텍스트 설정 (이후 명령어에 필요한 창/탭/세션 ID 저장)
cli-anything-iterm2 app current
# 3. 상호 작용 — 컨텍스트가 설정되면 --session-id 불필요
cli-anything-iterm2 session send "git status"
cli-anything-iterm2 --json session scrollback --tail 200 --strip
# 4. 다중 패널 워크스페이스 생성 — 패널에 레이블을 지정하여 스냅샷이 나중에 식별 가능하게 함
cli-anything-iterm2 session split --vertical --use-as-context
cli-anything-iterm2 session send "python3 -m http.server 8000"
cli-anything-iterm2 session set-var user.role "http-server"
참조 파일
작업에 필요한 것만 읽으세요 — 각 파일은 좁은 단일 관심사(~10–30줄)로 구성되어 있습니다:
| 파일 | 다음이 필요할 때 읽으세요... |
|---|---|
references/session-io.md | 텍스트 전송, 바이트 주입, 화면/스크롤백 읽기, 선택 영역 가져오기 |
references/session-control.md | 패널 분할, 세션 활성화/닫기, 크기 조정, 이름 변경, 세션 변수 |
references/session-shell-integration.md | wait-prompt, wait-command-end, get-prompt; 안정적인 send→wait→read 패턴 |
references/layout-window-tab.md | 창/탭 생성/닫기/크기 조정, 분할 패널 탐색 |
references/layout-arrangement.md | 창 레이아웃 저장 및 복원 |
references/app-context.md | 스냅샷(탐색), 상태, 컨텍스트 관리, 앱 변수, 모달 대화상자, 파일 패널 |
references/profile-pref.md | 프로필 목록/가져오기/프리셋, 환경설정 읽기/쓰기, tmux 환경설정 단축키 |
references/broadcast-menu.md | 여러 패널에 키 입력 브로드캐스트, 메뉴 항목 호출 |
references/tmux-commands.md | 모든 tmux CLI 명령어 (부트스트랩, 전송, 탭, 창 생성, set-visible) |
references/tmux-guide.md | 전체 tmux -CC 워크플로, 패널→세션 ID 매핑 |
references/json-session.md | 세션, 창, 탭, 화면, 스크롤백, 주입에 대한 --json 스키마 |
references/json-tmux-app.md | tmux, 앱 대화상자, 환경설정, 오류에 대한 --json 스키마 |
REPL 모드
인자 없이 실행하면 명령어 사이에 컨텍스트를 유지하는 대화형 REPL이 실행됩니다:
cli-anything-iterm2