본문으로 건너뛰기

원격 작업 이어가기 (attach)

다른 컴퓨터에서 진행 중인 작업을 내 Tasty 화면으로 가져와 이어서 작업해 보세요. 원격 Tasty의 워크스페이스에 SSH로 연결하면 터미널 배치와 출력을 보고 조작할 수 있습니다. 이 연결을 attach, 내 화면에 표시되는 원격 워크스페이스를 **미러(mirror)**라고 부릅니다.

개념

  • attach 는 이미 떠 있는 원격 Tasty 의 워크스페이스를 가져와 보는 것입니다. 새 원격 셸을 여는 게 아닙니다. 원격 컴퓨터에 Tasty 가 실행 중이어야 합니다 (GUI 든 윈도우 없이 실행되는 headless 빌드 든).
  • 원격 워크스페이스는 mirror 로 가져온 쪽이 독점합니다. 그동안 원격 쪽 사용자는 그 터미널을 볼 수는 있지만 입력할 수 없습니다 (읽기 전용). 연결을 끊으면 돌아옵니다.
  • mirror 워크스페이스는 사이드바에 하늘색 원격 표시가 붙습니다. 재시작하면 사라지며 저장되지 않습니다.
  • 원격 Tasty 는 PATH 에 없어도 됩니다. 포트 파일(~/.tasty/tasty.port)만 읽을 수 있으면 됩니다.

1. 프로필 만들기

프로필은 두 종류입니다. 둘 다 ~/.tasty/remote-profiles.toml 에 저장됩니다.

종류 담는 것 쓰임
ssh 호스트·사용자·포트·identity 같은 접속 정보만 tasty tool ssh 접속, attach 프로필이 참조
tasty-attach attach에 쓸 연결 설정(ssh 프로필 참조 또는 직접 입력) + 원격 tasty 경로·포트 발견 방식 attach·원격 조회는 이 종류만 씁니다

ssh 프로필로 직접 attach 하려 하면 거부됩니다. 반드시 tasty-attach 프로필을 하나 만듭니다.

GUI 에서

  1. 사이드바의 도구 버튼 → 도구 메뉴 → 원격 접속… .
  2. 원격 접속 프로필 탭 → 프로필 추가 . 이름·호스트·사용자·포트·셸을 적고 저장합니다. 셸을 auto 로 두면 저장 시 SSH 로 한 번 접속해 셸을 감지합니다.
    • ~/.ssh/config 에 이미 있는 호스트는 프로필 목록 아래 SSH 설정에 등록된 호스트 섹션에서 호스트 오른쪽의 프로필 추가 로 바로 만듭니다. 별칭만 저장되므로 ssh config 를 고쳐도 그대로 따라갑니다. 이미 만들어 둔 호스트에는 버튼 대신 등록됨 표시가 붙습니다. 이 목록은 팝업을 열 때 한 번 읽으므로, ssh config 를 고친 뒤에는 팝업을 다시 열면 됩니다.
    • 키 파일은 Passkey 탭에 먼저 등록하고 프로필의 Passkey 드롭다운에서 고릅니다. 비밀 값은 ~/.tasty/passkeys.toml 에 경로로만 참조됩니다.
  3. Attach 탭 → Attach 추가 . 이름을 적고 연결 에서 SSH 프로필 (위에서 만든 것 참조) 또는 직접 입력(인라인) 을 고릅니다.
    • 원격 TASTY 그룹: 실행 파일 (원격 tasty 경로, 기본 tasty) · 포트 모드 · 포트 파일. 원격 PATH 에 tasty 가 없으면 실행 파일에 전체 경로를 적거나 포트 모드를 file-unix 로 둡니다.

저장 중에는 저장 버튼이 잠시 비활성화됩니다. 실패하면 입력값과 오류 안내가 남으므로 수정해 다시 저장할 수 있습니다. 취소하거나 팝업을 닫아도 이미 접수한 저장은 계속되며, 늦은 완료가 다시 연 폼의 입력을 덮지 않습니다. 새 Passkey 이름이 기존 항목과 같으면 기존 자격증명을 바꾸지 않고 거절합니다.

Passkey 편집 중 값을 바꿨다가 비워도 늦게 불러온 값이 입력을 덮지 않습니다. 취소 후 다시 편집하면 새 편집에서 요청한 값만 받습니다. 자격증명을 불러오지 못하면 현재 편집 화면에 오류를 표시합니다.

CLI 에서

CLI의 프로필·Passkey 변경 명령은 파일 잠금 안에서 최신 목록에 변경을 적용합니다. 손상되거나 읽을 수 없는 목록은 덮어쓰지 않습니다. add-ssh의 SSH 감지는 저장이 성공한 뒤 시작하며, 감지 중 다른 명령이 바꾼 프로필은 덮어쓰지 않습니다.

Passkey의 inline 파일, 자격증명 목록, 프로필 참조는 차례대로 저장하며 여러 파일을 한 번에 되돌리지는 않습니다. 오류에 앞 단계의 저장 성공 여부가 표시되면 해당 목록과 참조 상태를 확인하세요. 삭제 시 목록 제거는 끝났지만 관리 파일 정리에 실패할 수 있습니다. path로 등록한 사용자 파일은 삭제하지 않습니다. Windows inline 저장에는 PowerShell의 ACL 설정·검증이 필요하며, 실패하면 비밀 내용을 쓰지 않습니다.

# ssh 프로필
tasty tool remote-profile add-ssh --name gx10 --host 10.0.0.5 --user me --port 22 --identity ~/.ssh/id_ed25519
tasty tool remote-profile add-ssh --name win --host 10.0.0.9 --shell powershell --label "Windows 빌드 PC"   # 셸·표시 이름 지정
tasty tool remote-profile list-local                      # ~/.ssh/config 별칭 목록
tasty tool remote-profile import --from devbox --name devbox   # 별칭을 ssh 프로필로

# tasty-attach 프로필 (ssh 프로필 참조)
tasty tool remote-profile add-attach --name gx10-attach --ssh-ref gx10 \
  --remote-tasty /home/me/tasty/target/release/tasty --port-mode auto

# 확인·수정·삭제
tasty tool remote-profile list [--kind ssh|tasty-attach]
tasty tool remote-profile show --name gx10-attach
tasty tool remote-profile edit --name gx10-attach --port-mode file-unix
tasty tool remote-profile detect --name gx10-attach       # 원격에 실제로 접속해 포트 검증
tasty tool remote-profile remove --name gx10-attach

포트 모드:

값 동작
auto (기본) subcommand → file-unix → file-windows 순서로 시도
subcommand 원격에서 <실행 파일> port 를 실행해 포트를 얻습니다
file-unix 원격의 ~/.tasty/tasty.port 를 읽습니다 (tasty 실행 없음)
file-windows Windows 원격의 포트 파일을 읽습니다

--port-file <경로> 를 주면 그 파일을 최우선으로 읽습니다.

원격 컴퓨터에서 지금 떠 있는 인스턴스의 IPC 포트를 직접 확인하려면 그 머신에서 tasty port 를 실행합니다 — 포트 모드 subcommand 가 원격에서 부르는 것이 이것입니다.

2. 원격 연결 확인

tasty remote check --profile gx10-attach       # alive: gx10 (port 41234, version …, N workspaces)
tasty remote workspaces --profile gx10-attach  # 원격 워크스페이스 목록 (id·이름·점유 여부)

remote check 는 포트를 찾은 뒤 실제로 응답까지 받아야 alive 로 판정합니다. 프로그램은 종료되고 포트 파일만 남았다면 dead로 표시됩니다. 실패 원인은 SSH 연결 실패 / 원격 인스턴스 미실행 / 응답 해석 실패 / 타임아웃 네 가지로 구분해 알려 줍니다.

연결 시도는 무한정 기다리지 않습니다 — SSH 접속 10초, 단계당 20초, 전체 45초 상한. 느린 회선이면 ssh 프로필의 --option ConnectTimeout=30 처럼 직접 늘립니다.

3. GUI 로 attach 하기

  1. 사이드바에서 새 워크스페이스(+) 버튼을 우클릭하거나 빈 배경을 우클릭 → 원격 워크스페이스 추가 . (카테고리를 켰다면 카테고리 헤더 우클릭에도 있습니다.)
  2. 왼쪽 Attach 프로필 에서 프로필을 고릅니다. 오른쪽에 원격 워크스페이스 목록이 뜹니다 (20초 안에 응답이 없으면 중단하고 다시 시도 를 보여 줍니다).
  3. 워크스페이스를 고르고 연결 . 다른 사람이 이미 붙어 있는 것은 사용 중 으로 표시되고 고를 수 없습니다.
    • 목록 첫 행 새 워크스페이스 를 고르면 원격에 기본 이름으로 워크스페이스를 만든 뒤 붙습니다 (만들고 연결 ). 이렇게 만든 워크스페이스는 원격에 남습니다.
    • 목록이 뜨면 ↑ / ↓ 로 행을 옮기고 Enter 로 연결할 수 있습니다.
  4. 사이드바에 원격 표시가 붙은 mirror 워크스페이스가 생기고 포커스가 옮겨갑니다. 연결이나 mirror 준비에 실패하면 그 윈도우에 실패 토스트가 사유와 함께 뜹니다. 윈도우를 닫았다면 띄우지 않습니다.

4. CLI 로 attach 하기

tasty tool attach --list                                   # tasty-attach 프로필 목록
tasty tool attach gx10-attach --workspace 3                # 워크스페이스째 mirror (터미널에서 실행)
tasty tool attach gx10-attach 57                           # 서피스 하나만
tasty tool attach gx10-attach 57 --raw                     # 내 터미널을 원격 서피스에 직결 (나가기 Ctrl+\)
tasty remote attach --profile gx10-attach --workspace 3    # tool attach 와 같은 일의 긴 형태
tasty remote attach --ssh me@10.0.0.5 --workspace 3        # 프로필 없이 1회성
tasty remote new-workspace --profile gx10-attach --name build --cwd /home/me/proj   # 원격에 워크스페이스 생성

자주 쓰는 옵션:

옵션 쓰는 곳 동작
--send <입력> tool attach, remote attach 붙은 직후 입력을 한 번 보냅니다(\n \r \t \xNN 이스케이프 해석)
--send-to <서피스> tool attach, remote attach 워크스페이스 attach 에서 --send 를 받을 원격 서피스 ID
--dump-after <ms> tool attach, remote attach 지정한 시간 동안 출력을 모아 mirror 화면을 출력하고 끝냅니다(GUI 없이 확인할 때)
--remote-tasty <경로> remote attach·check·workspaces·new-workspace 프로필 없이 쓸 때 원격 tasty 실행 파일 경로(기본 tasty). --profile 을 주면 프로필 값을 씁니다
--remote-port-mode <모드> 위와 같음 포트 찾기 방식(auto·subcommand·file-unix·file-windows)
--json remote workspaces, remote new-workspace 결과를 JSON 으로 출력합니다
  • 워크스페이스 attach 는 그 안의 터미널을 분할 구조까지 그대로 mirror 합니다.
  • 이미지 서피스처럼 플러그인이 직접 그리는 서피스도 내용이 그대로 보이고 클릭·키 입력이 원격에 전달됩니다. 직접 설치한 플러그인의 서피스도 같습니다.
  • 탐색기에서는 원격 컴퓨터의 파일을 바꿀 수 있습니다(0.12.2부터). 새 폴더·새 파일·이름 변경·휴지통으로 이동, 같은 연결 안의 복사·잘라내기·붙여넣기와 끌어 놓기를 원격 Tasty 가 실행하고, 진행 표시·이름 충돌 팝업·결과 카드는 로컬 탐색기와 같습니다. 원격 Tasty 도 0.12.2 이상이어야 합니다. 다음 제약이 있습니다.
    • 원격 작업은 실행 취소 이력에 남지 않습니다. 되돌리려면 결과 카드의 되돌리기 를 쓰세요.
    • 로컬과 원격 사이, 서로 다른 원격 사이의 붙여넣기와 끌어 놓기는 거절됩니다.
    • 원격 Tasty 가 이전 버전이면 파일을 바꾸는 메뉴 항목과 툴바 버튼이 흐리게 꺼지고, 툴팁(단축키로 부르면 알림)이 그 컴퓨터의 Tasty 를 업데이트하라고 알려 줍니다.
    • 시스템에서 열기 ·파일 관리자에서 보기·즐겨찾기에 추가 ·새 탭으로 열기 는 원격 탐색기에서 쓸 수 없습니다.
    • 원격에 새 폴더·새 파일을 만들거나 이름을 바꾸면 원격의 답이 올 때까지 입력한 이름이 제자리에 회색으로 남고 옆에 회전 표시가 돕니다. 그동안에는 고치거나 취소할 수 없습니다. 성공하면 만든 항목이 선택되거나 이름 바꾸기 팝업이 닫히고, 실패하면 입력한 이름 그대로 다시 고칠 수 있습니다.
    • 작업 중 연결이 끊기면 원격은 하던 항목에서 작업을 멈춥니다. 이쪽 탐색기에는 결과를 알 수 없다는 경고 카드가 닫을 때까지 남고, 다시 연결되면 폴더를 다시 읽습니다. 카드에는 다시 시도·되돌리기 버튼이 없습니다.
  • 탐색기에서 마크다운 파일을 더블클릭하면 원격 컴퓨터에 그 파일의 마크다운 탭이 열려 이 윈도우에도 나타나며, 이 컴퓨터의 같은 경로 파일은 읽지 않습니다. 그 형식의 기본 핸들러를 원격에서 쓸 수 없으면 원격에서 쓸 수 있는 핸들러만 골라 보여 주고, 그런 핸들러가 없는 형식은 안내만 나옵니다.
  • 마크다운 서피스는 원격 문서의 내용이 이 컴퓨터의 테마로 보이고, 주소창 왼쪽의 새로 고침 버튼을 누르면 최신 내용을 다시 받습니다. 원격에서 문서가 바뀌면 내용을 저절로 바꾸지 않고 새로 고침 버튼이 강조색으로 채워집니다(원격 Tasty 가 headless 빌드라면 색은 바뀌지 않으니 직접 눌러 확인하세요). 연결이 끊겨 다시 연결을 기다리는 동안에는 이전 내용 대신 연결이 끊어졌다는 안내가 보이고, 주소창과 버튼은 모두 비활성이 되며 버튼에 원격 연결이 끊겼습니다 가 뜹니다. 다시 연결되면 최신 내용을 저절로 받아 옵니다. 원격 문서 안의 상대 경로 이미지와 파일 링크는 열리지 않습니다.
  • 원격 마크다운의 주소창에 원격 컴퓨터의 경로를 입력하고 Enter 나 이동 을 누르면 같은 서피스가 그 원격 파일로 바뀝니다. 이 컴퓨터의 최근 파일 목록은 자동완성에 나오지 않습니다. Esc 를 누르면 입력이 지금 문서의 원격 경로로 돌아갑니다. 열지 못하면 입력한 경로가 그대로 남고 주소창 아래에 이유가 뜹니다. 원격에 그 파일이 없으면 원격에서 … 파일을 열 수 없습니다: 파일이 없습니다. , 원격이 다른 이유로 거절하면 원격이 보낸 영어 사유가 그대로 붙습니다. 원격이 답하기 전에 연결이 끊기면 원격이 응답하기 전에 연결이 끊겼습니다. 다시 연결한 뒤 시도하세요. 가 뜹니다. 이때 원격에서 바뀌었는지는 알 수 없으니 다시 연결한 뒤 확인하세요. 30초가 지나도 답이 없으면 주소창 아래에 원격의 응답을 기다리는 중… 이 보이고, 원격이 늦게라도 답하면 그 결과가 반영됩니다. 다시 입력하거나 Esc 를 누르면 이 줄들은 사라지고, 그 뒤에 늦게 온 실패는 다시 나타나지 않습니다. 늦게라도 열리면 문서는 그 파일로 바뀝니다.
  • 원격 마크다운 주소창 왼쪽의 폴더 버튼(원격 파일 열기… )은 원격 문서가 있는 원격 폴더에서 파일 선택 창을 엽니다. 고른 원격 파일이 같은 서피스에 열리고, 원격에서 열지 못하면 토스트로 알립니다.
  • mirror 를 보는 중에 마크다운 파일 열기 팝업으로 표면을 마크다운으로 바꾸거나 새 탭을 열 때, 팝업에 입력하거나 찾아보기… 로 고른 경로는 원격 컴퓨터의 파일로 열립니다. 상대 경로는 원격 터미널의 현재 폴더 기준입니다. 이렇게 연 파일은 이 컴퓨터의 최근 파일 목록에 남지 않습니다.
  • Linux, Windows, macOS에서는 원격 HTML 파일의 본문을 볼 수 있습니다. 큰 파일은 받기 전에 허용 또는 거절을 고릅니다. 스크립트는 내 컴퓨터의 HTML 설정을 따르며, 허용하면 이미 받은 본문으로 다시 표시합니다. 주소는 읽기 전용이고 새로 고침으로 최신 본문을 받습니다. 연결이 끊기면 받은 본문은 남고 새로 고침은 비활성화됩니다. 이전 버전과의 연결에서는 빈 영역으로 남을 수 있습니다. 상대 쪽도 지원하면 같은 폴더 아래의 CSS·이미지 같은 별도 파일도 받습니다. 여러 큰 파일은 하나씩 묻고, 전체 수신량의 2MB 제한에 걸리면 계속 또는 중지를 고릅니다. 큰 파일 질문과 누적 질문은 오래 기다려도 사라지지 않습니다. 기다리는 동안 원격의 전송이 만료되었다면 허용이나 계속을 누를 때 그 파일을 다시 요청하며, 그 사이 파일 크기가 바뀌었으면 한 번 더 묻습니다. 계속은 남은 파일도 이어 받고, 새로 고침은 실패한 파일도 다시 요청합니다. 거절하거나 받지 못한 파일 수는 새로 고침할 때까지 남습니다. 하위 HTML로 이동하면 새 문서로 검사합니다. 페이지가 파일 요청을 취소하면 수신 대기도 해제하며, 같은 파일을 받는 다른 요청은 유지합니다. Linux X11, Windows, macOS 27 이상에서는 양쪽 버전이 지원하면 HTTP·HTTPS 웹주소도 열립니다. 요청은 원격 컴퓨터에서 실행하므로 웹페이지의 폼 제출이나 버튼이 원격 서비스의 상태를 바꿀 수 있습니다. 다만 Windows와 macOS에서 스크립트를 허용한 페이지의 WebRTC 연결은 이 컴퓨터에서 직접 나갈 수 있습니다. Tasty는 페이지의 WebRTC 기능을 지워 이를 줄이지만 모든 경로를 막는다고 보장하지 않습니다. 같은 사이트의 요청은 기본 허용하고 다른 사이트는 내 HTML 원격 콘텐츠 설정을 따릅니다. 브라우저의 보안 정책도 유지됩니다. 각 응답의 전송 크기 100000바이트, 문서 전체 2000000바이트에서 기존 수신 동의를 묻습니다. 스크립트 허용은 받은 본문으로 다시 표시하며 폼을 다시 제출하지 않습니다. 명시적인 새로 고침은 원래 요청을 다시 보내고 같은 문서의 쿠키를 유지합니다. 연결이 끊기면 스크립트를 멈추며, 다시 연결하거나 원격 주소가 바뀌면 쿠키와 스크립트 허용을 옮기지 않습니다. 이때 전용 브라우저 저장소를 준비하는 작업이 잠시 겹치면 제한된 시간 동안 기다리며, 저장소 한도나 안전 검사 실패는 오류로 표시합니다. macOS에서는 원격 컴퓨터의 localhost·127.0.0.1 같은 주소를 localhost.tasty.localhost 같은 별도 이름으로 엽니다. 화면에 표시되는 주소는 원래 주소지만 페이지 스크립트가 읽는 주소는 이 이름이며, 문서 안에서 원격 localhost를 전체 주소로 가리킨 이미지·요청은 열리지 않습니다. 상대 경로와 링크 이동은 그대로 됩니다. Linux native Wayland와 macOS 11–26에서는 원격 웹주소 표시를 지원하지 않으며 이 컴퓨터에서 대신 접속하지 않습니다. macOS 최소 지원 버전 11은 그대로입니다.
  • --raw 는 서피스 단위에서만 됩니다.
  • --no-reconnect 를 주지 않으면 SSH 가 끊겼을 때 자동으로 재연결을 시도합니다.
  • 회선이 느려 원격이 보내던 화면 일부를 놓치면, 원격이 그 사실을 알려 오고 attach 가 스스로 다시 붙어 화면을 새로 받습니다. 그때 터미널에 안내가 한 줄 나옵니다. 화면을 출력하고 끝나는 attach 는 한 번 실행에 세 번까지 다시 붙고, 그래도 놓치면 결과를 출력한 뒤 화면 일부가 빠졌을 수 있다고 알립니다. --raw 는 횟수 제한 없이 다시 붙으며 화면을 처음부터 다시 그립니다. --send 로 보낸 입력은 다시 보내지 않습니다.

실행 중인 Tasty 윈도우 안에 mirror 워크스페이스로 띄우려면 아래 “워크스페이스에 자동 attach 걸기” 를 씁니다.

5. 워크스페이스에 자동 attach 걸기

로컬 워크스페이스에 원격 대상을 매핑해 두면, 그 워크스페이스로 전환할 때마다 Tasty 가 알아서 SSH 터널을 세우고 mirror 를 붙입니다.

tasty new workspace --name gx10-dev --ssh-profile gx10-attach --remote-workspace 3
tasty set workspace --id 5 --ssh-profile gx10-attach --remote-workspace 3
tasty set workspace --id 5 --ssh me@10.0.0.5 --remote-workspace 3      # 프로필 없이
tasty set workspace --id 5 --clear-mapping                              # 해제
  • --remote-workspace 는 원격 워크스페이스 ID 입니다. tasty remote workspaces 로 확인합니다.
  • 매핑된 mirror 는 연결이 끊겨도 워크스페이스와 스크롤백을 그대로 둔 채 백그라운드에서 재연결합니다 (0.5초에서 30초까지 간격을 늘리며 시도, 원격이 다른 사람에게 점유돼 있으면 30초 간격). 20회 실패하면 멈추고 토스트로 알립니다 — 그 워크스페이스를 나갔다 다시 들어오면 즉시 한 번 더 시도합니다.
  • 처음 붙을 때 실패하면(프로필·포트·SSH 연결 문제) 0.5초에서 30초까지 간격을 늘리며 다시 시도합니다. 그 워크스페이스로 다시 전환하거나 매핑을 바꾸면 즉시 한 번 더 시도합니다.
  • 매핑 대상이 지금 쓰고 있는 이 Tasty 자신이면 연결하지 않습니다. --ssh 로 지정한 매핑은 매핑을 바꿀 때까지 다시 시도하지 않고, 프로필 매핑은 그 워크스페이스로 다시 전환할 때 한 번 더 확인합니다. 거절된 시도는 tasty remote refusals 로 확인합니다.
  • 매핑으로 연결하지 못하면(대상이 이 Tasty 자신이거나, SSH 프로필이 없거나, 연결 지점을 준비하지 못한 경우) 사이드바의 그 워크스페이스 행에 경고 표시가 붙습니다. 경고 표시는 이름 뒤, 알림 숫자 배지 왼쪽에 놓입니다. 사이드바를 접어 두었다면 워크스페이스 아이콘 왼쪽 위 모서리에 작은 경고 표시가 붙습니다. 마우스를 올리면 대상과 이유가 보입니다. 그 워크스페이스를 열면 위쪽에 같은 내용의 배너가 뜨고, 매핑 지우기 로 매핑을 바로 지울 수 있습니다. × 는 이번에만 배너를 닫습니다. 다른 워크스페이스에 갔다가 돌아오면 다시 보입니다. 경고 표시는 매핑을 바꾸거나 지우거나 연결에 성공하면 사라집니다.
  • 매핑 없이 붙인 mirror 는 연결이 끊기면 윈도우에서 사라집니다. 그 윈도우에 mirror 하나만 남아 있었다면 윈도우는 닫히지 않고 새 터미널 워크스페이스가 대신 열립니다.

mirror 안에서 할 수 있는 것

  • 키 입력·마우스는 원격 터미널로 그대로 갑니다. 크기는 내 페인 크기에 맞춰 원격이 다시 배치합니다.
  • 원격이 새 크기에 답하지 않으면 Tasty 가 한 번 더 요청합니다. 그래도 답이 없으면(약 10 초) 워크스페이스 위에 원격과 터미널 크기를 맞추지 못했습니다 배너가 뜨고 해당 탭 이름이 보입니다. 분할한 탭처럼 이름이 같은 탭이 여럿이면 이름을 한 번만 보이고 Shell ×2 처럼 개수를 붙입니다. 다시 시도(여럿이면 모두 다시 시도)로 다시 요청할 수 있고, × 는 배너만 닫습니다. 나중에라도 원격이 그 크기를 받아들이면 배너는 저절로 사라집니다. 원격이 이 기능이 없는 이전 버전 Tasty 이면 배너는 뜨지 않습니다.
  • 분할, 새 탭, 탭 닫기·순서 바꾸기, 표면 변환, 닫은 항목 복원은 원격에서 실행되고 결과가 mirror 에 반영됩니다. 원격에 없는 종류의 표면을 만들면 토스트로 실패를 알립니다. 에이전트가 요청한 분할·새 탭·닫기·이동·변환(markdown 문서 이동과 이미지 열기 포함)과, 에이전트가 열 위치를 지정하지 않고 요청한 파일 열기가 원격에서 실패한 경우는 토스트 없이 로그에만 남습니다.
  • 서피스 우클릭 메뉴의 서피스 이동 은 같은 mirror 워크스페이스 안에서만 원격에서 실행됩니다. mirror 와 다른 워크스페이스 사이로 옮기는 것은 막힙니다.
  • 탭 우클릭 메뉴의 탭 이동 · 페인 이동 으로 옮기는 것은 mirror 에서 쓸 수 없습니다. 옮길 쪽이나 목적지가 mirror 이면 막았다는 토스트만 뜨고 아무것도 바뀌지 않습니다.
  • 닫은 항목 복원(기본 Ctrl+Shift+T)을 mirror 안에서 누르면 원격에서 닫혔던 탭이 되살아납니다 — 그 탭은 원격 터미널이라 입력도 원격으로 갑니다. 되살아난 탭의 이전 스크롤백은 원격 윈도우에서만 다 보입니다(mirror 는 보이는 화면부터 받습니다).
    • 에이전트가 CLI 로 mirror 안의 탭을 닫은 것은 되살아나지 않습니다 — 원격 쪽 윈도우에서 복원을 눌러도 마찬가지입니다. 복원은 사람이 손으로 닫은 것만 대상입니다.
    • 복원은 그 원격 워크스페이스에서 닫힌 것만 되살립니다. 원격에 되살릴 것이 없으면 안내 토스트만 뜨고 아무 일도 일어나지 않습니다 — 내 쪽에서 닫았던 탭이 대신 mirror 안에 생기는 일은 없습니다. 내 워크스페이스로 돌아가 같은 키를 누르면 그때 내 것이 복원됩니다.
  • 원격에서 셸이 끝나(exit) 닫힌 탭은 mirror 에서도 바로 사라집니다.
  • 원격 터미널의 완료·입력 필요 표시(테두리·배지)도 mirror 에 그대로 옵니다.
  • 원격이 보내던 화면 일부를 놓치면 “원격 화면 일부를 놓쳤습니다” 토스트가 뜨고 mirror 가 스스로 다시 붙어 화면을 새로 받습니다(프로필 없이 붙인 mirror 도 같습니다). 다시 붙은 뒤에는 스크롤백에 같은 화면이 한 번 더 쌓일 수 있습니다. 클립보드 이미지 업로드 중에 이런 일이 생기면 업로드는 실패로 끝나고 다시 시도할 수 있습니다 — 원격에 이미 저장됐을 수도 있어 저절로 다시 보내지는 않습니다.
  • 클립보드 이미지를 붙여넣으면 원격으로 업로드되고 원격 경로가 입력됩니다. 텍스트 붙여넣기는 그대로.
  • mirror 안에서 스크린샷을 클립보드로(Ctrl+Alt+S)를 누르면 화면은 내 컴퓨터에서 캡처하고, 파일은 원격에 저장한 뒤 원격 클립보드에 원격 경로와 이미지를 함께 넣습니다. 내 클립보드는 바뀌지 않습니다. 원격 Tasty 가 이미지 복사를 지원하지 않는 이전 버전이면 경로만 들어가고 토스트가 그렇게 알립니다. 원격 연결이 없어 보내지 못하면 파일이 내 컴퓨터에만 저장됐다고 알리고, 원격의 응답 전에 연결이 끊기면 복사가 확인되지 않았다고 알립니다.
  • mirror 워크스페이스 번호를 --workspace 로 주면 tasty claude spawn·tasty codex spawn 의 자식이 원격 컴퓨터에서 실행되고, 내 쪽에서는 그 mirror 안의 자식으로 다룹니다. 사용법은 Claude · Codex에 있습니다.
    • 연결이 끊긴 동안 그 자식의 상태는 unknown 으로 보입니다. 같은 원격 Tasty 에 다시 연결되면 그사이 끝난 완료가 한 번 전달됩니다.
    • 원격 Tasty 가 다시 시작하면 그 전에 만든 자식의 완료는 전달되지 않습니다. 원격의 이전 버전 Tasty 에는 자식을 만들지 않고 오류를 알립니다.
  • mirror 표면의 셸을 다시 띄우거나(tasty surface respawn-terminal, tasty terminal respawn) 백그라운드 PTY 를 mirror 안에 탭으로 붙이는 것(tasty pty attach-surface)도 거부됩니다. 원격 터미널 자리에 내 쪽 셸이 섞이기 때문입니다. 원격 인스턴스에서 직접 실행합니다.
  • mirror 워크스페이스에 탭·페인 preset 을 적용하는 것(preset 팝업, tasty preset apply)도 같은 이유로 거부됩니다. 워크스페이스 preset 은 새 워크스페이스를 만들므로 그대로 쓸 수 있습니다.
  • mirror 의 마지막 터미널을 닫으면 원격 워크스페이스 자체가 사라지고 연결이 끊깁니다.

mirror 닫기와 연결 끊기

mirror 카드를 우클릭하면 두 항목이 함께 나옵니다. 내 쪽의 일반 워크스페이스 카드에는 워크스페이스 닫기 만 있습니다.

  • 워크스페이스 닫기 — 원격 컴퓨터에서 그 워크스페이스를 실제로 닫습니다. 안의 모든 탭·페인·터미널과 실행 중이던 프로그램이 원격에서 끝납니다. 원격이 닫았다고 답한 뒤에야 내 쪽 mirror 가 사라지고 원격 Tasty에서 워크스페이스를 닫았습니다. 가 뜹니다. 원격이 거절하면 mirror 는 그대로 남고 실패 안내가 뜹니다. 닫은 워크스페이스는 원격 쪽 윈도우의 닫은 항목 복원으로 되살릴 수 있습니다(실행 중이던 프로그램은 돌아오지 않습니다).
    • 단축키로 워크스페이스를 닫아도 같습니다. mirror 의 마지막 탭·페인·터미널을 단축키로 닫아 워크스페이스 닫기로 이어지는 경우도 원격 워크스페이스를 닫습니다. 원격을 그대로 두려면 워크스페이스 연결 끊기 를 쓰세요.
    • 원격의 마지막 워크스페이스였다면 원격 윈도우는 닫히지 않고 새 터미널 워크스페이스가 대신 열립니다.
    • 연결이 끊겼거나 다시 연결하는 중이면 닫기를 보내지 않고 안내만 뜹니다. 원격 Tasty 가 이 기능이 없는 이전 버전이어도 보내지 않고 안내합니다. 이때는 원격을 업데이트하거나 워크스페이스 연결 끊기 를 씁니다.
    • 원격이 답하기 전에 연결이 끊기면 닫혔는지 알 수 없다고 안내합니다. 원격에서 워크스페이스가 아직 돌고 있을 수 있으니 다시 연결해 확인하세요.
    • 매핑으로 붙인 mirror 를 원격에서 닫으면, 같은 매핑으로는 다시 자동 연결하지 않습니다. 매핑은 지우지 않으니 다른 원격 워크스페이스로 바꾸거나 직접 지우세요.
  • 워크스페이스 연결 끊기 — 내 쪽 mirror 만 닫고 연결을 끊습니다. 원격 워크스페이스와 그 안의 프로그램은 그대로 돌고, 원격 쪽은 다시 입력할 수 있게 됩니다. 다시 연결하는 중에도 쓸 수 있으며, 그때는 재연결 시도도 멈춥니다. 마지막 워크스페이스였다면 윈도우는 닫히지 않고 새 터미널 워크스페이스가 열립니다.
    • 매핑으로 붙인 mirror 는 매핑이 그대로 남지만 바로 다시 붙지는 않습니다. 다른 워크스페이스로 갔다가 매핑한 워크스페이스로 돌아오면 다시 연결합니다. 매핑 없이 붙인 mirror 는 원격 워크스페이스 추가 로 다시 붙이면 같은 워크스페이스와 출력이 보입니다.
    • 네트워크가 끊겨서 생긴 단절은 이전처럼 자동으로 다시 연결합니다. 멈추는 것은 직접 끊었을 때뿐입니다.

이 두 항목은 원격 쪽 윈도우의 강제 끊기 와 다릅니다. 강제 끊기는 원격 컴퓨터에서 남이 붙여 둔 연결을 내보내는 동작이고, 연결 끊기는 내가 붙인 mirror 를 내 쪽에서 닫는 동작입니다.

점유 풀기 (원격 쪽에서)

내 Tasty 의 워크스페이스가 다른 곳에서 attach 돼 읽기 전용이 됐을 때, 서피스에 강제 끊기 안내가 뜹니다. 그 안내는 그 워크스페이스를 보고 있을 때만 나오므로, 사이드바에서 바로 끊을 수도 있습니다 — 점유 중인 워크스페이스 카드를 우클릭 > 강제 끊기 를 누르면 확인 팝업이 화면 중앙에 뜨고, 확인하면 그 자리에서 풀립니다. 그 워크스페이스로 전환하지 않아도 됩니다.

다른 사람의 연결을 끊는 CLI 명령은 없습니다. 서버의 에이전트가 원격 작업 중인 사람을 실수로 끊지 않도록 화면에서만 끊습니다. 화면 없이 실행한 Tasty 처럼 GUI 가 없는 서버에서는 원격 쪽이 들어온 SSH 세션을 끝내면 연결이 닫히면서 점유가 풀립니다. 원격 쪽이 자동 재연결하면 다시 붙을 수 있습니다.

원격 쪽 사용자가 붙어 있는 동안 그 워크스페이스에 로컬에서 분할·탭 생성·spawn 을 하거나, CLI 로 탭·페인 preset 을 적용하거나(tasty preset apply), 백그라운드 PTY 를 탭으로 붙이려 하면(tasty pty attach-surface) “점유 중” 오류로 거부됩니다. 다른 워크스페이스를 쓰거나 강제 끊기 후 진행합니다.

원격에서 받은 파일 저장 위치

attach 채널로 전송된 파일은 ~/.tasty/transfers/ 에 저장되며 폴더 상한은 500 MiB 입니다. 설정 > 일반 > 원격 전송 에서 바꾸거나 CLI 로 바꿉니다.

tasty settings get-remote-transfer
tasty settings set-remote-transfer --dir ~/Downloads/tasty --max-mb 2000

CLI attach의 --raw 출력을 다른 명령으로 넘겼을 때 그 명령이 먼저 종료하면 attach도 정상 종료합니다. 출력 장치의 권한 문제 같은 다른 쓰기 오류는 실패로 알려 줍니다.

응답을 기다리는 동안

미러에서 새 탭이나 분할을 만들면 다음 화면부터 그 자리를 먼저 보여 줍니다. 서버가 확정할 때까지 새 영역에는 입력을 보낼 수 없으며, 기존 탭이나 영역을 선택해 계속 작업할 수 있습니다. 기다리던 중 다른 곳을 선택했다면 늦은 완료가 선택을 되돌리지 않습니다. 실패한 요청의 임시 영역만 사라집니다.

200ms 이상 응답을 기다리면 탭과 사이드바에 스피너가 나타나고, 작업영역 우측 상단에는 응답 대기 중 과 경과 시간이 표시됩니다. 여러 요청이면 개수와 가장 오래 기다린 시간을 보여 줍니다. 포인터를 올리면 요청 종류별로 가장 오래 기다린 시간을 한 줄씩 볼 수 있습니다. 닫기·이동·복원·변환이나 폴더·문서·Git 조회도 응답을 기다리는 동안 표시하며, 화면이나 입력을 막지 않습니다. Native WebView는 숨기지 않고 탭과 사이드바 표시를 사용합니다.

스피너는 탭 아이콘, 사이드바 상태 점, 접힌 사이드바의 아바타 자리에만 나타나며 탭 제목이나 워크스페이스 이름은 바뀌지 않습니다. 기다리는 탭이나 워크스페이스에 포인터를 올리면 이름 아래에 연결하는 중… 이 함께 표시됩니다.

일반 입력의 대기 표시는 이를 지원하는 서버가 앞선 입력을 앱 처리 경계까지 넘겼는지 확인합니다. 셸 명령이나 프로그램이 끝났다는 뜻은 아닙니다. 출력 없는 정상 입력이나 오래 실행하는 명령 때문에 계속 표시하지 않으며, 구 서버에는 지원하지 않는 입력 확인을 기다리지 않습니다. 연결이 끊기면 기존 재연결 안내로 넘어갑니다.

문제 해결

증상 확인할 것
kind='ssh' 거부 --profile 에 ssh 프로필을 줬습니다. tasty-attach 프로필을 만들어 지정합니다
원격 tasty 미발견 원격에 Tasty 가 실행 중인가. tasty tool remote-profile detect --name <n> 으로 포트 검증. PATH 에 없으면 실행 파일 경로 지정 또는 --port-mode file-unix
타임아웃 호스트에 접속할 수 있는지와 방화벽 설정을 확인합니다. ssh 프로필 --option ConnectTimeout=<초>
SSH 연결 실패 인증·호스트 키. tasty tool ssh <ssh 프로필> 로 먼저 접속되는지 봅니다
이 Tasty 자신을 가리킨다는 안내·오류 프로필의 호스트(호스트명·LAN IP 포함)와 포트 파일, 또는 --into-gui --target-port 로 준 포트(직접 연 SSH 터널 포함)가 지금 쓰고 있는 이 Tasty 를 가리킵니다. 자기 자신에는 붙을 수 없습니다. 같은 컴퓨터의 다른 Tasty 에 붙으려면 그 인스턴스의 포트 파일을 지정합니다
--into-gui 가 이 빌드에서 지원하지 않는다는 오류 명령을 받은 로컬 Tasty 가 윈도우 없이 실행되는 headless 빌드입니다. mirror 를 띄울 윈도우가 없어 요청을 받아들이지 않습니다. GUI 로 실행 중인 Tasty 에 보냅니다
Tasty 를 강제로 끝낸 뒤 ssh 프로세스가 남음 macOS 에서는 정상 종료(메뉴 종료·윈도우 닫기)일 때만 원격 attach 터널을 정리합니다. 강제 종료·비정상 종료 뒤 남은 ssh -N -L 프로세스는 직접 끝냅니다. Linux·Windows 는 Tasty 가 끝나면 함께 끝납니다
워크스페이스 attach 거부 그 안의 터미널 하나가 이미 다른 client 에 점유돼 있습니다. 원격에서 강제 끊기
처음 붙을 때 화면이 잠깐 깜빡임 원격이 내 페인 크기로 다시 배치하는 동안의 정상 동작
GitHub에서 원문 보기