소개
MyTerminal은 Rust, Tauri 2, React로 구축된 데스크톱 SSH 터미널 관리 도구입니다. 터미널 탭, 점프 호스트와 프록시를 지원하는 SSH 프로필, SFTP 파일 관리 및 원격 편집, 로컬 포트 포워딩, WebDAV 백업 기능을 한 화면에 통합합니다. 개발자와 운영자가 무거운 원격 터미널 도구 대신 가볍고 개방적인 대안을 사용하도록 설계되었습니다.
상세정보
SSH 프로필 및 라우팅
- SSH 프로필 관리: 세션을 열기 전에 연결 항목을 생성, 편집, 그룹화, 복제, 이동, 정렬, 테스트할 수 있습니다.
- Windows 원격 데스크톱(RDP): RDP 항목을 SSH 프로필과 함께 저장하고 시스템 원격 데스크톱 클라이언트로 열 수 있습니다. 비밀번호는 명령줄에 전달되지 않고 세션 범위의 Windows 자격 증명으로 기록됩니다.
- 연결 유형 아이콘: SSH 터미널과 RDP 항목을 구분하는 일관된 아이콘을 사용하며 두 유형은 동일한 그룹 트리와 정렬을 공유합니다.
- 비밀번호 및 개인 키 인증: 비밀번호, 키 파일, 붙여넣은 개인 키 내용으로 연결할 수 있으며 패스프레이즈와 비밀 가시성 토글이 지원됩니다.
- 점프 호스트: 순서가 있는 SSH 점프 호스트 체인을 구성하고 터미널, 파일 작업, 터널, MCP Bridge 세션에서 동일한 라우팅 모델을 재사용합니다.
- 첫 홉 프록시: SOCKS5 또는 HTTP CONNECT 프록시를 통해 첫 SSH 홉을 라우팅하며 프록시 인증을 선택할 수 있습니다.
- 안전한 연결 정리: 탭 닫기, 프로필 삭제, 앱 종료 시 관련 터미널 세션, 보조 SSH 세션, 터널, CLI 브리지 프로세스가 함께 정지됩니다.
터미널 작업 공간
- 탭 기반 SSH 터미널: 여러 PTY 세션을 열고 탭을 재정렬하거나 제자리에서 재연결하고 세션을 닫을 수 있으며 세션 제목이 활성 SSH 프로필과 연결됩니다.
- 드래그하여 분할: 탭 바에서 터미널 영역으로 탭을 드래그해 분할할 수 있습니다. 2×2 그리드 기반으로 최대 4개 패널, 전체 화면, 좌/우, 상/하, 3패널, 4패널 배치가 가능합니다.
- 패널별 탭 바: 각 패널은 자체 탭 바와 독립적인 정렬을 가지며 SSH와 로컬 터미널을 자유롭게 혼합할 수 있습니다.
- 비차단 연결 시작: 새 SSH 탭이 즉시 연결 상태로 진입하고 SSH 핸드셰이크와 인증은 백그라운드에서 진행됩니다.
- 대화형 입력 처리: 인쇄 가능한 입력은 WebView-Rust IPC 부하를 줄이기 위해 약간 배치되며 Enter, Tab, 제어 시퀀스, 편집 키는 즉시 플러시됩니다.
- 우클릭 작업: 복사·붙여넣기 메뉴 또는 우클릭 시 직접 붙여넣기 동작을 설정할 수 있습니다.
- 줄 번호 및 타임스탬프 거터: 거터에서 논리적 줄 번호와 각 줄 도착 시간을 토글할 수 있습니다.
- 선택 항목 강조: 터미널에서 텍스트를 선택하면 스크롤백의 동일 내용이 강조되며 외관 설정에서 끌 수 있습니다.
- 프롬프트 구문 강조: 사용자, 호스트, 경로, 기호 영역이 라이트/다크 테마별로 구분되어 색상이 적용됩니다.
- 시스템 클립보드 연동: 앱 내 복사·잘라내기가 Windows 시스템 클립보드에 기록되며 터미널 붙여넣기는 네이티브 채널을 통해 읽힙니다.
로컬 터미널 및 AI CLI
- 로컬 터미널 탭: 가짜 명령 출력 뷰가 아닌 ConPTY/portable-pty 기반의 네이티브 로컬 PTY 세션을 엽니다.
- AI CLI 실행: 선택한 작업 디렉터리에서 Claude Code, Codex, opencode 또는 사용자 지정 로컬 명령을 시작합니다.
- 순수 셸 모드: AI CLI를 실행하지 않고 구성된 셸을 직접 여는 내장 로컬 터미널 명령을 선택할 수 있습니다.
- 로컬 전용 설정: 로컬 셸 경로, 명령 프리셋, 디렉터리 기록은 local-terminals.json에 저장되며 WebDAV 동기화 패키지에 포함되지 않습니다.
SFTP 파일 및 편집
- 원격 파일 탐색: 실제 SFTP 작업을 통해 디렉터리 조회, 메타데이터 확인, 폴더 생성, 삭제, 이름 변경, 새로 고침, 이동이 가능합니다.
- 드래그 앤 드롭 업로드: 로컬 파일이나 폴더를 SFTP 탐색 영역에 드롭하면 폴더는 재귀적으로 업로드됩니다.
- 일괄 전송: 여러 원격 파일/폴더를 다운로드하거나 여러 로컬 경로를 업로드할 수 있으며 동일 이름의 로컬 다운로드는 고유한 대상으로 생성됩니다.
- 연결 재사용: 파일 탐색, 전송, 원격 편집, 런타임 조회, 기록 읽기가 보조 SSH/SFTP 세션을 재사용합니다.
- 원격 파일 편집기: 내장 Monaco 편집기로 원격 파일을 편집하고 저장 시 SFTP로 다시 기록합니다.
- MCP/CLI 파일 도구: AI 클라이언트는 승인된 브리지 작업을 통해 원격 경로 목록, 읽기, 쓰기, 업로드, 다운로드, 삭제, 이름 변경, 생성을 수행할 수 있습니다.
런타임 및 터널
- 런타임 개요: 활성 SSH 프로필에 대해 원격 CPU, 메모리, 루트 파일 시스템 사용량, 연결 수, 업타임, OS 정보를 가져오며 각 항목은 사용률에 따라 색상이 구분됩니다.
- 코어별 CPU 상세: CPU 항목을 확장하면 개별 코어별 사용률을 볼 수 있습니다.
- 상위 리소스 소비 항목: 메모리 항목을 확장하면 프로세스/스레드별로 메모리 또는 CPU 기준으로 정렬 가능한 무거운 항목이 표시됩니다.
- 다중 리소스 소스: 설정에서 시스템 프로세스, Docker, Podman, Kubernetes 간에 리소스 통계 소스를 전환할 수 있으며 Kubernetes 소스는 모든 네임스페이스의 Pod 수준 CPU/메모리를 보고합니다.
- 가장 큰 파일 조회: 스토리지 항목을 확장하면 시간 제한 스캔으로 원격 호스트의 가장 큰 파일을 전체 경로와 함께 찾습니다.
- 로컬 포트 포워딩: 사용자 지정 바인드 주소와 대상 호스트로 SSH 로컬 포워딩 규칙을 생성, 편집, 시작, 중지할 수 있습니다.
- 터널 수명 주기 관리: 실행 중인 터널 기록은 터미널 세션과 별도로 추적되어 깨끗하게 중지할 수 있습니다.
내장 AI 어시스턴트
- AI 채팅 패널: 축소 가능한 오른쪽 사이드바에서 스트리밍 출력, 중지, 새 대화를 지원하는 AI 대화를 호스팅하며 채팅 기록은 로컬에 저장됩니다.
- 여러 엔드포인트 및 모델: 컨텍스트 창과 출력 한도가 다른 여러 AI 엔드포인트와 모델을 구성할 수 있으며 API 키는 저장 시 암호화됩니다.
- 세 가지 API 프로토콜: Anthropic Messages, OpenAI Chat Completions, OpenAI Responses를 지원하며 설정 페이지에서 해결된 요청 URL을 미리 볼 수 있습니다.
- 사고 수준 및 자동 압축: 턴별로 사고 수준을 선택하고 예상 토큰이 임계값을 넘으면 이전 메시지를 요약으로 접어 자동 압축할 수 있습니다.
- 원격 호스트에 대한 AI 작업: 어시스턴트가 연결 목록 조회, 명령 실행, 전체 원격 파일 도구 세트를 사용할 수 있으며 외부 MCP 클라이언트와 동일한 승인 정책이 적용됩니다.
- 실제 터미널에서 명령 실행: AI 명령은 표시되는 터미널 탭에 입력되고 [AI] 접두사와 함께 표시됩니다.
MCP 브리지 및 AI 승인
- AI 코딩 도구를 위한 MCP 브리지: 로컬 CLI + MCP + GUI Broker 브리지를 통해 Claude Code, Codex 등 MCP 클라이언트가 저장된 SSH 프로필을 사용할 수 있습니다.
- 연결 검색: MCP 클라이언트는 이름, 그룹 경로, 호스트, 포트, 사용자 이름, 메모와 같은 비공개 메타데이터로 저장된 SSH 프로필을 나열할 수 있습니다.
- 브리지 세션: MCP 클라이언트는 연결 ID 또는 고유 연결 이름으로 논리적 SSH 브리지 세션을 열고 닫고 명령이나 파일 작업을 실행할 수 있습니다.
- GUI 승인 실행: 원격 명령, 업로드, 다운로드, 쓰기, 삭제, 이름 변경, 디렉터리 생성 요청은 기본적으로 MyTerminal에서 승인을 위해 표시됩니다.
- 자동 실행 제어: 글로벌 자동 실행을 활성화하거나 MCP 설정 페이지에서 선택한 SSH 연결에 대해서만 허용할 수 있습니다.
동기화, 백업, 업데이트
- 수동 WebDAV 동기화: 머신 간 이동 시 앱 설정과 SSH 프로필을 별도로 업로드/다운로드합니다.
- 로컬 가져오기/내보내기: JSON 구성 패키지를 내보내고 복원하며 가져오기 전에 자동으로 로컬 백업을 수행합니다.
- 데스크톱 업데이트 흐름: GitHub 릴리스를 확인하고 설치 프로그램 자산을 감지해 다운로드한 다음 앱 내에서 설치 프로그램을 실행합니다.
- 프록시 인식 업데이트 확인: 업데이트 HTTP 요청은 시스템 프록시 설정을 존중하며 보수적인 연결, 읽기, 전체 시간 초과를 사용합니다.
데스크톱 경험
- 영문과 중국어 간체 UI 전환을 지원합니다.
- 테두리 없는 창에 맞춤 제목 표시줄이 있으며 사이드바 토글, 새 연결, 연결 관리자, 로컬 터미널, 업데이트 확인, 테마 전환, 설정, 창 제어를 호스팅합니다.
- 외관 설정: 라틴 폰트, CJK 폰트, 글꼴 크기, 줄 높이를 터미널과 AI 채팅 영역에 대해 별도로 설정할 수 있습니다. JetBrains Mono와 Maple Mono는 앱 범위 옵션 폰트 팩으로 제공되며 Windows에 설치되지 않습니다.
- 점진적 시작: 터미널 코어와 AI 채팅 패널은 주문에 따라 로드되며 AI 사이드바는 처음 펼칠 때까지 로드되지 않습니다.
- 시스템 트레이 지원과 로컬 우선 저장(설정과 SSH 프로필 로컬 저장, 비밀은 앱 내 암호화 처리)이 지원됩니다.
소스에서 실행
저장소를 클론한 후 다음 명령으로 개발 모드를 실행합니다.
- npm install로 프런트엔드 의존성을 설치합니다.
- npm run check:env로 Node, npm, cargo, Perl, link.exe 환경을 확인합니다.
- npm run tauri:dev로 Tauri 개발 환경을 시작합니다.
설치 프로그램 빌드
- npm run package를 실행하면 src-tauri/target/release/bundle/ 아래에 빌드 결과물이 생성됩니다.
정식 Windows 설치 프로그램은 GitHub 릴리스 페이지에 게시되며 winget에서는 winget install --id CrazyFigure.MyTerminal --exact로 설치할 수 있습니다.
Q. MyTerminal은 어떤 기술 스택으로 만들어졌나요?
Tauri 2 기반 데스크톱 셸에 Rust 백엔드(ssh2, reqwest, AES-GCM, 로컬 JSON 영속화)와 React + TypeScript + Vite + Zustand 프런트엔드를 사용합니다. 터미널과 편집기는 xterm.js, portable-pty, Monaco Editor로 구현되었습니다.
Q. 어떤 AI API 프로토콜을 지원하나요?
Anthropic Messages, OpenAI Chat Completions, OpenAI Responses 세 가지 프로토콜을 지원하며 여러 엔드포인트와 모델을 각각 구성할 수 있습니다.
Q. MCP 브리지는 어떻게 활성화하나요?
설정 > MCP에서 브리지를 활성화하며 활성화 상태와 자동 실행 정책은 MyTerminal 재시작 시에도 유지됩니다. MCP 클라이언트 구성은 설정 > MCP > 사용법에서 JSON을 복사해 사용할 수 있습니다.
시스템 요구사항
- Windows 10/11 SDK
- Visual Studio Build Tools 2022
- Rust stable(MSVC 도구체인 포함)
- Node.js 20.19 이상 또는 22.12 이상
- npm 9 이상
- Windows에서 벤더 OpenSSL이 필요한 경우 Strawberry Perl


