세션, 창, pane

앱이 보여 주는 tmux 구조, 화면마다 한 세션을 따로 보는 방식, 연결이 끊기거나 tmux가 죽어도 남는 것을 설명합니다.

앱과 브라우저에 나오는 목록은 tmux의 구조 그대로입니다. st가 그 위에 별도의 층을 얹지 않습니다.

  • 장치
    • 세션workst --session work
      • 창 1claude탭 하나, 창 목록의 한 줄
        • pane %3Claude Code에이전트가 실행되는 곳
        • pane %4zsh
      • 창 2tests
        • pane %5npm test
장치. 세션 work(st --session work). 창 1 claude는 탭 하나, 창 목록의 한 줄이고 pane %3 Claude Code(에이전트가 실행되는 곳)와 pane %4 zsh가 있습니다. 창 2 tests에는 pane %5 npm test가 있습니다
  • 세션은 이름이 붙은 창의 묶음입니다. 장치 하나에 여러 개 있을 수 있습니다.
  • 창은 세션의 한 화면입니다. 데스크탑 앱과 웹 터미널에서는 탭 하나이고, 폰 앱에서는 창 목록의 한 줄입니다.
  • pane은 창을 좌우나 위아래로 나눈 한 칸입니다. 에이전트는 pane 안에서 실행되고, st와 오케스트레이션 명령은 pane id(%3)로 pane을 가리킵니다.

st가 공유하는 세션

st는 이름으로 세션 하나를 공유합니다. 기본은 default이고, st --session <이름>으로 다른 이름을 줄 수 있습니다. 세션을 새로 만들어야 하는데 터미널 앞에 사람이 있으면 먼저 이름을 묻습니다. 기본 이름을 쓰려면 Enter만 누르면 됩니다. 이름에는 영문자, 숫자, -, _만 쓸 수 있습니다.

앱에는 그 세션뿐 아니라 장치의 tmux 세션이 모두 나오고, st는 그 모든 세션에서 에이전트를 지켜봅니다. st attach는 지금 쓰고 있는 터미널을 공유 중인 세션에 붙입니다.

화면은 여럿, 세션은 하나

데스크탑 앱, 폰 두 대, 브라우저가 한 세션에 동시에 붙을 수 있습니다. 이들은 세션에 직접 붙지 않고, 같은 tmux 세션 그룹 안에서 저마다 자기 뷰를 받습니다. 그래서 화면마다 현재 창이 따로 있습니다.

  • 서로 다른 창을 보면 화면마다 크기가 따로 정해집니다. 폰이 한 창을 본다고 데스크탑의 창이 줄어들지 않습니다.
  • 같은 창을 보면 모두가 크기 하나를 씁니다. tmux는 창 하나에 크기를 하나만 주기 때문입니다. 마지막으로 조작한 쪽이 크기를 정하고, 창보다 좁은 페이지는 줄이 다 들어갈 때까지 글자 크기를 줄입니다.

입력은 같은 셸로 들어가므로 모두에게 바로 보입니다. zellij에는 세션 그룹이 없어서 두 번째 화면이 첫 화면과 크기를 함께 씁니다. 자세한 내용은 멀티플렉서에 있습니다.

세션은 연결보다 오래 남습니다

세션은 tmux에 속합니다. 탭을 닫아도, 폰을 잠가도, 네트워크가 끊겨도, 데스크탑 앱을 종료해도, 심지어 st exit를 해도 세션과 그 안의 프로그램은 계속 실행되고, 다음에 연결하면 그대로 다시 찾을 수 있습니다. st ls는 세션 목록과 지금 각 세션에 누가 붙어 있는지 보여 줍니다.

예외는 --mux none입니다. 셸을 붙잡아 둘 멀티플렉서가 없어서 연결이 끊기면 셸도 끝납니다.

tmux가 죽은 뒤 복구

tmux 서버가 죽으면 그 안의 프로그램도 함께 종료됩니다. st는 10초마다 서버의 스냅샷을 기록하고(최근 다섯 개를 보관합니다), 지난번과 다른 서버를 발견하면 세션의 이름, 창, 레이아웃, 폴더를 다시 구성합니다. Claude Code와 Codex 패널은 대화를 이어 갑니다. 대화가 장치에 저장되어 있으면 st가 이어가기 명령을 입력하고 Enter까지 누릅니다. 그 밖의 프로그램은 다시 실행하지 않으며, 앱에서는 그 창에 restored 표시가 붙습니다. 컴퓨터를 재시작한 뒤에는 스스로 복원하지 않고 먼저 묻습니다.

st restore --pending     # 재시작 뒤 대기 중인 스냅샷
st restore --list        # 남아 있는 스냅샷
st restore --dry-run     # 복원하면 무엇을 할지
st restore --from <id>   # 하나를 선택해 직접 복원

이 기능은 tmux에만 해당합니다. zellij는 세션을 스스로 보관합니다. 자세한 내용과 끄는 방법은 멀티플렉서에 있습니다.

새 세션과 새 창

  • 데스크탑 앱: 사이드바의 + New session, 창 탭 옆의 +를 씁니다. 새 세션은 ⌘N으로도 만듭니다.
  • 폰 앱: Sessions 탭의 New session, 세션의 창 시트에 있는 New window를 씁니다. New window에는 장치에 설치된 코딩 에이전트도 나옵니다. 하나를 고르고 원하면 첫 프롬프트를 적으면, st가 창을 열고 에이전트를 시작한 뒤 프롬프트를 입력합니다(st 0.3.58 이상).
  • 웹 터미널: 사이드바의 + New session을 씁니다.
  • 장치의 터미널: 평소 쓰던 tmux 명령도 되고, st --session <이름>도 됩니다.

앱과 웹 터미널에서 만든 새 창과 분할한 패널은 지금 보고 있는 패널의 폴더에서 열립니다(tmux, st 0.3.101 이상). 그 폴더가 지워졌으면 예전처럼 세션을 시작한 폴더(보통 홈)에서 열리므로, 창이 열리지 않는 경우는 없습니다. zellij는 바뀌지 않았습니다.

어디서든 창이나 세션을 닫으면 먼저 확인을 받고, 그 안에서 아직 실행 중인 프로그램과 에이전트의 이름을 알려 줍니다.

이름

창 이름은 tmux의 것이라 어디서 바꾸든 모든 화면에 반영됩니다. 데스크탑 앱과 웹 터미널에서는 탭이나 사이드바의 행을 더블클릭하고, 폰 앱에서는 길게 누릅니다. 워커의 창 이름은 그 워커를 띄운 코디네이터가 붙입니다.

장치 이름은 이와 별개로, 계정에서 그 장치를 부르는 이름입니다(로그인과 링크).