텔레메트리
브라우저 터미널이 무엇을 보내고 무엇은 보내지 않는지, 그리고 끄는 법.
st는 브라우저 터미널 페이지에서 익명 사용 정보를 보냅니다. 기본으로 켜져 있고 한 줄로 끕니다.
st --no-telemetry # 이번 실행만
SOPHONZ_TELEMETRY=off # 이 장치의 모든 실행자기 수집기로 보내려면 주소와 키를 바꿀 수 있습니다.
SOPHONZ_TELEMETRY_URL=https://otel.example.com
SOPHONZ_TELEMETRY_KEY=... # 빈 값이면 아무것도 보내지 않습니다로그인한 장치가 보고하는 것도 같이 꺼집니다. 계정이 있으면 컨트롤 플레인으로 가는 하트비트에 장치의 상태(메모리, st 자신의 프로세스, 멀티플렉서가 응답하는지, 쓰고 있는 터미널 수), 최근 30초의 CPU·메모리·스왑, 코딩 에이전트의 플랜 사용량(비율과 초기화 시각)도 실립니다. 같은 스위치로 이것도 꺼지고, /api/health는 비게 됩니다.
끄면 그 장치에 붙는 모든 브라우저가 같이 꺼집니다. 설정은 에이전트가 페이지에 내려주는 것이라, 링크를 받은 사람이 따로 무언가를 할 필요가 없습니다. 페이지는 수집기 주소와 키가 없으면 SDK를 아예 내려받지 않습니다.
보내는 것
| 페이지 | 로드, Web Vitals, 경로(쿼리와 # 뒤는 잘라냅니다) |
| 오류 | 자바스크립트 예외와 스택 |
| 요청 | 같은 출처 요청의 소요 시간 |
| 브라우저 | 이름·버전·플랫폼·언어·모바일 여부, 화면 크기 |
| 버전 | st 버전 |
| 세션 | 임의의 128비트 id (__sophonz_rum_sid 쿠키, SameSite=Strict) |
세션 id는 15분간 활동이 없으면 만료되고 최대 4시간을 넘기지 않습니다. 사람이나 장치에 붙는 값이 아니라 그 한 번의 방문에 붙는 값이며, 계정과 연결되지 않습니다.
보내지 않는 것
터미널 내용은 브라우저 밖으로 나가지 않습니다. 이건 설정으로 정해 둔 것이고 그 설정은 에이전트가 아니라 페이지 소스(sophonz-tunnel-go의 web/src/telemetry.ts)에 고정돼 있습니다:
- 세션 리플레이 없음, 화면 녹화 없음
- 콘솔 출력 없음
- 클릭·탭 등 상호작용 없음 (클릭은 눌린 요소의 텍스트와 함께 기록되는데 이 페이지에서 그 요소는 터미널입니다)
- 요청과 응답 본문 없음, 웹소켓 트래픽 없음 — 터미널이 오가는 통로가 바로 이 웹소켓입니다
- 페이지 제목 없음 (터미널 제목은 실행 중인 명령과 작업 디렉터리입니다)
- 모든 입력과 텍스트는 마스킹
- 다른 출처로 나가는 요청에는 추적 헤더를 붙이지 않습니다
주소에서 ?와 # 뒤는 잘라냅니다. 참가 토큰이 거기 실리기 때문입니다.
기본 설정
폰 브라우저에서만 나는 문제는 우리 쪽에서 재현되지 않습니다. iOS 18에서만 키바가 깨지는 일, 특정 안드로이드 웹뷰에서만 폰트가 안 붙는 일 같은 것은 누가 알려 주지 않으면 알 수 없습니다.
처음 실행할 때 이 사실을 한 번 알려 드리고 끄는 법을 함께 적습니다.