기존 CLI 배포의 문제점
-
API 복잡성: 서버의 비즈니스 로직과 상호작용하기 위한 복잡한 API 서버 구축이 필수적입니다.
-
클라이언트 업데이트: 새로운 기능 배포 시 클라이언트 소프트웨어 업데이트가 필요하며, 이는 자동 업데이트 인프라 구축이라는 추가적인 부담을 발생시킵니다. 웹 브라우저와 달리 CLI는 자동 업데이트가 자동으로 이루어지지 않아 사용자 경험에 제약이 따릅니다.
-
인증 오버헤드: 각 회사가 Stripe나 Google, Apple과 같은 복잡한 SAML/SSO/OAuth 인증 플로우를 CLI에 통합하기 위해 사실상 자체적인 ‘웹 브라우저’를 구축하는 비효율성이 존재합니다.
Terminal Wire의 접근 방식
Terminal Wire는 이러한 문제를 해결하기 위해 다음과 같은 혁신적인 접근 방식을 취합니다.
-
API 제거 및 표준 I/O 스트리밍: SSH가 표준 I/O를 효율적으로 스트리밍하는 방식에서 영감을 받아, 불필요한 API 계층을 제거하고 웹소켓을 통해 암호화된 표준 I/O를 클라이언트와 서버 간에 직접 스트리밍합니다.
-
웹 기반 인증 플로우: SSH의 공개 키 방식 대신, 현대 웹 애플리케이션의 인증 방식(브라우저 기반 SSO/OAuth 후 토큰 발급)을 CLI에 적용하여,
Stripe login과 같은 익숙한 사용자 경험을 제공합니다. -
클라이언트 업데이트 불필요: 가장 큰 장점 중 하나로, CLI 로직은 Rails 서버에 배포되며 클라이언트(Terminal Wire 씬 클라이언트)는 웹 브라우저처럼 서버로부터 최신 로직을 스트리밍 받습니다. 이는 웹 페이지가 변경될 때 브라우저 업데이트가 필요 없는 것과 동일한 개념입니다.
실제 적용 사례
-
E-ink 디스플레이 제조사 ‘Terminal’: 이 회사는 하드웨어 제품을 위한 개발자 CLI를 5일 만에 Terminal Wire를 사용하여 구축했습니다. API 개발의 복잡성 없이 신속하게 CLI를 배포하고, MFA(다단계 인증)와 같은 기능 추가 시에도 클라이언트 업데이트 없이 서버에서만 변경 사항을 처리할 수 있음을 입증했습니다.
-
AI 통합 (Plane 사례): 최근 Anthropic의 연구 결과에 따르면, JSON으로 어노테이션된 명령줄 호출은 LLM(대규모 언어 모델) 토큰을 과도하게 소모합니다. Plane이라는 회사는 Terminal Wire를 사용하여 Claude와 통합한 결과, JSON 기반 API(MCP)보다 토큰 소모량이 적고 LLM 결과의 품질이 더 높다는 점을 발견했습니다. 이는 Terminal Wire가 AI와의 효율적인 연동을 위한 잠재력을 가지고 있음을 시사합니다.
기술적 구현 (Rails 중심)
Terminal Wire는 Ruby on Rails 애플리케이션에 Gem 형태로 설치됩니다. 서버 측에서는 app/terminal 디렉토리에 CLI 로직을 배포하며, 이는 ApplicationController와 유사한 ApplicationTerminal을 통해 인증 및 세션 관리를 처리합니다. 인증 과정에서 세션 쿠키는 암호화된 형태로 사용자의 워크스테이션 파일에 저장됩니다. 클라이언트 측에서는 terminal_exec_runtime을 통해 서버의 URL로 명령어를 전송하고, 서버는 웹소켓을 통해 결과를 스트리밍합니다. 이는 클라이언트가 단지 서버의 CLI 로직을 실행하는 씬 클라이언트 역할을 수행함을 의미합니다.