문제가 되는 두 가지 요소
스트리밍 데이터가 버퍼링되는 현상
SSE를 통해 전송되는 LLM 응답은 토큰이 생성되는 대로 순차적으로 전달되어야 합니다. 하지만 일부 리버스 프록시는 일반적인 웹 트래픽 최적화를 위해 응답 내용을 기본적으로 버퍼링합니다. 이는 SSE 환경에서는 부적절한 동작입니다. 그 결과 클라이언트는 응답을 기다리다가 결국 전체 내용이 한꺼번에 전달되거나 타임아웃이 발생하게 됩니다.버퍼링된 경우: 클라이언트는 기다리다가 전체 응답이 한꺼번에 도착합니다. 스트리밍된 경우: 토큰들이 생성되는 대로 순차적으로 전달됩니다.
요청 처리 시간이 타임아웃 기준을 초과하는 현상
사양이 낮은 하드웨어에서 대형 모델을 실행할 경우, 일반적인 웹 요청 시간 제한을 훨씬 초과하여 생성이 완료될 수 있습니다. 고정된 읽기/쓰기 타임아웃을 갖는 프록시나 터널은 모델이 작업을 마치기 전에 연결을 끊어버리며, 그 결과 클라이언트는 완료된 결과 대신 게이트웨이 오류를 접하게 됩니다. 실제로는 모델이 여전히 작동 중이었음에도 불구하고 말입니다.비교 분석
위에 언급된 제한 사항들은 각 벤더가 일반적인 사용 사례를 위해 명시한 정상적인 동작일 뿐 문제가 아닙니다. Cloudflare Tunnel, ngrok, Tailscale 모두 각각의 목적에 맞게 잘 작동합니다. 다만 스트리밍 LLM API에서 장시간 실행되는 작업을 처리할 때만 어려움이 발생합니다
Tokios의 역할
Tokios는 일반적으로 Tailscale이나 Cloudflare Tunnel을 대체하는 것이 아닙니다. 가정용 서버에 SSH 접속 시에는 Tailscale을, 트래픽이 적은 웹 앱용으로는 Cloudflare Tunnel을 계속 사용하시면 됩니다. 이들은 각각의 목적에 맞게 설계된 도구입니다. Tokios는 특히 코딩 에이전트나 API 클라이언트가 사용자 소유 하드웨어에서 실행되는 스트리밍 LLM 엔드포인트에 접속할 수 있도록 돕는 연결 계층입니다. 이 과정에서 SSE 버퍼링이나 프록시 타임아웃 문제도 발생하지 않습니다 Thetokios-connector dials out over a single outbound WebSocket, the same direction-flipping idea behind a tunnel — see How it works for the full request flow. From there, every request authenticates with an sk-tok-… API key scoped to specific deployments, rather than a raw port or hostname being reachable at all.
다음 단계
빠른 시작 가이드
커넥터를 연결하고 모델을 등록한 뒤 첫 번째 스트리밍 요청을 보내보세요.
Tokios가 요청을 라우팅하는 방식
아웃바운드 전용 아키텍처와 요청 흐름에 대해 상세히 알아보세요.
Cloudflare의 SSE 버퍼링 동작 방식 및 비엔터프라이즈 플랜에서 발생하는 약 100~120초 수준의 프록시 타임아웃 현상에 대한 자세한 설명은 Tokios와 Cloudflare Tunnel 비교 문서를 참고하시기 바랍니다. 여기서는 스트리밍 추론에 적합한 환경 조건과 발생 가능한 오류 유형도 다루고 있습니다.