st ui

k9s가 클러스터를 보여 주듯 머신을 터미널 한 화면에 보여 줍니다. 머신, 세션, 윈도우, 에이전트와 그 런, 문서와 CI를 보고, 어떤 st 명령이든 콜론 하나로 실행합니다.

st ui에는 계정의 머신과 그 세션·윈도우, 그 안의 코딩 에이전트와 오케스트레이션 런, 머신의 볼트, 체크아웃마다의 CI, 에이전트의 플랜 한도, 머신의 CPU와 메모리가 한 화면에 있고 2초마다 새로 읽힙니다. 앱과 웹 터미널이 읽는 그 공유를 읽으므로, 이 머신에서 st가 공유 중이어야 합니다. st 0.4.0-rc부터 있고, 지금은 후보판(rc) 채널에만 있습니다. st upgrade --channel rc로 받습니다.

st ui의 첫 화면: 위쪽 머리글에 호스트, CPU·메모리·스왑, 에이전트 사용량과 수, 키, sophon>_ 워드마크와 그 아래 st 버전. 아래에 머신 트리가 있고 이 머신에 (here)가 붙었으며 세션 api, docs, work 중 work가 펼쳐져 윈도우 shell, lead(claude working), tests(claude waiting), readme(codex done)가 보인다
첫 화면: 머신 트리, 세션 work를 펼친 모습

여는 법

st ui            # 머신 트리에서 시작합니다
st ui agents     # 뷰 이름을 주면 그 뷰에서 시작합니다

머리글 왼쪽은 머신(호스트, OS, 공유 중인 세션과 멀티플렉서, CPU·메모리·스왑)이고, 가운데는 에이전트(플랜 사용량, working·waiting·idle 수, 사용량 가드가 켜졌는지), 오른쪽은 지금 뷰의 키입니다. 맨 아래 줄은 들어온 길(<sessions> <windows> <panes>)과 마지막으로 일어난 일입니다.

머신 트리

st ui는 쿠버네티스가 노드를 보여 주듯 계정의 머신을 나무로 보여 주며 시작합니다. 머신 아래 세션, 세션 아래 윈도우입니다. 이 머신이 (here)를 달고 맨 위에 오고, 다른 머신은 온라인인 것부터 옵니다. 머신은 펼친 채, 세션은 접힌 채 시작합니다. →/l은 펴기, ←/h는 접기 또는 부모로, space는 접기·펴기를 바꿉니다. 오프라인 머신은 행만 남고 마지막으로 소식이 온 때를 보여 줍니다.

세션이나 윈도우에서 Enter나 a를 누르면 거기에 붙습니다. 다른 머신이면 st attach <머신>/<세션> --window <n>이고, 앱이 가는 것처럼 그 머신 자신의 링크로 붙습니다. 체크아웃 안의 윈도우에는 CI가 보이고, c가 그 런을 브라우저로 엽니다.

뷰와 키

숫자 하나, 또는 :와 뷰 이름으로 뷰를 바꿉니다.

키뷰보여 주는 것
0:nodes머신 트리. 첫 화면입니다
1:sessions이 머신의 세션: 윈도우, 에이전트와 그 상태, 붙은 사람, 나이, 지금 윈도우
2:agents에이전트가 있는 모든 pane. 급한 것(waiting, error, working)이 먼저
3:orch오케스트레이션 런을 트리로: 런, 코디네이터, 워커와 그 워커의 워커
4:machines계정의 머신을 목록으로
5:usageClaude Code와 Codex의 플랜 한도와 초기화 시각
6:top최근 10분의 CPU, 메모리, 스왑
7:docs머신의 볼트: 세션 폴더, 윈도우 폴더, 노트
8:ci이 머신 체크아웃들의 최근 GitHub Actions 런

Enter는 그 행으로 들어갑니다. 세션에서 윈도우로, 윈도우에서 pane으로, pane에서 그 출력(마지막 2000줄, 끝을 따라갑니다)으로 갑니다. :windows [세션]과 :panes [세션]은 바로 그리로 갑니다.

에이전트 뷰: 에이전트 pane 넷. 기다리는 tests가 먼저, 그다음 working인 review와 lead, done인 readme. 각각 세션, 윈도우, 런에서의 역할, 제목이 보인다
에이전트. 나를 기다리는 것이 먼저 옵니다

어디서나 쓰는 키입니다.

키
j k ↑ ↓위아래
g G맨 위와 맨 아래
ctrl-b ctrl-f한 페이지 위아래
Enter그 행으로 들어가기
esc뒤로, 또는 거르기 지우기
/행 거르기
ctrl-r지금 모두 다시 읽기
?도움말. 지금 뷰의 키도 나옵니다
q뒤로. 맨 위에서는 끝내기. ctrl-c는 어디서든 끝냅니다

뷰마다 따로 있는 키입니다.

뷰키
머신 트리←/→ 접기·펴기, Enter나 a 붙기, c 브라우저에서 CI, o 들이기, R 내보내기
세션p pane, a 붙기, n 새 세션, ctrl-d 세션 종료(먼저 묻습니다)
윈도우a 붙기, c 브라우저에서 CI, n 새 윈도우(에이전트 이름, 빈칸이면 셸), ctrl-d 닫기(먼저 묻습니다)
pane, 에이전트a 그 pane에 붙기, o 들이기, R 내보내기
오케스트레이션←/→ 접기·펴기, r 워커의 마지막 답(st worker read), d 그 변경(st worker diff --stat), a 붙기, o 들이기, R 내보내기, ctrl-d 워커 멈추기(먼저 묻습니다)
사용량g 사용량 가드 켜기·끄기
문서←/→ 접기·펴기, Enter 노트 원문
CIEnter나 c 그 런을 브라우저로

st ui는 pane에 글을 쳐 넣지 않습니다. 에이전트에게 말하려면 a로 그 pane에 붙습니다.

오케스트레이션

3은 런마다 나무를 보여 줍니다. 런, 코디네이터, 워커, 그 워커의 워커를 폴더처럼 접고 폅니다. 코디네이터가 다른 머신에 있는 워커는 그 런 아래 자기 가지로 섭니다. 끝난 워커는 ✓와 회색, 기다리는 워커는 주황, 일하는 워커는 청록입니다.

오케스트레이션 뷰: 런 하나에 working인 코디네이터 lead와 워커 둘(waiting인 tests, done인 readme). 각각 pane, 에이전트, 윈도우, 요약이 보인다
런 하나: 코디네이터와 워커 둘

o는 에이전트를 런의 워커로 들이고 R은 내보냅니다. st worker adopt, st worker release와 같습니다. pane 행에서도, 머신 트리의 윈도우에서도 되고, 다른 머신의 에이전트도 됩니다. o는 이 머신의 에이전트 가운데 부모를 고르고 역할을 한 줄 받은 뒤, 무엇을 할지 보여 주고 확인을 받습니다.

붙었다가 돌아오기

a는 보고 있던 윈도우나 pane을 골라 둔 채 이 터미널을 그 세션의 st attach에 넘깁니다. 붙기 직전에 돌아오는 키를 한 줄로 알려 주고, 힌트 줄에도 <C-b d> back이 있습니다.

st ui가 도는 곳붙는 곳st ui로 돌아오기
tmux 밖이 머신Ctrl-b d (zellij는 Ctrl-o d)
tmux 3.3 이상 안이 머신Ctrl-b d. 세션이 st ui 위의 팝업으로 열리고, 떼면 닫힙니다
tmux 3.3 미만 안이 머신Ctrl-b L(tmux의 마지막 세션 키)
어디서든다른 머신Ctrl-b d, 또는 줄 처음에서 ~.

문서와 CI

7은 머신의 볼트를 나무로 보여 줍니다. 폴더는 접힌 채이고, 점으로 시작하는 파일과 폴더(.obsidian, .st, .briefs)는 Obsidian처럼 빠집니다. 노트에서 Enter를 누르면 프런트매터까지 디스크에 있는 그대로 보여 줍니다.

문서 뷰: 볼트의 docs와 work 폴더를 펼쳐 노트 release와 plan이 보이고, 각각 크기와 나이가 있다
볼트. 세션마다, 윈도우마다 폴더가 있습니다

체크아웃 안의 윈도우는 그 브랜치의 최근 GitHub Actions 런을 보여 줍니다(돌고 있음, ✓ 통과, ✗ 실패). 8은 이 머신 모든 체크아웃의 최근 런을 돌고 있는 것부터 보여 주고, Enter나 c가 브라우저로 엽니다. ssh 안이거나 화면이 없으면 주소를 대신 보여 줍니다. :ci가 이 뷰이므로 st ci 명령은 :st ci로 칩니다.

CI 뷰: sophonz-labs/stui main 브랜치의 통과한 런 둘. 각각 워크플로, 제목, 걸린 시간, 나이, 속한 윈도우가 있다
이 머신 체크아웃들의 CI

: 명령

:는 뷰 이름도, 어떤 st 명령도 받습니다. :doc ls, :worker list, :upgrade, :login, :st ci, :history 같은 것입니다. st ui는 터미널을 그 명령에 넘겼다가, 끝나면 키 하나를 기다렸다가 돌아옵니다. :st <명령>도 되고, Tab은 뷰 이름과 st 명령을 완성합니다. :q는 끝냅니다.