stui
한 장치에서 도는 오픈소스판(Apache-2.0). tmux 세션과 그 안의 코딩 에이전트, 오케스트레이션 런과 CI를 계정도 릴레이도 없이 봅니다.
stui는 tmux와 그 안에서 도는 코딩 에이전트를 위한 터미널 UI입니다. 세션, 윈도우, pane을 보여 주고, Claude Code, Codex, opencode, Pi 에이전트 중 어느 것이 쉬는지, 일하는지, 나를 기다리는지 알려 줍니다. pane마다 그 저장소의 GitHub Actions 상태도 보여 주고, 한 에이전트가 다른 에이전트에게 일을 나눠 주는 오케스트레이션 런도 보여 줍니다. 한 장치에서 도는 판이라 st도 계정도 릴레이도 필요 없습니다. 오픈소스(Apache-2.0)이며 저장소는 sophonz-labs/stui입니다. 지금 릴리스는 v0.2.3입니다. tmui, st ui와 무엇이 다른지는 tmui 페이지의 표에 있습니다.
모든 것이 이 장치에 머뭅니다. stui는 127.0.0.1에서 작은 서버를 띄워 tmux와 에이전트의 훅을 지켜보고, 상태는 ~/.stui에 둡니다. 네트워크 호출은 두 가지입니다. gh가 GitHub에 CI 런을 묻고, 사용량 폴러가 Anthropic과 OpenAI에 요금제 한도를 묻습니다(stui usage poll off로 멈춥니다).
설치
curl -fsSL https://dl.sophonz.io/stui/install.sh | sh
stui hooks install # Claude Code, Codex, opencode, Pi 등이 자기 턴을 알리게 합니다스크립트는 SHA-256을 확인한 뒤 stui를 ~/.local/bin에 둡니다(STUI_INSTALL_DIR, STUI_VERSION=v0.2.3). Go가 있으면 go install github.com/sophonz-labs/stui@latest도 됩니다. 훅이 없어도 stui는 에이전트 화면을 읽지만, 일하는 중인지 묻는 중인지를 확실히 가르는 것은 훅입니다.
stui upgrade는 같은 방식으로 SHA-256을 확인하고 최신 릴리스로 바꾼 뒤, 백그라운드 서버를 새 판으로 다시 띄웁니다. Homebrew가 설치한 stui는 건드리지 않고 brew upgrade stui를 실행하라고 알려 줍니다.
tmux 3.0 이상(팝업으로 붙으려면 3.2)과 macOS나 Linux가 필요하고, CI에는 gh가 필요합니다.
사용하기
stui # UI. 백그라운드 서버가 없으면 띄웁니다
stui ui agents # 이 화면으로 열기: sessions, agents, orch, ci, usage
stui status # 서버와 모든 에이전트의 훅 상태
stui stop # 서버 멈추기1–5로 화면을 바꿉니다(sessions, agents, orch, ci, usage). enter는 한 단계 아래로, esc는 위로 돌아옵니다. ?는 모든 키를 보여 줍니다. working은 청록, asking(에이전트가 나를 기다림)은 주황입니다. pane의 프로그램이 자기 상태를 직접 알려 준 것이면(OSC 7501) working (reported)처럼 표시가 붙습니다(v0.2.3). Claude Code는 tmux 안에서 이렇게 알리지 않아 훅과 화면으로 읽습니다.

| 키 | 어디서 | 하는 일 |
|---|---|---|
a | 세션, 윈도우, pane, agents, orch | 붙기. tmui처럼 prefix d로 돌아옵니다 |
c, o | pane, agents, CI | 그 pane의 CI 런, 런을 브라우저에서 열기 |
n | 세션, 윈도우 | 새 세션, 새 윈도우(에이전트와 함께 띄울 수도 있습니다) |
ctrl-d | 세션, 윈도우, orch | 없애거나 멈추기(먼저 묻습니다) |
r d | orch | 워커의 답, 그 diff 읽기 |
ctrl-e | 어디서나 | 머리글 켜고 끄기 |
: | 어디서나 | 화면, :ext, :config, 또는 stui 명령(:worker list, :orch history) |
복사는 tmui와 같습니다. y와 Y는 줄을 복사하고, v와 y는 pane 출력을 골라 복사하며, z는 터미널의 마우스 선택을 쓰도록 출력만 보여 줍니다.

오케스트레이션
코디네이터인 에이전트 하나가 다른 에이전트를 각자의 tmux 윈도우에 워커로 띄우고, 일을 맡기고, 기다렸다가 보고를 읽습니다. 이 명령은 에이전트가 씁니다. stui plugin install이 Claude Code와 Codex에 그 쓰는 법을 가르칩니다.
stui orch start --objective "make the parser tests pass"
stui worker start --agent claude --name tests --task task.md
stui worker wait --check-in 3m
stui worker read tests
같은 장치에 st가 있을 때
같은 장치에서 st가 돌면 stui는 st의 런과 에이전트도 읽기 전용으로 보여 줍니다. 새로 읽을 때마다 st의 로컬 서버(127.0.0.1, GET만)에 묻고, st의 런에는 (st)를 붙입니다.
- 읽는 것은 st의 줄에서도 됩니다. 출력, 붙기, CI, 복사,
r과d입니다. - 바꾸는 것은 안 됩니다. st의 워커에서
ctrl-d를 누르면this is st's run: use st ui라고 알려 줍니다. 런은 그 코디네이터를 띄운 도구의 것입니다. - 설정에서
st.read: false로 끕니다.
다른 장치는 st ui의 몫입니다. stui는 이 장치만 봅니다.
플러그인과 설정
stui는 tmui와 같은 플러그인(tui-plugins)을 읽습니다. stui ext install|list|remove <이름>으로 다룹니다. (stui plugin은 다른 것으로, 코딩 에이전트에게 주는 오케스트레이션 스킬입니다.)
설정은 $XDG_CONFIG_HOME/stui/config.yaml(기본은 ~/.config/stui/config.yaml)에 두고, stui config와 stui config edit로 봅니다. 키는 tmui와 같고(ui.logo, ui.headless, ui.color, refreshRate, startView, plugins.enabled, plugins.disabled), 여기에 st.read가 더해집니다. startView는 sessions, agents, orch, ci, usage 중 하나입니다.