본문으로 건너뛰기

트렌딩 - GitHub 인기 레포 & HuggingFace 모델

coder/ghostty-web

TypeScript0 / 0

Ghostty 네이티브 에뮬레이터를 WASM으로 제공해 xterm.js API로 교체 가능한 브라우저 VT100 터미널

TL;DR

Ghostty-Web은 Ghostty 네이티브 에뮬레이터를 WASM으로 브라우저에 올려 xterm.js API와 호환되는 대체 터미널 라이브러리를 제공한다. 약 400KB의 WASM 번들을 통해 런타임 의존성을 거의 없애고 복잡한 스크립트와 일부 특수 이스케이프 시퀀스를 더 정확하게 처리하도록 설계되어 있다. 사용법은 xterm.js와 유사해 import만 바꾸면 빠르게 전환할 수 있으며 데모로 로컬 셸과 실 동작을 확인할 수 있지만 데모가 실제 셸을 띄우므로 원격 노출에는 주의가 필요하다.

핵심 포인트

  • 이 레포지토리는 브라우저용 라이브러리(SDK)로 분류되며 xterm.js API와 호환되는 Ghostty 구현을 제공한다. WASM으로 컴파일된 Ghostty 파서를 사용해 브라우저에서 실제에 가까운 VT100 에뮬레이션을 수행하며, 기존 xterm.js 코드를 크게 바꾸지 않고 import만 변경하면 마이그레이션이 가능하다. 이 특성 때문에 웹 터미널을 사용하는 애플리케이션이나 프로젝트에서 xterm.js를 대체해 유니코드 처리와 특수 이스케이프 시퀀스 지원을 강화하려는 경우에 적합하다.
  • 기술적으로는 Ghostty의 네이티브 에뮬레이터 코드를 WASM으로 빌드해 브라우저에서 실행하도록 구성되어 있고 런타임 의존성을 거의 제거해 약 400KB 규모의 WASM 번들을 제공한다. 소스는 Ghostty 본체에 최소한의 패치를 적용해 추가 API를 노출하도록 처리하며 로컬 빌드에는 Zig와 Bun이 필요하다. 이렇게 네이티브급 로직을 재사용하면 복잡한 스크립트(예: Devanagari, Arabic)와 XTPUSHSGR/XTPOPSGR 같은 xterm.js가 놓치기 쉬운 이스케이프를 더 정확하게 처리할 수 있다는 장점이 생긴다.
  • 사용법은 xterm.js와 거의 동일한 API 패턴을 따르며 init을 호출한 뒤 Terminal을 생성하고 term.open, term.onData, term.write 같은 흐름으로 클라이언트↔서버 통신을 연결한다. 데모는 npx @ghostty-web/demo@next 로 로컬에서 실제 셸을 띄우는 서버를 실행해 동작을 확인할 수 있으며 라이브 데모도 공개되어 있다. 이 때문에 기존 xterm.js 기반 코드를 빠르게 전환해 더 견고한 에뮬레이션을 얻고자 하는 프론트엔드 개발자에게 실용적이다.
  • 운영·보안과 개발 측면에서 데모는 기본적으로 로컬 루프백에서 실제 셸을 띄우며 동일 출처 토큰으로 /ws를 보호하므로 원격 노출에 주의가 필요하다. HOST 환경변수로 바인드 주소를 변경할 수 있으나 0.0.0.0 같은 와일드카드 바인드는 추가 허용 호스트 설정 없이 사용하면 위험하다는 경고가 README에 명시되어 있다. 개발 빌드는 Ghostty 소스와 패치를 합쳐 WASM을 생성하는 파이프라인을 요구하므로, 소스 레벨 통합이나 맞춤 빌드가 필요한 팀에게는 빌드 환경(Zig·Bun) 준비와 패치 관리가 중요한 고려사항이 된다.

이미지 분석

브라우저 창에 띄운 터미널 데모 화면이며 상단에 'Ghostty-Web Feature Showcase Full VT100 Terminal Emulation in Browser'라는 박스형 헤더와 화면 내부의 커서가 표시되어 있다.
이 스크린샷은 VT100 스타일의 박스 문자를 정상적으로 렌더링하고 커서를 표시하는 런타임 UI를 보여주며 Ghostty-Web이 브라우저에서 터미널 레이아웃과 박스 드로잉 문자를 잘 처리한다는 증거로 사용될 수 있다. 다만 이미지에는 복잡한 유니코드 스크립트(예: 아라비아어나 데바나가리) 또는 XTPUSHSGR/XTPOPSGR 같은 특수 이스케이프 동작의 예시가 포함되어 있지 않아 그 부분의 처리 능력은 데모나 코드 레벨의 추가 검증이 필요하다. 전반적으로 UI 레이아웃과 기본 VT100 렌더링이 깔끔하게 구현되어 있음을 확인할 수 있다.

2.7k

Stars

154

Forks

+204

Trending

0

조회수

2.7k watchers54 open issuesMIT License

관련 토론

아직 관련 토론이 없습니다.

댓글

댓글을 작성하려면 로그인이 필요합니다.