원문 캡처 · github.com
원문 캡처 · github.com

서버가 약 440ms 떨어진 환경에서 같은 순간에 입력한 키를 비교하자, 일반 SSH에서는 화면에 나타나기까지 160ms였고 Foretype을 쓰면 예측한 글자가 10ms 만에 보였다. 실제 서버 응답은 여전히 네트워크 속도로 도착한다.

Rust로 만든 도구 Foretype은 원격 서버에 입력할 때 화면에 글자를 먼저 그려 입력 지연을 줄인다. SSH나 원격 컴퓨터의 코딩 에이전트, 지연이 큰 콘솔에서 작업하는 사람이라면 서버 설정을 바꾸지 않고 입력 반응을 개선할 수 있다.

Foretype은 어떻게 입력을 앞당기나?

Foretype은 원격 프로그램의 응답을 기다리는 동안 입력한 글자를 화면에 먼저 표시하는 도구다. 화면을 미리 그려 주는 자동완성 기능을 떠올리면 쉽다. 다만 글자를 실제로 서버에 입력하는 것은 아니며, 서버가 보낸 응답과 예측한 글자가 맞는지 확인한다.

제작자가 약 150ms 떨어진 서버에서 별도로 측정한 결과는 다음과 같다. 수치는 키를 누른 뒤 글자가 화면에 나타날 때까지의 중앙값이다. Foretype 사용 시 수치는 로컬에 그린 예측 글자까지의 시간이며, 서버의 실제 응답은 네트워크 속도로 도착한다. 측정에는 scripts/latency.py를 사용했다.

환경Foretype 없이Foretype 사용
SSH에서 Bash 사용160ms10ms
SSH에서 코딩 에이전트 사용148ms11ms
지연이 큰 콘솔158ms10ms

시연 GIF에서는 약 440ms 떨어진 서버에 같은 키를 같은 순간에 입력한 결과를 위아래로 비교한다. 이 수치는 제작자가 설명한 측정 결과이며, 예측 문자가 먼저 보이는 시간과 서버의 실제 응답 시간을 구분해야 한다.

설치하면 무엇이 바뀌나?

Foretype은 Rust로 만든 단일 실행 파일이다. 설치 과정에서 실행 파일을 /usr/local/bin에 복사하고, /etc/shells에 foretype-shell을 추가한 뒤 chsh로 로그인 셸을 바꾼다. 기존 셸은 ~/.config/foretype/shell에 저장한다. 새 터미널 탭이나 tmux 창, 편집기 터미널에서 Foretype이 실제 셸을 가상 터미널 안에서 실행하고, 입력과 출력을 바이트 단위로 그대로 전달한다.

설치 명령은 다음과 같다.

sh
git clone https://github.com/itsfabioroma/foretype && cd foretype
./install.sh

설치 없이 시험하려면 저장소 안에서 다음 명령을 실행한다. 현재 터미널에서 셸이 Foretype 안에서 실행되며, exit를 입력하면 빠져나온다.

sh
cargo build --release
FORETYPE_SHELL=$SHELL ./target/release/foretype shell

설치 후에는 새 터미널 탭을 열면 된다. SSH, kubectl exec, docker exec, 멀리 떨어진 서버의 코딩 에이전트 등에서 사용할 수 있다. SSH와 서버, 셸 설정은 바꾸지 않으며 설치와 제거에만 관리자 권한이 필요하다. 현재 탭에서 Foretype이 활성화됐는지 확인하거나 기존 셸로 되돌리는 명령은 다음과 같다.

sh
foretype status # is this tab boosted?
sudo foretype uninstall # put your old shell back

Foretype은 화면을 vt100 라이브러리로 추적하고, 각 키가 화면에 표시되기까지 걸리는 시간을 잰다. 앞에 있는 프로그램의 응답이 30ms보다 늦으면 입력한 키를 먼저 그린 뒤 실제 응답과 대조한다. 예측은 해당 줄에서 프로그램이 이미 응답한 뒤에만 시작하므로 비밀번호는 화면에 드러나지 않는다. 표시 전에 터미널에 커서 위치를 묻는 ESC [6n 요청을 보내며, 출력을 전달하기 전에 커서를 복원해 프로그램의 바이트가 그대로 도착하게 한다.

예측한 글자가 실제 응답과 다르면 화면에서 지운다. 실제 응답이 오지 않을 때는 왕복 시간 약 세 번을 기다린 뒤 예측을 거둔다. 대기 시간은 최소 750ms, 최대 5초다. Enter, 편집 키 입력, 붙여넣기, 터미널 크기 변경 중에는 예측을 멈춘다. 대기 시간 자체를 없애는 것이 아니라 화면에 보이는 입력 지연을 줄이는 방식이다.

설치 전에 무엇을 확인해야 하나?

-c 명령, 스크립트, 파이프에서는 실제 셸을 직접 실행하며, 상호작용하는 터미널만 감싼다. 라이선스는 Apache-2.0이다. 제작자는 측정 방법으로 scripts/latency.py를 제시했지만, 원문은 측정 결과의 반복 횟수나 통계적 변동, 지원하는 운영체제 범위를 밝히지 않는다.