콘텐츠로 이동

cctrace

Claude Code·Codex CLI 세션용 자체 호스팅 텔레메트리

cctrace는 코딩 에이전트 세션이 실제로 한 일(토큰 사용량, 비용, 도구 호출, 대화 내용)을 직접 운영하는 데이터베이스에 모으고 그 위에 대시보드를 제공한다. 에이전트의 OpenTelemetry 출력으로는 "얼마나"를, 세션 트랜스크립트로는 "무엇을 했나"를 알 수 있다. cctrace는 둘을 모두 수집해 세션 단위로 묶어 둔다.

cctrace 세션 수집 아키텍처 각 개발자 머신에서 Claude Code는 gRPC 4317 포트로, Codex CLI는 HTTP 4318 포트로 OTLP 텔레메트리를 cctraced에 전송한다. cctrace 동기화 데몬은 두 에이전트의 세션 JSONL 파일을 읽어 8080 포트의 HTTP /api/sync로 업로드한다. 서버 Docker Compose 경계에서 cctraced는 OTLP 데이터를 PGMQ를 거쳐 큐잉하고 텔레메트리와 세션 레코드를 TimescaleDB에 저장하며, 기본 호스트 바인드가 127.0.0.1인 8080 포트에서 내장된 Next.js 정적 대시보드를 제공한다. cctrace 세션 수집 아키텍처 두 수집 경로가 하나의 자체 호스팅 저장소로 연결 OTLP/gRPC · TCP 4317 OTLP/HTTP · TCP 4318 HTTP /api/sync OTLP 큐 세션 직접 저장 Claude Code OTLP · JSONL Codex CLI OTLP · JSONL 세션 JSONL Claude + Codex cctrace 동기화 데몬 cctraced OTLP 수신기 REST API · /api/sync 내장 웹 서버 4317 · 4318 · 8080 대시보드 Next.js 정적 export cctraced가 제공 기본 바인드 127.0.0.1:8080 TimescaleDB + PGMQ OTLP 큐 · 텔레메트리와 세션 테이블 개발자 머신 서버 · Docker Compose

cctrace 대시보드 Overview 페이지: 요약 카드 4개와 사용자별로 쌓은 분 단위 비용 추이 차트

위 대시보드는 데모 서버 위의 가상 5인 팀이며 실제 운영 데이터가 아니다. 페이지별 설명은 대시보드 페이지 참고.

데이터 수집 경로

한쪽만으로는 부족해서 두 경로가 하나의 저장소로 모인다.

경로 출처 전송 내용 지연
OTEL 에이전트의 OTLP exporter gRPC 4317 (Claude Code), HTTP 4318 (Codex) 토큰 수, 비용, 메트릭 실시간
Sync 디스크의 세션 JSONL 파일 HTTP /api/sync (포트 8080) 전체 대화, 도구 호출 주기적

개발자 머신에서는 cctrace init 하나로 두 경로 모두 설정. 에이전트의 OTLP exporter를 서버로 향하게 하고 동기화 데몬을 띄우는 훅을 등록한다.

구성 요소

구성 요소 실행 위치 역할
cctrace 각 개발자 머신 클라이언트 CLI와 동기화 데몬. 에이전트 세션 디렉터리를 감시해 레코드 업로드
cctraced 서버 호스트 서버. OTLP 수신, 동기화 업로드 수신, API·대시보드 제공
TimescaleDB + 대시보드 서버 호스트 압축·보존 정책이 걸린 저장소. Next.js 대시보드는 cctraced에 내장

서버와 데이터베이스는 deploy/docker-compose.yml의 컨테이너 두 개로 실행. 두 이미지 모두 이 저장소에서 빌드하며 레지스트리에 공개된 이미지는 없음.

알아 둘 점

  • 제3자로 텔레메트리 전송 없음. 지정한 서버 외에, 클라이언트는 요금제 한도를 읽으려고 로컬 Claude Code 로그인으로 Anthropic 사용량 API를 조회하고, 서버는 OpenAI 공개 가격 페이지를 내려받음. 개인정보 참조. 주간 AI 리포트는 관리자가 켜면 외부 AI 제공자로 데이터를 보낼 수 있으나, 변경이 진행 중이라 이 문서에서 다루지 않음
  • 호스팅 서비스·사전 빌드 바이너리 없음. 클라이언트와 서버 이미지를 소스에서 빌드
  • 이 저장소에서 빌드한 클라이언트는 자동 업데이트 없음. 빈 업데이트 공개 키로 링크되어 자동 업데이트를 거부하므로 업그레이드는 재빌드로 진행

대시보드는 대화 내용을 저장한다. 팀을 연결하기 전에 보존 기간과 마스킹 범위를 먼저 정할 것. 개인정보 참조.

상태

cctrace는 초기 단계. 서버 API와 데이터베이스 스키마가 릴리스마다 바뀔 수 있음. 둘 중 하나에 의존한다면 버전 고정 필요.

다음 단계