taco — AI 코딩 사용량·비용 추적문서문제 해결버그 제보문의하기taco@inflearn.com
taco docs
설치대시보드GitHub
비용 보는 분들께
비용 확인하기 (설치 없이)
AI 도구 쓰는 분들께
개요빠른 시작윈도우 설치 (터미널 없이)설치설정
수집
지원 도구CLI 명령
대시보드
대시보드 둘러보기티켓별 비용
연동
MCP 서버Jira·GitHub 연동
기타
문제 해결

CLI 명령

taco <command> 형태로 사용합니다. taco --help, taco <command> --help로 언제든 확인할 수 있습니다.

공통 플래그 · 환경변수

대부분의 명령이 아래를 공유합니다(우선순위: 플래그 > env > config > 기본값).

대상플래그env
서버 URL--serverTACO_SERVER
로컬 DB 경로--local-dbTACO_LOCAL_DB

OAuth 서버는 taco login에만 --oauth-server 플래그가 있습니다(다른 명령에는 없음). 어느 명령에서든 바꾸려면 env TACO_OAUTH_SERVER를 쓰세요.

init

설정 + 로그인 + 도구 연동 안내(대화형).

taco init

auto_sync 여부를 묻고, 이어서 인프런 OAuth 로그인을 진행합니다. org/디렉터리 제한은 묻지 않으며(기본 제한 없음), 필요하면 --allowed-orgs·--allowed-dirs 플래그로 지정합니다. → 설정

대부분은 taco init이 필요 없습니다 — 설치 스크립트가 플러그인 연동(taco plugins)과 로컬 수집을 자동으로 하고, taco login이 로그인+첫 전송을 합니다. init은 수집 범위·auto_sync를 세밀하게 바꿀 때만.

plugins

로컬에 설치된 AI 코딩 도구를 감지해 taco 플러그인을 설치합니다. taco claude·taco codex를 대체하는 통합 명령입니다.

taco plugins
  • 기본은 전체 설치 — 감지된 도구(Claude Code·Codex 등) 전부에 플러그인을 설치합니다.
  • 대화형 터미널에서는 목록을 보여주고, 빼고 싶은 도구를 Space로 해제할 수 있습니다. 이미 설치돼 있으면 재설치 없이 최신 여부만 확인합니다(--force로 강제 재설치).
  • Cursor·Gemini CLI·Antigravity·Claude Desktop은 플러그인이 없어 설치 대상이 아닙니다. Claude Code·Codex 플러그인 중 하나라도 깔려 있으면 그게 돌 때 사이드카로 함께 스캔되며, 아무 플러그인도 없다면 taco collect를 직접(또는 cron으로) 실행해야 수집됩니다.
  • 설치 스크립트(curl … | sh)가 설치 직후 이 명령을 자동 실행합니다.
플래그설명
--plugin-pathgit 마켓플레이스 대신 로컬 체크아웃에서 설치(사설 저장소 인증 우회)
--all묻지 않고 감지된 도구 전부 설치(비대화형)
--force이미 설치돼 있어도 전체 설치 스텝을 다시 실행(복구용)

login

인프런 OAuth 로그인(브라우저 1회) 후, 그동안 로컬에 쌓인 사용량을 서버로 첫 전송합니다. 설치는 수집까지만 하고, 전송은 로그인부터 시작합니다.

taco login

collect

로컬 기록을 한 번 스캔해 이벤트를 적재합니다(수동/디버그용, 평소엔 hook이 자동).

taco collect                 # 증분 수집(auto_sync 기본 ON이면 전송까지)
taco collect --no-sync       # 로컬 버퍼에만 적재(전송 안 함) — 설치 스크립트가 로그인 전에 사용
taco collect --sync          # 수집 + 서버 전송(강제)
taco collect --full --sync   # watermark 리셋 후 전체 재수집 + 전송
taco collect --provider claude_code --provider codex
플래그설명
--fullwatermark 리셋 후 모든 파일 재수집
--sync수집 후 서버 전송(auto_sync와 별개로 강제)
--no-sync로컬에만 적재, 절대 전송 안 함(로그인 전 설치 단계용)
--provider특정 provider만 스캔(반복 지정). 값: claude_code | claude_desktop | codex | cursor | gemini | antigravity. 오타는 에러로 막고 유효값을 알려줍니다(claude는 무효 — claude_code)

--provider로 특정 도구만 스캔하면, hook이 없는 도구(claude_desktop·cursor·gemini·antigravity)를 사이드카로 함께 훑습니다(5분 throttle · 5초 예산 · TACO_NO_SIDESCAN으로 끔). --provider 없이 실행하면 원래 전부 스캔합니다. → 지원 도구

allowed_dirs가 설정돼 있으면 cwd를 안 남기는 도구(Cursor·Gemini CLI·Antigravity)는 전량 제외되며, collect가 그 건수를 따로 표시합니다.

sync

로컬 버퍼에 쌓인 미전송 이벤트를 서버로 보냅니다.

taco sync
taco sync --dry-run   # 전송하지 않고 "무엇이 어디로 나가는지"만 확인
플래그설명
--dry-run전송하지 않고 건수·대상 URL·세션 이름 포함 여부·도구별 구성과 실제 요청 본문(첫 1건) 을 출력

--dry-run은 실제 전송과 같은 조립 경로를 씁니다. 출력에는 필드별로 값이 채워진 건수(session_name 287/500 · cwd 357/500 …)와 도구별 샘플 본문이 함께 나오므로, 어떤 필드가 실제로 나가는지 배치 전체 기준으로 확인할 수 있습니다.

샘플 하나만 보고 판단하지 마세요 — 비어 있는 필드는 JSON 에서 아예 생략되므로(omitempty), Cursor 이벤트 샘플에는 cwd·git_branch 가 안 보이지만 Claude Code 이벤트에서는 나갑니다. 그래서 필드별 건수를 함께 보여줍니다.

hostname 은 배치 단위로 함께 전송되지만 서버에 저장되지 않습니다.

prune

전송이 끝난 오래된 로컬 이벤트를 지우고 디스크를 회수합니다.

taco prune --older-than 90d --dry-run   # 규모만 확인
taco prune --older-than 90d             # 실행(확인 프롬프트)
taco prune --older-than 6m -y           # 확인 없이
플래그설명
--older-than이 기간보다 오래된 전송 끝난 이벤트가 대상 (90d, 6m, 4w …)
--filtered미전송 이벤트 중 현재 필터(allowed_*/denied_*)가 거부하는 것만
--unsynced미전송 전체. 영구 삭제 — 서버에도 남지 않습니다
--dry-run지우지 않고 규모만 출력
-y, --yes확인 프롬프트 없이 진행 (취소 시 종료 코드 1)

필터를 나중에 설정했다면

필터는 수집 시점에만 적용됩니다. 설치 직후 과거 기록이 전량 수집되고 그 뒤에 필터를 켜면, 이미 큐에 쌓인 이벤트는 필터와 무관하게 전송됩니다. taco config set 이 그 건수를 경고하며, 큐에서 지우려면:

taco prune --filtered --dry-run   # 몇 건이 걸리는지 확인
taco prune --filtered             # 그 이벤트만 삭제

지운 기간은 어떻게 되나

prune 은 지운 경계를 기록합니다. 그래서 이후 taco stats 헤더가 (2026-02-28 이전 144,000건은 taco prune 으로 정리됨) 을 표시하고, taco collect --full 이 그 구간을 되살리지 않습니다 — 되살리면 대기 큐가 부풀고 prune 을 다시 할 수 없게 됩니다. 정말 복구하려면:

taco collect --full --ignore-retention

import

다른 컴퓨터의 taco 로컬 DB 를 이 컴퓨터 버퍼에 합칩니다. 중복은 자동으로 걸러지고(내용 기반 해시), 같은 파일을 여러 번 실행해도 결과가 같습니다.

taco import ~/Downloads/local.db

머신을 교체할 때:

# 1) 옛 컴퓨터
taco sync                                    # 전송 가능한 건 서버로
cp ~/.local/share/taco/local.db /어딘가/      # 미전송분 포함 백업
# 2) 새 컴퓨터
taco import /어딘가/local.db

local.db 를 그냥 복사해 덮어쓰면 새 컴퓨터의 기존 데이터가 사라집니다 — import 를 쓰세요.

  • 미전송 이벤트는 지우지 않습니다 — 로컬에도 서버에도 없는 데이터가 되기 때문입니다. 오래된 것이 모두 미전송이면 먼저 taco sync를 하라고 안내합니다.
  • 서버 데이터는 그대로입니다. 대시보드와 taco stats --remote의 과거 사용량은 영향을 받지 않고, 이 컴퓨터의 taco stats·taco show에서만 지운 기간이 사라집니다.
  • 삭제 후 VACUUM으로 파일 크기까지 되돌립니다. 현재 버퍼 크기는 taco doctor가 보여줍니다.

hook

에디터 플러그인이 hook 이벤트(stdin JSON)마다 호출합니다. 직접 실행할 일은 거의 없습니다. 하나의 transcript를 파싱해 적재하고, auto_sync면 서버로 전송합니다.

stats

사용량 요약(비용·토큰·이벤트).

taco stats                       # 로컬 기준(전체 요약)
taco stats --remote              # 서버 기준(본인, 모든 컴퓨터 합산)
taco stats --by model            # 차원별 분해
taco stats --by branch --since 7d
taco stats --by model --per day  # 차원 × 기간 2축 시리즈
taco stats --by day --json       # 기계용 JSON
플래그설명
--by차원별 분해: tool | model | branch | repo | dir | day | hour | session
--per--by를 기간축과 교차한 2축 시리즈: day | week | month
--since기간 제한. 예: 24h, 7d, 4w, 3m, 1y
--json표 대신 JSON 출력(기계용)
--limit표에 보여줄 최대 행 수(기본 20, 0 = 전체). --json 에는 적용되지 않습니다 — 명시적으로 --limit 을 주면 그때만 적용
--sort표 정렬 기준: cost(기본) | tokens | events
--remote로컬 버퍼 대신 서버 기준 본인 KPI 조회

날짜·시간대는 로컬 자정/로컬 시각 기준입니다(CLI·로컬 대시보드 동일).

표가 잘리면 몇 개가 생략됐는지 표 아래에 표시됩니다. 기간축(--by day·--per)은 최신 구간을 남기고 오래된 쪽을 생략합니다. 기계용 출력(--json)은 기본적으로 자르지 않으므로 합계가 항상 전체와 일치합니다.

show · search

세션 조회/검색.

taco show <세션ID>       # 세션 대화 출력(전체 ID 또는 고유한 prefix 필수)
taco search <키워드>     # 로컬 대화에서 검색

taco show는 세션 ID가 필수입니다. 전체 ID 대신 prefix를 줘도 되고 길이 제한은 없습니다 — 하나로 좁혀지면 그 세션을 열고, 여러 개가 걸리면 후보를 나열해 줍니다. ID는 taco search의 결과나 로컬 대시보드(taco dashboard)에서 확인할 수 있습니다.

status

마지막으로 수집·전송된 시각과 현재 상태를 한눈에 보여줍니다. "잘 쌓이고 있나?"를 빠르게 확인할 때 좋습니다.

taco status
taco status --json   # 기계용 (헬스체크 스크립트)
  • 자동 수집 은 hook(Claude Code·Codex 플러그인)이 실제로 도는지로 판정합니다. Cursor·Claude Desktop 만 쓴다면 ⚠️ 안 됨 으로 표시되고 taco collect 를 주기적으로 실행하라고 안내합니다.
  • 자동 전송 은 auto_sync 설정입니다. 수집과 전송은 별개예요.

doctor

설정/로그인/로컬 DB/전송 큐 상태를 진단합니다. 문제가 있을 때 먼저 실행하세요.

taco doctor
taco doctor --exit-code   # 문제가 있으면 종료 코드 1 (CI·cron 헬스체크용)

마지막 줄에 총평(지금 상태 / 다음 할 일)이 한 줄로 나옵니다. 기본 종료 코드는 문제가 있어도 0이며, 스크립트에서 쓰려면 --exit-code 를 붙이세요.

config

설정을 확인하거나 키 하나씩 변경합니다. → 설정

taco config                                  # = config show
taco config show                             # 해석된 설정 전체 + 파일 경로
taco config show --json                      # 순수 JSON (실효 server 포함)
taco config get auto_sync                    # 키 하나의 값
taco config set collect_session_name false
taco config set allowed_orgs inflearn,inflab # 목록은 쉼표 구분
taco config set allowed_dirs ""              # 빈 값으로 제한 해제
taco config set denied_dirs ~/personal       # 이 경로는 수집 제외(allow보다 우선)

다룰 수 있는 키는 server·auto_sync·collect_session_name·allowed_orgs·allowed_dirs·denied_orgs·denied_dirs 7개입니다. bool은 true/false, 목록은 쉼표 구분이며, 모르는 키는 에러로 가능한 값을 알려줍니다. oauth_server·oauth_client_id는 이 명령으로 다룰 수 없고 config.json을 직접 편집해야 합니다.

update

설치 스크립트를 다시 실행해 taco를 최신 버전으로 갱신합니다(덮어쓰기 자동 승인, 이어서 collect·plugins까지 첫 설치와 동일하게 실행).

taco update

uninstall

설치가 남긴 흔적을 한 번에 정리합니다 — 플러그인 등록 해제(Claude Code·Codex), 설정·로컬 데이터 삭제(~/.config/taco·~/.local/share/taco), 셸 설정의 taco PATH 줄 제거, 바이너리 삭제. 무엇을 지울지 먼저 보여주고 확인을 받습니다.

taco uninstall               # 확인 프롬프트 후 진행
taco uninstall --keep-data   # 설정·로컬 데이터는 보존
taco uninstall --yes         # 확인 없이(비대화형)
플래그설명
--keep-data설정·로컬 데이터를 지우지 않고 남김
--yes확인 프롬프트 없이 진행

전송하지 않은 사용량이 남아 있으면 먼저 경고합니다 — 그대로 지우면 로컬에도 서버에도 없는 데이터가 되므로, taco sync(로그인 필요)로 올린 뒤 제거하세요.

statusline

오늘 사용량을 한 줄로. 쉘 프롬프트/상태줄에 넣기 좋습니다.

taco statusline
# 🌮 $1.23 · 45.0k tok · 12 ev (오늘)

"오늘"은 로컬 자정 기준이고, 토큰은 캐시를 제외한 in+out입니다. 금액 뒤에 + 가 붙으면 단가를 모르는 모델의 이벤트가 있어 비용이 과소 표시된 것입니다(taco stats 에서 건수 확인).

pricing

모델 단가 관리.

taco pricing sync            # LiteLLM 피드에서 단가 즉시 동기화
taco pricing path            # 단가 파일 경로 2줄 — synced(캐시) / override(사용자)
taco pricing show <model>    # 특정 모델 단가 확인(별칭 정규화 포함)

보통은 직접 실행할 필요가 없습니다 — stats·statusline·mcp는 캐시가 24시간, dashboard는 7일보다 오래되면 자동으로 LiteLLM 피드를 당겨옵니다(실패는 조용히 무시). 네트워크가 없어도 바이너리에 내장된 스냅샷으로 비용이 계산됩니다. 단가를 직접 덮어쓰려면 taco pricing path가 알려주는 override 파일(~/.config/taco/pricing.json)을 편집하세요.

dashboard

로컬 데이터로 오프라인 웹 대시보드를 띄웁니다(세션 대화 열람 포함).

taco dashboard                            # 로컬 데이터, 브라우저 자동 오픈
taco dashboard --addr 127.0.0.1:8080      # 포트 변경(기본 127.0.0.1:7777)
taco dashboard --no-open                   # 브라우저 자동 오픈 안 함
taco dashboard --remote                    # 서버(본인) 데이터로 열기
플래그설명
--addrlisten 주소(기본 127.0.0.1:7777). 포트 충돌 시 사용
--no-open브라우저를 자동으로 열지 않음
--remote로컬 서버 대신 팀 대시보드를 본인 필터로 엶

mcp

read-only MCP 서버(stdio)를 실행합니다. 보통 Claude Code 플러그인이 자동 등록하므로 직접 실행할 일은 드뭅니다. → MCP 서버

taco mcp
이 페이지
공통 플래그 · 환경변수initpluginslogincollectsyncpruneimporthookstatsshow · searchstatusdoctorconfigupdateuninstallstatuslinepricingdashboardmcp